В нашей задаче следующие метрики вывода; Это проблема классификации нескольких классов.
- loss, gra_loss, vow_loss, cons_loss
- gra_acc, vow_acc, cons_acc
Мы используем Керас и очень часто сталкиваемся со следующим странным поведением.
Эпоха 1/15 2043/5021 [===========> ..................] - ETA: 9: 19 - потери: 2,7695 - потери в графе: 1,9486 - потери в общинах: 0,4557 - потери в потерях: 0,3652 - gra_a cc: 0,5240 - потери в обьях cc: 0,8583 - cons_a cc: 0,88628- ETA: 15 : - ETA: 14: 02 - потери: 4,3086 - gra_los - ETA: 12: 20 - потери: 3,5839 - gra_loss: 2,5652 - vow_loss: 0,5682 - cons_loss: 0,4505 - gra_a cc: 0,4002 - Vow_a cc: 0,821 - ETA: 12: 15 - потери: 3,5549 - Gra_loss: 2,5434 - Vow_loss: 0,5640 - Cons_loss: 0,4475 - Gra_ - ETA: 12: 04 - потери: 3,4868 - gra_ - ETA: 11: 40 - потери: 3,3581 - gra_loss: 2,3925 - vow_loss: 0,5375 - cons_loss: 0,4281 - gra_a cc: 0,4330 - vow_a cc: 0,8317 - ETA: 11: 36 - потери - E - ETA: 10: 41 - потери: 3,0747 - gra_loss: 2,1817 - Vow_loss: 0,4961 - cons_loss : - ETA: 10: 28 - потеря: 3,0218 - gra_loss: 2.1407 - vow_loss: 0,4 - ETA: 10: 12 - потеря: 2,9572 - gra_loss: 2.0909 - потеря клятвы: 0,4797 - потеря козыря: - ETA: 9: 59 - потеря: 2,9056 - потеря графа: 2,0 - ETA: 9: 49 - потеря: 2,8 - ETA - ETA: 9: 24 - потеря: 2.7843 - gra_loss: 1.9599 - vow_loss: 0.4575 - cons_loss: 0.3669 - gra
Для получения дополнительной информации здесь есть функция callback
, которую я имею используемый.
# learning rate reduction
def scheduler(epoch):
if epoch < 10:
return 0.001
else:
return 0.001 * (0.8 ** epoch)
# -----------------------
# ----------------- model compiling ---------
model.compile(
optimizer = Adam(lr=0.001),
loss = {'gra' : 'categorical_crossentropy',
'vow' : 'categorical_crossentropy',
'cons': 'categorical_crossentropy'},
loss_weights = {'gra' : 1.0,
'vow' : 1.0,
'cons': 1.0},
metrics={'gra' : 'accuracy',
'vow' : 'accuracy',
'cons': 'accuracy'}
)
# -----------------------
# -------------- define some function for callback --------
def Call_Back():
# model check point
checkpoint = ModelCheckpoint('mod.h5',
monitor = 'val_loss',
verbose = 0, save_best_only=True,
mode = 'min',
save_weights_only = True)
lr_scheduler = LearningRateScheduler(scheduler)
csv_logger = CSVLogger('log.csv')
early = EarlyStopping(monitor='val_loss',
mode='min', patience=30)
# tensorboard --logdir ./Graph
# http://localhost:6006
tfcallback = TensorBoard(log_dir='./Graph', histogram_freq=0,
write_graph=True, write_images=True)
return [checkpoint, tfcallback, csv_logger, lr_scheduler]
Тогда просто как обычно
# calling all callbacks
callbacks = Call_Back()
train_history = model.fit_generator(
train_generator,
steps_per_epoch=int(len(train_labels)/batch_size),
validation_data=val_generator,
validation_steps = int(len(val_labels)/batch_size),
verbose=1,
epochs=epoch,
callbacks=callbacks
)