示例#1
0
 def _create_model(self, mode):
     """Create a new Seq2SeqModel."""
     model_config = self.model_config
     model_config['mode'] = mode
     model_config['num_encoder_symbols'] = self.dictionary.n_tokens
     model_config['num_decoder_symbols'] = self.dictionary.n_tokens
     model_config['start_token'] = self.dictionary.SOS
     model_config['end_token'] = self.dictionary.EOS
     model_config['pad_token'] = self.dictionary.PAD
     self.model = Seq2SeqModel(**model_config)
     self.model.sess.graph.finalize()
     print('Created model with config:')
     print(json.dumps(model_config, indent=2))
def load_model():
    checkpoint = torch.load(hp.checkpoint_name)

    input_lang = pickle.load(open("input.dict", "rb"))
    output_lang = pickle.load(open("output.dict", "rb"))

    encoder = LSTMEncoderRNN(input_lang.n_words, hp.hidden_size, hp.embed_size)
    decoder = LSTMAttnDecoderRNN(encoder, hp.attention, hp.hidden_size, output_lang.n_words)

    encoder = encoder.cuda()
    decoder = decoder.cuda()

    encoder_state = checkpoint["encoder"]
    decoder_state = checkpoint["decoder"]

    encoder.load_state_dict(encoder_state)
    decoder.load_state_dict(decoder_state)

    seq2seq_model = Seq2SeqModel(encoder, decoder, input_lang, output_lang)

    return seq2seq_model
示例#3
0
from data import upload_dataset_partition
from init_directories import init_directories
from models import Seq2SeqModel

init_directories()

architecture = 5
word_level = 1
latent_dim = 350
epochs = 500

upload_dataset_partition(word_level=word_level, partitions=2)
model = Seq2SeqModel(latent_dim=latent_dim, epochs=epochs, model_architecture=architecture, word_level=word_level)
model.train_model()

示例#4
0
num_epochs = 50
epoch_init = 0
best_loss = 1000
epochs_since_improvement = 0

# load pretrained word embeddings
embedding = np.load('glove_pretrained_weights.npy', allow_pickle=True)
embedding = torch.from_numpy(embedding).float()

model = Seq2SeqModel(
    embed_dim=100,
    vocab_size=3933,
    dof=dof_num,
    enc_dim=encoder_hidden_dim,
    dec_dim=decoder_hidden_dim,
    enc_layers=1,
    dec_layers=1,
    bidirectional=True,
    #  dropout_prob=0.5,
    pretrain_weight=None)

# setting optimizer
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
criterion = nopad_mse_loss(reduction='mean')

# load saved models
save_state_dict = torch.load(model_save_folder +
                             'last_checkpoint_Seq2Seq_0309')
# print(save_state_dict['model'])
model.load_state_dict(save_state_dict['model'])
示例#5
0
else:
    input_lang = pickle.load(open(hp.prefix + "input.dict", "rb"))
    output_lang = pickle.load(open(hp.prefix + "output.dict", "rb"))

encoder = LSTMEncoderRNN(input_lang.n_words, hidden_size, embed_size)
decoder = LSTMAttnDecoderRNN(encoder, hp.attention, hidden_size,
                             output_lang.n_words)

if use_cuda:
    encoder = encoder.cuda()
    decoder = decoder.cuda()

print(encoder)
print(decoder)

seq2seq_model = Seq2SeqModel(encoder, decoder, input_lang, output_lang)

if os.path.isfile(hp.checkpoint_name):
    checkpoint = torch.load(hp.checkpoint_name) if use_cuda else torch.load(
        hp.checkpoint_name, map_location=lambda storage, loc: storage)
    encoder_state = checkpoint["encoder"]
    decoder_state = checkpoint["decoder"]
    encoder_optimizer_state = checkpoint["encoder_optimizer"]
    decoder_optimizer_state = checkpoint["decoder_optimizer"]
    epoch = checkpoint["epoch"]
    train_loss = checkpoint["train_loss"]
    eval_loss = checkpoint["eval_loss"]
    bleu_scores = checkpoint["bleu_scores"]

    encoder.load_state_dict(encoder_state)
    decoder.load_state_dict(decoder_state)