我写了这个损失(用于测试keras中的自定义损失):
def loss(y_true, y_pred):
loss = -tf.reduce_sum(y_true * tf.log(y_pred))
loss = tf.Print(loss, [loss], 'loss = ')
return loss
Run Code Online (Sandbox Code Playgroud)
然后:
model.compile(loss=loss,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)
而且没有tf.Print结果:
Epoch 1/12
60000/60000 [==============================] - 12s 198us/step - loss: 25.3197 - acc: 0.9384 - val_loss: 5.6927 - val_acc: 0.9857
Epoch 2/12
60000/60000 [==============================] - 11s 187us/step - loss: 8.7803 - acc: 0.9798 - val_loss: 4.6938 - val_acc: 0.9888
Run Code Online (Sandbox Code Playgroud)
为什么?