簡體   English   中英

加載預訓練模型 pytorch - dict 對象沒有屬性 eval

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

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)

我正在像這樣保存我的模型。 如何加載模型以便我可以在其他地方使用它,比如 cnn 可視化?

這就是我現在加載模型的方式:

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

但是當我這樣做時,我收到此錯誤:

AttributeError: 'dict' 對象沒有屬性 'eval'

我在這里錯過了什么???

編輯:我想使用我訓練的模型來可視化過濾器和梯度。 我正在使用這個repo來制作 vis。 我用torch.load('model_best.pth.tar')替換了第 179 行

首先,您已經說明了您的模型。 torch.load() 為您提供了一本字典。 那本字典沒有 eval 函數。 所以你應該將權重上傳到你的模型。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM