首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每信道量化流量

每信道量化流量
EN

Stack Overflow用户
提问于 2019-01-13 06:28:27
回答 1查看 2.6K关注 0票数 2

使用当前的Tensorflow 量化操作,如何在推理过程中模拟每通道的量化?此将每层量化定义为

我们可以为被称为每层量化的整个张量指定一个量化器(由标度和零点定义)。

每通道量化为

每个卷积核的每个信道量化都有不同的尺度和偏移量.

假设我们有这个子图

代码语言:javascript
复制
import tensorflow as tf

x = 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')

在当前的APIs中,我可能会这样做,在推理时模拟每层量化。

代码语言:javascript
复制
import tensorflow as tf

x = 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实际上是对量化层核卷积进行量化层输入.

根据我对每通道量化的理解,将出现koutput_minoutput_max.在我的示例中,k96 (内核数,类似于这个API接口 )。

在tensorflow中是否有任何现有的操作可以处理每个通道的量化,或者是否有一种使其与现有操作操作一起工作的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-19 07:24:24

目前还没有办法对tflite上的每通道量化推理进行模拟。正如我所看到的,tensorflow开发人员现在正在实现实验对称每信道量化。但是没有办法去测试它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54166589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档