繁体   English   中英

如何在keras中记录每批的val_loss和loss

[英]How to record val_loss and loss per batch in keras

我在 keras 中使用回调函数来记录每个时期的lossval_loss ,但我想按批次做同样的事情。 我找到了一个名为on_batch_begin(self,batch,log={})的回调函数,但我不知道如何使用它。

我在keras中使用回调函数来记录每个时期的lossval_loss ,但是我想对每个批次执行相同的操作。 我发现了一个名为on_batch_begin(self,batch,log={})的回调函数,但是我不确定如何使用它。

我在keras中使用回调函数来记录每个时期的lossval_loss ,但是我想对每个批次执行相同的操作。 我发现了一个名为on_batch_begin(self,batch,log={})的回调函数,但是我不确定如何使用它。

我在keras中使用回调函数来记录每个时期的lossval_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM