PyTorch离线加载本地VGG19.pth权重文件报错求助
解决VGG19本地权重加载引发的RuntimeError问题
问题原因
你当前的代码加载了完整的VGG19模型(包含分类头classifier模块),但神经风格迁移只需要使用模型的特征提取部分features(原代码中models.vgg19(pretrained=True).features就是这个逻辑)。后续风格迁移的代码会遍历模型的子层,识别卷积、ReLU等层,而完整模型的第一层是Sequential类型的features模块,不在代码的识别范围内,因此抛出Unrecognized layer: Sequential错误。
修正步骤
加载本地权重后,必须提取模型的features子模块,和原代码的结构保持一致:
import torch import torchvision.models as models device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 加载本地权重文件 checkpoint = torch.load('models/vgg19-dcbb9e9d.pth', map_location=device) # 初始化空的VGG19模型 cnn = models.vgg19() # 加载完整模型权重 cnn.load_state_dict(checkpoint) # 提取特征提取部分,与原代码逻辑对齐 cnn = cnn.features.to(device).eval()
额外说明
- 官方下载的
vgg19-dcbb9e9d.pth包含完整模型的权重(features和classifier),因此直接用cnn.load_state_dict(checkpoint)可以正常加载。 - 如果你的本地权重仅保存了
features部分的参数,需要改为cnn.features.load_state_dict(checkpoint)。
内容的提问来源于stack exchange,提问作者crasse
相关产品推荐
相关产品推荐

