def main(_):

    config = get_config()
    q_config = run_lstmlm_withBegToken.small_config(data)
    name = create_name(config, q_config)
    logdir = wb.mkdir('./trf_nn/' + name, is_recreate=True)
    sys.stdout = wb.std_log(logdir + '/trf.log')
    config.pprint()
    print(logdir)

    # write data
    data.write_vocab(logdir + '/vocab.txt')
    data.write_data(data.datas[0], logdir + '/train.id')
    data.write_data(data.datas[1], logdir + '/valid.id')
    data.write_data(data.datas[2], logdir + '/test.id')

    m = trf.TRF(config, data, logdir=logdir, device='/gpu:0', simulater_device='/gpu:0',
                q_model=lstmlm.LM(run_lstmlm_withBegToken.small_config(data), device='/gpu:0'))
    ops = Ops(m)

    sv = tf.train.Supervisor(logdir=logdir + '/logs', summary_op=None, global_step=m._global_step)
    # sv.summary_writer.add_graph(tf.get_default_graph())  # write the graph to logs
    session_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=False)
    session_config.gpu_options.allow_growth = True
    with sv.managed_session(config=session_config) as session:
        m.set_session(session)

        print('load lstmlm q(x)')
        m.q_model.restore(session,
                          './lstm/' + run_lstmlm_withBegToken.create_name(m.q_model.config) + '/model.ckpt')

        m.train(sv, session,
                print_per_epoch=0.05,
                operation=ops,
                model_per_epoch=None)
Exemple #2
0
def create_name(config, q_config):
    s = str(config) + '_with_' + run_lstmlm_withBegToken.create_name(q_config)
    if config.feat_type_file is not None:
        s += '_' + os.path.split(config.feat_type_file)[-1].split('.')[0]
    if config.opt_method != 'adam':
        s += '_' + config.opt_method
    return s
def main(_):
    data = reader.Data().load_raw_data(reader.ptb_raw_dir(),
                                       add_beg_token='<s>',
                                       add_end_token='</s>',
                                       add_unknwon_token='<unk>')
    nbest = reader.NBest(*reader.wsj0_nbest())
    nbest_list = data.load_data(nbest.nbest, is_nbest=True)

    config = trfnce.Config(data)
    config.structure_type = 'cnn'
    config.embedding_dim = 256
    config.cnn_filters = [(i, 128) for i in range(1, 11)]
    config.cnn_hidden = 128
    config.cnn_layers = 3
    config.cnn_skip_connection = True
    config.cnn_activation = 'tanh'
    config.batch_size = 50
    config.noise_factor = 20
    config.noise_sampler = 2
    config.init_weight = 0.1
    config.lr_param = trfbase.LearningRateTime(1e-3)
    config.max_epoch = 10
    config.global_normalized = True
    config.update_zeta = False
    config.init_zeta = 10
    config.dropout = 0
    config.write_dbg = False
    config.pprint()

    name = create_name(config)
    logdir = 'trf_nce/' + name
    wb.mkdir(logdir, is_recreate=True)
    sys.stdout = wb.std_log(os.path.join(logdir, 'trf.log'))
    print(logdir)

    data.write_vocab(logdir + '/vocab.txt')
    data.write_data(data.datas[1], logdir + '/valid.id')
    data.write_data(data.datas[2], logdir + '/test.id')
    data.write_data(nbest_list, logdir + '/nbest.id')

    # wb.rmdir(logdirs)
    with tf.Graph().as_default():

        m = trfnce.TRF(config,
                       data,
                       logdir=logdir,
                       device='/gpu:1',
                       q_model=lstmlm.LM(
                           run_lstmlm_withBegToken.small_config(data),
                           device='/gpu:1'))

        sv = tf.train.Supervisor(logdir=os.path.join(logdir, 'logs'),
                                 global_step=m.train_net.global_step)
        sv.summary_writer.add_graph(
            tf.get_default_graph())  # write the graph to logs
        session_config = tf.ConfigProto(allow_soft_placement=True,
                                        log_device_placement=False)
        session_config.gpu_options.allow_growth = True
        with sv.managed_session(config=session_config) as session:
            m.set_session(session)

            print('load lstmlm for noise generator')
            m.q_model.restore(
                session, './lstm/' +
                run_lstmlm_withBegToken.create_name(m.q_model.config) +
                '/model.ckpt')

            m.train(sv,
                    session,
                    print_per_epoch=0.1,
                    nbest=nbest,
                    nbest_list=nbest_list)
def create_name(config, q_config):
    return str(config) + '_with_' + run_lstmlm_withBegToken.create_name(q_config) + '_zeta0'