2017-02-22 48 views
1

Я использую функцию обратного вызова в keras для записи loss и val_loss за эпоху, но я бы хотел сделать то же самое, но за партию. Я нашел функцию обратного вызова, которая называется on_batch_begin(self,batch,log={}), но я не уверен, как ее использовать.Как записывать val_loss и loss pre batch в keras

+0

Показать, что вы делаете сейчас в эпоху, пожалуйста, так что мы можем видеть, что вы ожидаете в пакете. –

+0

history = model.fit_generator (...) then history.history ['loss'] и history.history ['val_loss'] дает нам потерю и val_loss за эпоху. – gibbidi

ответ

1

После и модифицирующий пример из here:

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' ключ. Следовательно, окончательная инструкция print всегда показывает пустой список – tayden

+0

Если вы не задаете данные проверки, у вас нет значений потерь в объекте истории? –

+0

Я установил данные проверки, хотя – tayden

 Смежные вопросы

  • Нет связанных вопросов^_^