有没有一种方法可以找到训练期间Tensorflow / Keras层输入的最小值,最大值?

时间:2019-02-12 22:52:46

标签: python tensorflow keras keras-layer

是否可以找到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的输出是Tensor,我认为这是因为输入是一个占位符,并且在构建图层时不知道其值。

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

0 个答案:

没有答案