Esempio n. 1
0
                              stats['epoch'], model.updates))
                stats['best_valid'] = result[args.valid_metric]
                stats['no_improvement'] = 0
            else:
                stats['no_improvement'] += 1
                if stats['no_improvement'] >= args.early_stop:
                    break


if __name__ == '__main__':
    # Parse cmdline args and setup environment
    parser = argparse.ArgumentParser(
        'Code to Natural Language Generation',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    add_train_args(parser)
    config.add_model_args(parser)
    args, unknown = parser.parse_known_args()
    args.use_tgt_word = False
    args.tgt_pos_emb = False

    # Set cuda
    args.cuda = torch.cuda.is_available()
    args.parallel = torch.cuda.device_count() > 1

    # Set random state UNCOMMENT IF NEEDED
    # np.random.seed(args.random_seed)
    # torch.manual_seed(args.random_seed)
    # if args.cuda:
    #    torch.cuda.manual_seed(args.random_seed)

    # Set logging
Esempio n. 2
0
File: train.py Progetto: xllg/Ernn
        if result[args.valid_metric] > stats['best_valid']:
            logger.info('Best valid: %s = %.2f (epoch %d, %d updates)' %
                        (args.valid_metric, result[args.valid_metric],
                         stats['epoch'], model.updates))
            model.save(args.model_file)
            stats['best_valid'] = result[args.valid_metric]


if __name__ == '__main__':  # 如果模块是被直接运行的,则代码块被执行,如果模块是被导入的,则代码块不被运行
    parser = argparse.ArgumentParser(  # 创建解析器
        'ErnnReader',  # 程序的名字
        formatter_class=argparse.
        ArgumentDefaultsHelpFormatter  # 自动将有关默认值的信息添加到每个参数帮助消息中
    )
    add_train_args(parser)  # 添加参数
    config.add_model_args(parser)  # 添加参数
    args = parser.parse_args()  # 解析参数,将检查命令行,把每个参数转换成恰当的类型并采取恰当的操作
    set_defaults(args)

    # set cuda
    args.cuda = not args.no_cuda and torch.cuda.is_available()
    if args.cuda:
        torch.cuda.set_device(args.gpu)

    # set random state
    # 随机数种子,使用相同的seed()值,每次生成的随机数都相同;
    # 若不设置,系统根据时间来设置随机数种子,故而每次随机数都不一样;
    # 设置的seed()值仅一次有效
    np.random.seed(args.random_seed)
    torch.manual_seed(args.random_seed)
    if args.cuda: