(epoch + 1, ((val_correct.item() + val_second_correct.item()) / val_total))) current_acc = val_correct.item() / val_total if best_acc < val_correct.item() / val_total: early_stop_idx = 0 best_acc = val_correct.item() / val_total logger.info('==== best accuracy is %.4f and epoch is %d' % (best_acc, epoch + 1)) logger.info('saving model, Epoch %d, step %d' % (epoch + 1, current_step + 1)) model_save_path = os.path.join(asset_path, 'model', ckpt_file_name % (epoch + 1)) state_dict = { 'model': model.state_dict(), 'optimizer': optimizer.state_dict(), 'epoch': epoch } torch.save(state_dict, model_save_path) last_best_epoch = epoch + 1 # save model elif (epoch + 1) % config.experiment['save_step'] == 0: logger.info('saving model, Epoch %d, step %d' % (epoch + 1, current_step + 1)) model_save_path = os.path.join(asset_path, 'model', ckpt_file_name % (epoch + 1)) state_dict = { 'model': model.state_dict(), 'optimizer': optimizer.state_dict(),
validation_loss /= n result = {'loss/val': validation_loss, 'acc/val': val_correct.item() / val_total, 'top2/val': (val_correct.item()+val_second_correct.item()) / val_total} for tag, value in result.items(): tf_logger.scalar_summary(tag, value, epoch + 1) logger.info("validation loss(%d): %.4f" % (epoch + 1, validation_loss)) logger.info("validation accuracy(%d): %.4f" % (epoch + 1, (val_correct.item() / val_total))) logger.info("validation top2 accuracy(%d): %.4f" % (epoch + 1, ((val_correct.item() + val_second_correct.item()) / val_total))) current_acc = val_correct.item() / val_total if best_acc < val_correct.item() / val_total: early_stop_idx = 0 best_acc = val_correct.item() / val_total logger.info('==== best accuracy is %.4f and epoch is %d' % (best_acc, epoch + 1)) logger.info('saving model, Epoch %d, step %d' % (epoch + 1, current_step + 1)) model_save_path = os.path.join(asset_path, 'model', ckpt_file_name % (epoch + 1)) state_dict = {'model': model.state_dict(),'optimizer': optimizer.state_dict(),'epoch': epoch} torch.save(state_dict, model_save_path) last_best_epoch = epoch + 1 # save model elif (epoch + 1) % config.experiment['save_step'] == 0: logger.info('saving model, Epoch %d, step %d' % (epoch + 1, current_step + 1)) model_save_path = os.path.join(asset_path, 'model', ckpt_file_name % (epoch + 1)) state_dict = {'model': model.state_dict(),'optimizer': optimizer.state_dict(),'epoch': epoch} torch.save(state_dict, model_save_path) early_stop_idx += 1 else: early_stop_idx += 1 if (args.early_stop == True) and (early_stop_idx > 9): logger.info('==== early stopped and epoch is %d' % (epoch + 1))