QKeras/Python中的round-through函数是什么?

QKeras/Python中的round-through函数是什么?,python,tensorflow,rounding,quantization,Python,Tensorflow,Rounding,Quantization,我正在学习“量化位”类的QKeras实现。在调用函数中,我遇到了一个“\u round\u through”函数 下面是调用函数的方式: if unsigned_bits > 0: p = x * m / m_i xq = m_i * tf.keras.backend.clip( _round_through(p, self.use_stochastic_rounding, precision=1.0), self.keep_

我正在学习“量化位”类的QKeras实现。在调用函数中,我遇到了一个“\u round\u through”函数

下面是调用函数的方式:

if unsigned_bits > 0:
      p = x * m / m_i
      xq = m_i * tf.keras.backend.clip(
          _round_through(p, self.use_stochastic_rounding, precision=1.0),
          self.keep_negative  * (-m + self.symmetric), m - 1) / m

我尝试用Python运行代码,但它显然不是内置函数。 我尝试搜索函数,但只得到了Python中“round()”函数的结果

所以我的问题是:这个函数做什么?它是什么模块的一部分

链接到代码:


任何帮助都将不胜感激

如果单击GitHub中的函数,它将告诉您该函数的来源。在这种情况下

def_round_至(x,使用随机_舍入=假,精度=0.5):
“”“舍入x,但使用直通式估计器。
我们使用[谢尔盖·伊夫]的伎俩(http://stackoverflow.com/a/36480182).
直通估计是四舍五入的有偏估计
Hinton的Coursera第9c课定义的操作,其中dL/dx是生成的
等于梯度计算期间y=f(x)的dL/dy,其中f(x)为
不可导函数。在这种情况下,我们假设df/dx=1 In:
dL-dL-df-dL
-- = -- -- = --
dx-df-dx-dy
(https://www.youtube.com/watch?v=LN0xtUuJsEI&list=PLoRl3Ht4JOcdU872GhiYWf6jwrk_SNhz9&index=41)
论据:
x:使用直通梯度执行圆运算的张量。
使用随机舍入:如果为真,则执行随机舍入。
精度:默认情况下,我们将使用0.5作为精度,但这可以覆盖
由用户提供。
返回:
圆形张量。
"""
如果使用随机四舍五入:
输出=tf_utils.smart_cond(
K.学习阶段(),
lambda:x+tf.stop_梯度(-x+随机_轮(x,精度)),
lambda:x+tf.stop_梯度(-x+tf.round(x)))
其他:
输出=x+tf.停止梯度(-x+tf.圆形(x))
返回输出

如果单击GitHub中的函数,它将告诉您该函数的来源。在本例中

def_round_至(x,使用随机_舍入=假,精度=0.5):
“”“舍入x,但使用直通式估计器。
我们使用[谢尔盖·伊夫]的伎俩(http://stackoverflow.com/a/36480182).
直通估计是四舍五入的有偏估计
Hinton的Coursera第9c课定义的操作,其中dL/dx是生成的
等于梯度计算期间y=f(x)的dL/dy,其中f(x)为
一个不可导函数。在这种情况下,我们假设df/dx=1 In:
dL-dL-df-dL
-- = -- -- = --
dx-df-dx-dy
(https://www.youtube.com/watch?v=LN0xtUuJsEI&list=PLoRl3Ht4JOcdU872GhiYWf6jwrk_SNhz9&index=41)
论据:
x:使用直通梯度执行圆运算的张量。
使用随机舍入:如果为真,则执行随机舍入。
精度:默认情况下,我们将使用0.5作为精度,但这可以覆盖
由用户提供。
返回:
圆形张量。
"""
如果使用随机四舍五入:
输出=tf_utils.smart_cond(
K.学习阶段(),
lambda:x+tf.stop_梯度(-x+随机_轮(x,精度)),
lambda:x+tf.stop_梯度(-x+tf.round(x)))
其他:
输出=x+tf.停止梯度(-x+tf.圆形(x))
返回输出

请避免使用截图,而是直接将代码粘贴到问题中请避免使用截图,而是直接将代码粘贴到问题中