PyTorch 1.13.0环境下如何下载ResNet101模型文件并正常使用?
解决ResNet101本地权重加载后无法调用模型方法的问题
你的问题核心是:手动下载的.pth文件只是模型的权重参数字典(OrderedDict类型),而非完整的模型实例,因此无法直接调用eval()这类模型方法。只需按照「创建模型结构→加载权重字典」的步骤操作即可解决:
步骤1:创建ResNet101模型结构
先初始化一个不带预训练权重的ResNet101模型框架:
from torchvision.models import resnet101 # 创建空的ResNet101模型结构,weights=None表示不自动加载预训练权重 model = resnet101(weights=None)
步骤2:加载本地权重并映射到模型
用torch.load读取本地权重文件,再通过load_state_dict方法将权重注入模型结构:
from pathlib import Path import torch model_path = Path("PATH/resnet101.pth") # 替换为你的权重文件实际路径 # 加载本地权重字典 state_dict = torch.load(model_path) # 将权重参数映射到模型 model.load_state_dict(state_dict)
步骤3:正常使用模型
此时model已经是完整的ResNet101实例,可正常调用模型方法:
model.eval() # 不会再触发AttributeError # 示例推理代码(可选) import torchvision.transforms as transforms from PIL import Image # 定义符合ResNet输入要求的图像预处理流程 transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) img = Image.open("test_image.jpg") # 替换为你的测试图像路径 input_tensor = transform(img).unsqueeze(0) # 添加batch维度 with torch.no_grad(): # 推理阶段关闭梯度计算以节省资源 output = model(input_tensor)
内容的提问来源于stack exchange,提问作者Ruby Midford
相关产品推荐
相关产品推荐

