[英]How to record val_loss and loss per batch in keras
我在 keras 中使用回调函数来记录每个时期的loss
和val_loss
,但我想按批次做同样的事情。 我找到了一个名为on_batch_begin(self,batch,log={})
的回调函数,但我不知道如何使用它。
我在keras中使用回调函数来记录每个时期的loss
和val_loss
,但是我想对每个批次执行相同的操作。 我发现了一个名为on_batch_begin(self,batch,log={})
的回调函数,但是我不确定如何使用它。
我在keras中使用回调函数来记录每个时期的loss
和val_loss
,但是我想对每个批次执行相同的操作。 我发现了一个名为on_batch_begin(self,batch,log={})
的回调函数,但是我不确定如何使用它。
我在keras中使用回调函数来记录每个时期的loss
和val_loss
,但是我想对每个批次执行相同的操作。 我发现了一个名为on_batch_begin(self,batch,log={})
的回调函数,但是我不确定如何使用它。
我有一个答案。 我能够计算出来。 我计算了 manuel LossFunction(二元交叉熵)。 因为,如果我使用“model.evaluated(x_test, y_test)”,那么训练阶段需要很长时间。
但是在每批结束时,当keras用BCE计算和执行时,过程要快得多
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
self.val_losses= []
def on_batch_end(self, batch, logs={}):
y_pred = self.model.predict(x_test_scaled)
bce = tf.keras.losses.BinaryCrossentropy(from_logits=False)
val_loss = bce(y_test, y_pred).numpy()
self.val_losses.append(val_loss)
self.losses.append(logs.get('loss'))
它仍然只适合模型。
hist = LossHistory()
model.compile(optimizer=keras.optimizers.Adam(),
loss=keras.losses.binary_crossentropy,
metrics=[keras.metrics.binary_crossentropy])
history = model.fit(x_train_scaled, y_train,batch_size=256, epochs=15,
verbose=1,callbacks=[hist], validation_data=(x_test_scaled, y_test))
在模型拟合结束时,您可以显示每个批处理步骤的验证损失。
hist.val_losses
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.