2017-02-22 41 views
1

我在keras中使用回调函数来记录lossval_loss每个时期,但是我希望每个批次都做同样的工作。我发现了一个名为on_batch_begin(self,batch,log={})的回调函数,但我不确定如何使用它。如何在keras中记录val_loss和损失预批量

+0

显示你的每时期现在做请让我们看到你每批次的期望。 –

+0

history = model.fit_generator(...)然后history.history ['loss']和history.history ['val_loss']给我们每个时期的损失和val_loss – gibbidi

回答

1

继和here modyfing一个例子:

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 
+0

日志字典似乎没有'val_loss'键。因此,最终的打印语句总是显示一个空列表 – tayden

+0

如果您没有设置验证数据,那么在历史记录对象中没有损失值? –

+0

虽然我设置了验证数据 – tayden

相关问题