【发布时间】:2019-04-18 14:06:26
【问题描述】:
以下两个模型/编译的行为不同:
def custom_loss(y_true, y_pred):
return keras.losses.binary_crossentropy(y_true, y_pred)
optimizer = Adam(lr=5e-3)
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['accuracy'])
还有:
optimizer = Adam(lr=5e-3)
model.compile(loss=keras.losses.binary_crossentropy, optimizer=optimizer, metrics=['accuracy'])
可能是什么原因?
【问题讨论】:
-
你能解释一下“不同”是什么意思吗?
-
当我观察训练时,我看到不同的损失数字(和准确度)。真正不同的是,自定义损失不起作用,而出厂损失则有效。
-
我无法重现该问题。两者都产生完全相同的输出。我在 Ubuntu 16.04 和 Python 3 上使用了
Keras 2.2.4.1和MxNet 1.5.0(CPU 版本)后端。您使用什么工具,您观察到什么不同? -
我使用的是带有 Python 3 和 Jupyter 笔记本的 mac。我的目标是多标签(117 个二进制文件)。
-
@Oren 您是否以同样的洗牌方式使用您的数据。另外,您是否在为网络播种以使随机初始化完全相同?在神经网络中可能有很多不同的东西会导致随机性。