2017-02-22 14 views
1

ケラスでコールバック関数を使用して、エポックあたりlossval_lossを記録していますが、同じですがバッチごとに行いたいと思います。 on_batch_begin(self,batch,log={})というコールバック関数が見つかりましたが、使用方法がわかりません。ケラスでval_lossと損失プリバッチを記録する方法

+0

を、我々はあなたがバッチごとに期待するものを見ることができるようにあなたがエポックごとに、今何をしているかしてください表示します。 –

+0

history = model.fit_generator(...)then 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'キー。したがって、最後のprint文には常に空のリストが表示されます – tayden

+0

検証データを設定しないと、履歴オブジェクトに損失値はありませんか? –

+0

妥当性検査データを設定しましたが – tayden

関連する問題