load a pretrained model pytorch - dict object has no attribute eval

18,162

First, you have stated your model. And torch.load() gives you a dictionary. That dictionary has not an eval function. So you should upload the weights to your model.

import torch
from modelfolder import yourmodel

model = yourmodel()
checkpoint = torch.load('model_best.pth.tar')
try:
    checkpoint.eval()
except AttributeError as error:
    print error
### 'dict' object has no attribute 'eval'

model.load_state_dict(checkpoint['state_dict'])
### now you can evaluate it
model.eval()
Share:
18,162

Related videos on Youtube

nirvair
Author by

nirvair

Updated on September 14, 2022

Comments

  • nirvair
    nirvair over 1 year
    def save_checkpoint(state, is_best, filename='checkpoint.pth.tar'):
        torch.save(state, filename)
        if is_best:
            shutil.copyfile(filename, 'model_best.pth.tar')
    
    
    save_checkpoint({
                    'epoch': epoch + 1,
                    'arch': args.arch,
                    'state_dict': model.state_dict(),
                    'best_prec1': best_prec1,
                    'optimizer': optimizer.state_dict()
                }, is_best)
    

    I am saving my model like this. How can I load back the model so that I can use it in other places, like cnn visualization?

    This is how I am loading the model now:

    torch.load('model_best.pth.tar')
    

    But when I do this, I get this error:

    AttributeError: 'dict' object has no attribute 'eval'

    What am I missing here???

    EDIT: I want to use the model that I trained to visualize the filters and grads. I am using this repo to make the vis. I replaced line 179 with torch.load('model_best.pth.tar')

  • Sheldon Wei
    Sheldon Wei almost 4 years
    after this i got a error:'Missing key(s) in state_dict: "fc.weight", "fc.bias". '