首页 > 解决方案 > 有没有一种方法可以在训练期间找到 Tensorflow/Keras 层输入的最小值、最大值?

问题描述

是否有一个选项可以找到 Keras/Tensorflow 层的输入的最小、最大范围,其中最小、最大范围计算的输出是浮点数?

例如,我想知道 tf.fake_quant_with_min_max_args() 函数的这个范围,其中 min, max 应该是浮点数,而不是张量。

我在我的自定义 Keras 层中对权重执行此操作,效果很好:

w_max = tf.keras.backend.eval(tf.math.reduce_max(self.weights))
w_min = tf.keras.backend.eval(tf.math.reduce_min(self.weights))
self.weights= tf.quantization.fake_quant_with_min_max_args(self.weights, min=w_min, max=w_max)

这是可行的(输出是一个浮点数),因为权重是在创建层时初始化的。

现在我想做一些类似的事情,但是输入一个层。这不起作用,因为 min, max 的输出是张量,我认为这是因为输入是占位符,并且在构建层时值是未知的。

是否有一个选项/方法/解决方法仍然可以找到层输入的最小值、最大值,以便它可以用于 tf.quantization.fake_quant_with_min_max_args() 函数?例如,在构建过程中将最小值、最大值设置为默认值,但在训练、干扰或输入有数据馈送时,它会将最小值、最大值计算为浮点数?

标签: pythontensorflowkeraskeras-layer

解决方案


推荐阅读