Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用keras子类API在tensorflow 2.0的梯度计算中添加BatchNormalization损耗_Keras_Tensorflow2.0 - Fatal编程技术网

如何使用keras子类API在tensorflow 2.0的梯度计算中添加BatchNormalization损耗

如何使用keras子类API在tensorflow 2.0的梯度计算中添加BatchNormalization损耗,keras,tensorflow2.0,Keras,Tensorflow2.0,使用keras子类API,添加批处理规范化层非常容易,但是layer.loss列表始终显示为空。当执行磁带.gradient(损耗,lossmodel.trainable_变量)时,将损耗包含在列车损耗中的正确方法是什么?其中lossmodel是一个单独的keras子类模型,定义了一个更复杂的损耗函数,必须包含梯度损耗 例如,这是只有批处理规范层的最小模型。它一点也没有损失 class M(tf.keras.Model): def __init__(self, axis):

使用keras子类API,添加批处理规范化层非常容易,但是layer.loss列表始终显示为空。当执行
磁带.gradient(损耗,lossmodel.trainable_变量)
时,将损耗包含在列车损耗中的正确方法是什么?其中lossmodel是一个单独的keras子类模型,定义了一个更复杂的损耗函数,必须包含梯度损耗

例如,这是只有批处理规范层的最小模型。它一点也没有损失

class M(tf.keras.Model):

    def __init__(self, axis):
        super().__init__()
        self.layer = tf.keras.layers.BatchNormalization(axis=axis, scale=False, center=True, virtual_batch_size=1, input_shape=(6,))

    def call(self, x):
        out = self.layer(x)
        return out

m = M(1)
In [77]: m.layer.losses
Out[77]: []

你认为批量标准化层应该增加哪些损失?嗯?应添加在线均值和方差估计损失。批处理规范化的批处理部分是一种稳定性攻击。只需要简单的在线移位和缩放学习器,即在线学习配电的r.v.变压器。似乎tensorflow_概率将是未来通过实际的双射变换正确实现这一点的方法。我仍然不明白怎么会有人像这样训练。我怀疑我弄错了某个标志或tf 2.0交互没有正常工作。更清楚地说,从我所阅读的移动意味着等应该是使用损失梯度更新的参数。*清除。输入更多内容以允许评论。您认为批处理规范化层应该添加哪些损失?嗯?应添加在线均值和方差估计损失。批处理规范化的批处理部分是一种稳定性攻击。只需要简单的在线移位和缩放学习器,即在线学习配电的r.v.变压器。似乎tensorflow_概率将是未来通过实际的双射变换正确实现这一点的方法。我仍然不明白怎么会有人像这样训练。我怀疑我弄错了某个标志或tf 2.0交互没有正常工作。更清楚地说,从我所阅读的移动意味着等应该是使用损失梯度更新的参数。*清除。输入更多以允许评论。