In my script the model successfully trains and I save it at the end. When I try to load and evaluate it this is what happens:
Traceback (most recent call last):
  File ".\GRU.py", line 139, in <module>
    gru_outputs, targets, gru_sMAPE = evaluate(gmodel, X_test, Y_test, label_scalars)
  File ".\GRU.py", line 115, in evaluate
    model.eval()
AttributeError: 'NoneType' object has no attribute 'eval'

This is the last portion of the code:
def evaluate(model, X_test, Y_test, label_scalars):
    model.eval()
    outputs = []
    targets = []
    start_time = time.clock()
    for i in X_test.keys():
        inp = torch.from_numpy(np.array(X_test[i]))
        labs = torch.from_numpy(np.array(Y_test[i]))
        h = model.init_hidden(inp.shape[0])
        out, h = model(inp.to(device).float(), h)
        outputs.append(label_scalars[i].inverse_transform(out.cpu().detach().numpy()).reshape(-1))
        targets.append(label_scalars[i].inverse_transform(labs.numpy()).reshape(-1))
    print("Evaluation Time: {}".format(str(time.clock()-start_time)))
    sMAPE = 0
    for i in range(len(outputs)):
        sMAPE += np.mean(abs(outputs[i]-targets[i])/(targets[i]+outputs[i])/2)/len(outputs)
    print("sMAPE: {}%".format(sMAPE*100))
    return outputs, targets, sMAPE

lr = 0.002

#Gru_model = train(train_loader, lr)

gmodel = torch.load('./grunet.pkl')

gru_outputs, targets, gru_sMAPE = evaluate(gmodel, X_test, Y_test, label_scalars)