为了账号安全,请及时绑定邮箱和手机立即绑定

Tensorflow 每通道量化

Tensorflow 每通道量化

暮色呼如 2021-10-10 14:28:04
使用当前的 Tensorflow量化操作,我将如何在推理过程中模拟每通道量化?这个纸定义每层量化为我们可以为整个张量指定单个量化器(由尺度和零点定义),称为每层量化和每通道量化为每通道量化对于每个卷积核都有不同的尺度和偏移。假设我们有这个子图import tensorflow as tfx = np.random.uniform(size=500*80*64*1)      .astype('float32')      .reshape(500, 80, 64, 1)W1 = tf.get_variable('W1', 9, 5, 1, 96],                    initializer=tf.truncated_normal_initializer(stddev=0.1))h1 = tf.nn.conv2d(x, w, strides=[1, 1, 1, 1], padding='VALID')在当前的 API 下,我可能会做这样的事情来在推理时模拟每层量化import tensorflow as tfx = np.random.uniform(size=500*80*64*1)      .astype('float32')      .reshape(500, 80, 64, 1)min_x = tf.reduce_min(x)max_x = tf.reduce_max(x)W1 = tf.get_variable('W1', 9, 5, 1, 96],                    initializer=tf.truncated_normal_initializer(stddev=0.1))min_W1 = tf.reduce_min(W1)max_W1 = tf.reduce_max(W1)qX = tf.quantize(A, min_X, max_X, tf.quint8, mode='MIN_FIRST')qW = tf.quantize(W, min_W, max_W, tf.quint8, mode='MIN_FIRST')# This is how one would simulate per layer quantization for convolution.qAW = tf.nn.quantized_conv2d(qX[0], qW[0], qX[1], qX[2], qW[1], qW[2], strides = [1, 1, 1, 1], padding='VALID')我的问题是如何模拟每个通道的量化?据我了解,tf.quantization.quantize实际上是在进行每层量化而不是每通道量化。此外,tf.nn.quantized_conv2d实际上是在对量化层内核卷积进行量化层输入。根据我对每通道量化的理解,会有k,output_min和output_max。哪里k是96在我的例子(内核的数目,类似于此API)。tensorflow 中是否有任何现有的 Ops 可以处理每通道量化,或者有没有办法让它与现有的 ops 一起工作?
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

目前还没有办法在 tflite 上模拟每通道量化推理。正如我所见,如今的 tensorflow 开发人员正在实施实验性的每通道对称量化。但是没有办法测试


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号