我在Keras中使用回调函数来记录每个epoch的loss
和val_loss
,但我想按批次做同样的事情。我发现了一个名为on_batch_begin(self,batch,log={})
的回调函数,但我不知道如何使用它。
回答:
这是一个自定义回调的示例。以下是根据这里的示例进行修改的:
class LossHistory(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.losses = [] self.val_losses = [] def on_batch_end(self, batch, logs={}): self.losses.append(logs.get('loss')) self.val_losses.append(logs.get('val_loss'))model = Sequential()model.add(Dense(10, input_dim=784, init='uniform'))model.add(Activation('softmax'))model.compile(loss='categorical_crossentropy', optimizer='rmsprop')history = LossHistory()model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbose=0, validation_split=0.1, callbacks=[history])print history.losses# outputs'''[0.66047596406559383, 0.3547245744908703, ..., 0.25953155204159617, 0.25901699725311789]'''print history.val_losses