Hello, dears
I’m trying to implement the code of The Annotated Transformer from Harvard NLP, everything is working well but I need to save and load my own mode instead of their (already) trained one, which is iwslt.pt
.
model_opt = NoamOpt(model.src_embed[0].d_model, 1, 2000,
torch.optim.Adam(model.parameters(), lr=0, betas=(0.9, 0.98), eps=1e-9))
N_EPOCHS = 2
CLIP = 1
best_valid_loss = float('inf')
for epoch in range(N_EPOCHS):
model_par.train()
run_epoch((rebatch(pad_idx, b) for b in train_iter),
model_par,
MultiGPULossCompute(model.generator, criterion,
devices=devices, opt=model_opt))
model_par.eval()
valid_loss = run_epoch((rebatch(pad_idx, b) for b in valid_iter),
model_par,
MultiGPULossCompute(model.generator, criterion,
devices=devices, opt=None))
if valid_loss < best_valid_loss:
best_valid_loss = valid_loss
torch.save(model_par.state_dict(), 'model.pt')
print(valid_loss)
For loading model I use :
model = torch.load("model.pt")
I got an error of
AttributeError: 'collections.OrderedDict' object has no attribute 'encode'
Also, I used :
model.load_state_dict(torch.load('en-de-model.pt'))
I got an error : AttributeError: 'collections.OrderedDict' object has no attribute 'load_state_dict'
Could you help to find the optimal way to save and load my won model?