为什么在keras的metrics节点中会有“ Const”和“ Mean”操作?

时间:2018-10-08 08:12:22

标签: python tensorflow keras deep-learning

我尝试使用tensorflow的{​​{1}}接口实现自定义损失功能。

我向kerasloss添加了相同的功能:

metrics

def one_class_loss(y_true, y_pred): return tf.norm(y_pred, name='distance') model.compile(optimizer=tf.train.AdamOptimizer(0.001), loss=one_class_loss, metrics=[one_class_loss]) 中,我将以下内容视为网络的一部分: enter image description here

为什么在训练之前会有TensorBoardMean?它们代表什么?

1 个答案:

答案 0 :(得分:4)

Const部分用于避免数值不稳定性。 sqrt的导数为(1 / sqrt)* inner_derivative,因此,如果sqrt为0(例如最小值),则导数将得出inf值,并使模型崩溃。但是,如果将const添加到总和,由于inner_derivative为0,则导数为0。在所有其他情况下,Const对性能的影响很小。

Mean仅用于使优化器正常工作。优化多值输出没有意义,因此优化器通过在整个批量大小(例如均方误差。 (https://datascience.stackexchange.com/questions/23257/gradient-descent-with-vector-valued-loss