我尝试使用tensorflow
的{{1}}接口实现自定义损失功能。
我向keras
和loss
添加了相同的功能:
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])
中,我将以下内容视为网络的一部分:
为什么在训练之前会有TensorBoard
和Mean
?它们代表什么?
答案 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)