コード例 #1
0
    os.makedirs('checkpoints_luong/encoder')
if not os.path.exists('checkpoints_luong/decoder'):
    os.makedirs('checkpoints_luong/decoder')

# Uncomment these lines for inference mode
encoder_checkpoint = tf.train.latest_checkpoint('checkpoints_luong/encoder')
decoder_checkpoint = tf.train.latest_checkpoint('checkpoints_luong/decoder')

if encoder_checkpoint is not None and decoder_checkpoint is not None:
    encoder.load_weights(encoder_checkpoint)
    decoder.load_weights(decoder_checkpoint)

if MODE == 'train':
    for e in range(NUM_EPOCHS):
        en_initial_states = encoder.init_states(BATCH_SIZE)
        encoder.save_weights(
            'checkpoints_luong/encoder/encoder_{}.h5'.format(e + 1))
        decoder.save_weights(
            'checkpoints_luong/decoder/decoder_{}.h5'.format(e + 1))
        for batch, (source_seq, target_seq_in,
                    target_seq_out) in enumerate(dataset.take(-1)):
            loss = train_step(source_seq, target_seq_in, target_seq_out,
                              en_initial_states)

            if batch % 100 == 0:
                print('Epoch {} Batch {} Loss {:.4f}'.format(
                    e + 1, batch, loss.numpy()))

        try:
            predict()

            predict("How are you today ?")
コード例 #2
0
ファイル: trainer.py プロジェクト: haozheee/emojichatbot
    reply = Dialog.id2sent(output_word_ids.numpy()[0])
    reply = reply.replace("TSTEOSTST", " ]")
    reply = reply.replace("TSTSTARTTST", "[ ")
    return reply


# 4. Run Model
print("<<<< Start Training >>>>")
for step in range(epoch):
    with writer.as_default():
        tf.summary.trace_export(
            name="my_func_trace",
            step=0,
            profiler_outdir=logdir)
    total_loss = 0.0
    num_batches = 0
    for index, (X, Y, Y_shifted) in enumerate(data_set):
        batch_loss = train(X, Y_shifted, Y)
        total_loss += batch_loss
        num_batches += 1
    total_loss = total_loss
    data_set = tf.data.Dataset.zip((data_X, data_Y, data_Y_shifted))
    data_set = data_set.shuffle(buffer_size=len(dialog_x)).batch(batch_size, drop_remainder=True)
    print("Step: " + str(step) + ", Total Loss: " + str(total_loss))
    print("--- Me: How are you doing, my dear?")
    print("--- Computer: " + predict("How are you doing, my dear?"))
    if step % save_interval == 0:
        encoder.save_weights('encoder_weights_saving')
        decoder.save_weights('decoder_weights_saving')
        print("Model weights saved ....")