示例#1
0
translator = Translator(tr_config)
print('training started:')
EPOCH_NUM = int(conf['epoch size'])
BATCH_SIZE = int(conf['batch size'])
PRINT_PER = int(conf['print period'])
SAVE_PER = int(conf['save period'])

data_so_far = 0
data_size = int(sum([len(x) for x in en_corpus.datas]))
batch_index = 0

while data_so_far < EPOCH_NUM * data_size:
    try:
        x = en_corpus.next_batch(BATCH_SIZE)
        y = fa_corpus.next_batch(BATCH_SIZE)
        loss = translator.train_model(x, y)
        if batch_index % PRINT_PER == 0:
            assert en_corpus.indexes == fa_corpus.indexes
            assert en_corpus.div_index == fa_corpus.div_index
            print(batch_index, ': ', loss)
        if batch_index % SAVE_PER == SAVE_PER - 1:
            print('saving...')
            en_corpus.save_corpus_state()
            fa_corpus.save_corpus_state()
            translator.save_model()
            print('finished')
        batch_index += 1
        data_so_far += x.shape[1]
    except KeyboardInterrupt:
        break
print('finished')