python - 加载预训练模型 pytorch - dict 对象没有属性 eval

标签 python deep-learning conv-neural-network pytorch

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' object has no attribute '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()

关于python - 加载预训练模型 pytorch - dict 对象没有属性 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51811154/

相关文章:

python - Airflow 没有正确安排 Python

python - QGraphicsTextItem 的分页 : Confining text to a specific rectangular area

deep-learning - Yolo 3 在 Yolo 4 中是如何实现的?

python - 凯拉斯警告 : Epoch comprised more than `samples_per_epoch` samples

deep-learning - CNN输入层有多少个神经元?

python - TensorFlow embedding_attention_seq2seq 方法是否默认实现双向 RNN 编码器?

python - Linux:cat 到 python 脚本中的命名管道

python - Keras LSTM - 验证损失从时期 #1 开始增加

deep-learning - Keras:扩大层输出 blob 空间维度的方法

python - 用空格分隔值到 ndarray