范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

PTQ(PostTrainingQuantization)源码阅读二

  PTQ(Post Training Quantization)源码阅读二
  上文提到了  PTQRegistry  这个类,主要功能是作为dict来存储 nn.Layer -> LayerInfo  的映射。我们看下这个类的实现。LayerInfoclass LayerInfo(object):     """     Store the argnames of the inputs and outputs.     """      def __init__(self, layer, input_names: List[TEXT], weight_names: List[TEXT], output_names: List[TEXT]):         super().__init__()         self.layer = layer         self.input_names = input_names         self.weight_names = weight_names         self.output_names = output_names
  主要存储  nn.Layer ,及其对应的输入、权重和输出名。
  全局参数  PTQ_LAYERS_INFO , QUANT_LAYERS_INFO  和 SIMULATED_LAYERS  汇总目前支持量化的层的 LayerInfo  如下: PTQ_LAYERS_INFO = [     LayerInfo(paddle.nn.Conv2D, ["Input"], ["Filter"], ["Output"]),     LayerInfo(paddle.nn.Linear, ["X"], ["Y"], ["Out"]),     LayerInfo(paddle.nn.BatchNorm2D, ["X"], [], ["Y"]),     LayerInfo(paddle.nn.AdaptiveMaxPool2D, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.AdaptiveAvgPool2D, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.AvgPool2D, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.MaxPool2D, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.ReLU, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.ReLU6, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.Hardswish, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.Swish, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.Sigmoid, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.Softmax, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.Tanh, ["X"], [], ["Out"]),     LayerInfo(paddle.nn.quant.add, ["X", "Y"], [], ["Out"]), ]  QUANT_LAYERS_INFO = [     LayerInfo(         paddle.nn.quant.quant_layers.QuantizedConv2D,         ["Input"],         ["Filter"],         ["Output"],     ),     LayerInfo(         paddle.nn.quant.quant_layers.QuantizedLinear, ["X"], ["Y"], ["Out"]     ), ]  SIMULATED_LAYERS = [paddle.nn.Conv2D, paddle.nn.Linear]
  PTQ_LAYERS_INFO 中存储目前支持量化的层和对应的输入、输出、权重名字。
  QUANT_LAYERS_INFO  是量化新实现支持的 LayerInfo。这种实现方式等价 torch 基于 nn.QuantModule 的实现。
  SIMULATED_LAYERS  存储的针对 input/weight 量化的层。模拟量化层会采集层的 input 的分布。weight 分布不需要采集。
  模拟量化这里应该指的是 Fake Quantization.
  PTQRegistry
  PTQRegistry  用于对上面三个全局变量查询访问使用.class PTQRegistry(object):     """     Register the supported layers for PTQ and provide layers info.     """      supported_layers_map = {}     registered_layers_map = {}     is_inited = False      def __init__(self):         super().__init__()      @classmethod     def _init(cls):         if not cls.is_inited:             for layer_info in PTQ_LAYERS_INFO:                 cls.supported_layers_map[layer_info.layer] = layer_info              all_layers_info = PTQ_LAYERS_INFO + QUANT_LAYERS_INFO             for layer_info in all_layers_info:                 cls.registered_layers_map[layer_info.layer] = layer_info         cls.is_inited = True
  cls.supported_layers_map  存储 PTQ_LAYERS_INFO  的内容。
  cls.registered_layers_map  存储 PTQ_LAYERS_INFO + QUANT_LAYERS_INFO  的内容。
  注意,这里的 key 是 nn.Layer 子类。
  四个查询接口如下,不做过多介绍了。:  @classmethod     def is_supported_layer(cls, layer):         """         Analyze whether the layer supports quantization.         Args:             layer(Layer): The input layer can be a python class or an instance.         Returns:             flag(bool): Whther the layer is supported.         """         cls._init()         return layer in cls.supported_layers_map or isinstance(             layer, tuple(cls.supported_layers_map.keys())         )      @classmethod     def is_registered_layer(cls, layer):         """         Analyze whether the layer is register layer_info.         Args:             layer(Layer): The input layer can be a python class or an instance.         Returns:             flag(bool): Wether the layer is register layer_info.         """         cls._init()         return layer in cls.registered_layers_map or isinstance(             layer, tuple(cls.registered_layers_map.keys())         )      @classmethod     def is_simulated_quant_layer(cls, layer):         """         Analyze whether the layer is simulated quant layer.         Args:             layer(Layer): The input layer can be a python class or an instance.         Returns:             flag(bool): Whther the layer is supported.         """         return layer in SIMULATED_LAYERS or isinstance(             layer, tuple(SIMULATED_LAYERS)         )      @classmethod     def layer_info(cls, layer):         """         Get the infomation for the layer.         Args:             layer(Layer): The input layer can be a python class or an instance.         Returns:             layer_info(LayerInfo): The layer info of the input layer.         """         assert cls.is_registered_layer(             layer         ), "The input layer is not register."          for layer_key, layer_info in cls.registered_layers_map.items():             if layer == layer_key or isinstance(layer, layer_key):                 return layer_info 参考文献利用 NVIDIA TensorRT 量化感知训练实现 INT8 推理的 FP32 精度

老实人陈建斌和吴越同居5年不结婚,转身娶了蒋勤勤后,怎样了陈建斌说当时我女朋友建议我拍这部戏,她觉得剧本不错,后来我听了她的话。当时他口中的女朋友是吴越。那时的陈建斌很爱吴越,还规划着在2005年步入婚姻殿堂。然而这一切被电视剧乔家大院改油灯下的妈妈1950年前后,正是我童龄无忌的大好年华。在那些岁月里,油灯下的妈妈,牢牢定格在我的生命中,成了我一生中永不磨灭的记忆我家有几间土木结构的泥瓦房,有几亩地,谈不上富有,但也不十分穷王楠女儿受伤就医!双腿多处疼痛表情痛苦,妈妈满不在乎笑出声饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!11月18日,王楠的丈夫郭斌晒出了女儿练球受伤的视频,6岁的笑笑双腿多处疼痛,但依旧坚持练球,画面曝光后引发热议。露面的读书氛围营造得太好了,卫生间里装书柜,妈妈主持召开家庭读书会现如今父母和孩子都说没时间读书,父母忙于工作,回来还要应付一日三餐,还有柴米油盐酱醋茶,有空儿还得刷手机,哪有时间读书?孩子更忙,忙着上学,忙着考试,忙着做作业,哪有时间读课外书?女儿夹腿被妈妈批评,为什么女生不能夹腿?家里有女儿的要知道许多父母在生下孩子后,由于没有带娃的经验,会不知所措以至乱了手脚。其实大家都是第一次成为父母,宝宝们在长大的过程中,总会出现各种问题。但如果我们作为家长没有使用正确的教育方式来引导德国童装设计师中国妈妈们提供了产品灵感作为一名服装设计师,来自德国的芭芭拉非常喜欢中国的传统面料纹样和剪裁工艺。从德国到中国,五年来她一直在探寻新的设计风格,她的作品将家乡的设计风格与中国元素更好地结合在一起,赢得了很婆婆抹着眼泪说,你妈妈怎么这样能忍呢?2020年11月中旬的一天,我下班回家看到妈妈坐在沙发上,摆弄着手机里的微信,似乎是和谁刚聊完天。妈,我回来了,她没有回应我。我脱下外套换了鞋,走过去看到妈妈眼圈红红的,好像刚哭过向往美好的平安之愿海晏河清万象平护国佑民妈祖神作者唐裕民普天均雨露,大海静波涛。衢州市区天皇巷内,有一座白石粉墙乌瓦的庙宇,二百年来默默地为城内的百姓祈福,祈求风调雨顺,国泰民安。这便是浙江省文物保护单位天后宫,供奉着海神妈祖收藏一些喜欢的句子最近很喜欢的一段话照顾好自己的健康和情绪,这场人生,你就赢了一大半了,其余的其余,人生自有安排。再贵的东西365都会变得很便宜,再小的努力365都会变得很伟大。走过的路,见过的人各心灵鸡汤有用吗?如今一说到心灵鸡汤,感觉大家都很反感。为什么呢?大家说因为如今的时代已经不是过去的时代了。人们都清醒了,已经意识到不是我们听听心灵鸡汤就能够过得好,也不是我们读读心灵鸡汤就能获得成散文让高雅的兴趣爱好,点亮我们平凡的生活我们平凡的生活中,有一地鸡毛的生活琐事,有工作的困扰等,如果没有高雅的兴趣爱好相伴,那么此生,都有可能活得黯淡无光。唐僧去西天取经的路上,心中有着对佛经的虔诚追求,才能克服九九八十
评分泰山逆转裁判迷途知返,克雷桑天道酬勤,段刘愚冰火两重天山东泰山21逆转梅州客家,距离榜首武汉三镇仅有1分差距,可喜可贺。但纵观本场泰山队的整体状态,还是有让人心忧的地方,具体通过球员评分来看王大雷7。6分,梅州客家全场13次射门,8次中超最新积分榜泰山不负众望国安力克海港排名不变广州无奈取一分北京时间10月5日,中超联赛第21轮赛事,再赛5场比赛全部战罢,最新战况积分榜山东泰山客场21逆转绝杀梅州客家,双方攻势不断,科索维奇世界波首开纪录,克雷桑闪电扳平,郑铮任意球破门广东不起眼的县城,GDP很低却有着中国唯一的县级中超球队我的小家和大家Hello,大家好,这里是xiang浩看世界。足球作为世界第一运动,在我国却始终没有得到进步和有效的推广,在一系列的赛事之中,最近的国足都是作为一个参赛者冠军见证者的长春南溪湿地公园,上新啦!国庆假期小伙伴们的行程是不是要排满啦这里还有一个好地方超好看哦!长春南溪湿地公园水幕电影你看了吗?形光声电完美组合充满灵性的水体随音乐旋律波光流转,千变万化灵动的音符盛放的莲花飞驰3比1!中国队新武磊爆发单场梅开二度,帮助球队完胜欧洲劲旅日前,在欧洲拉练的U21国足跟克罗地亚乙级联赛领头羊进行了一场对抗赛。这场比赛U21国足踢得非常好,靠着刘祝润的梅开二度和易县龙的锦上添花,以3比1战胜对手。毫无疑问,梅开二度的刘森林狼胜热火!三节轰24分,状元比两个2亿球星更适合做球队老大近日NBA官方对于联盟总经理们进行了调查报告,其中在哪支球队进行运作最佳方面,森林狼获得17的得票率排在联盟第二仅次于骑士,而森林狼之所以能够进入这份榜单是因为今夏他们通过10换1二十大代表风采丨人生最精彩的是坚持梦想的过程记二十大代表中国场地自行车奥运冠军钟天使开栏的话在以习近平同志为核心的党中央坚强领导下,按照党章规定和党中央统一部署,全国38个选举单位选举产生了2296名党的二十大代表。党的二十大代表是共产党员中的优秀分子,具有先进性中国工业机器人冠军年销量突破1万台,挑战发那科安川去年中国工业机器人市场安装量同比增长44至24。33万台,占全球工业机器人总安装量的一半,几乎是整个美洲和欧洲工厂的两倍。其中,电气和电子行业汽车行业的工业机器人安装量分别为8。1任嘉伦费加罗向光而行新封面预告,花式风衣秀剧照,气场全开向光而行的任嘉伦,请君花式风衣秀剧照,气场全开!任嘉伦费加罗男士封面预告,恭喜任嘉伦解锁新杂志,有太多惊喜,假期请君开启5天连播模式,陆炎真的好让人上火,炎将军的威武霸气已经溢出屏大胜利物浦力克米兰暴揍贾府金玟哉在这几年经历了什么?从2019年到2021年5月,金玟哉一直效力于中超俱乐部北京国安,国安也视其为球队的未来,以及可以缓解球队财政压力的宝藏,但随着5月份金玟哉回到韩国,中超俱乐部存活压力越来越大,北欧冠英超之夜!曼城切尔西大胜,梅西世界波,大巴黎11北京时间10月6日,欧冠第三轮再战8场,这绝对是一个英超之夜,期间切尔西和曼城2强全部大胜对手,他们联手轰进8球,而且一球未丢,表现异常强悍。此外大巴黎连胜的节奏被打断,本轮没能拿