是否有一个选项可以查找 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)
Run Code Online (Sandbox Code Playgroud)
这是可行的(输出是浮点数),因为权重是在创建层时初始化的。
现在我想做类似的事情,但是需要一个层的输入。这是行不通的,因为 min、max 的输出是一个张量,我认为这是因为输入是一个占位符,并且在构建层时这些值是未知的。
是否有一个选项/方法/解决方法仍然可以找到层输入的最小值,最大值,以便它可以用于 tf.quantization.fake_quant_with_min_max_args() 函数?例如,在构建期间将最小值、最大值设置为默认值,但在训练、干扰或有数据馈送到输入期间,它会将最小值、最大值计算为浮点数?