1:RuntimeError: storage has wrong size: expected -1122305894 got 128
我们来看一下对应行的代码:
style_model.load_state_dict(t.load(opt.model_path, map_location=lambda _s, _: _s))
很明显这是加载预训练好的模型出错了,笔者再测试了一下需要用到的模型,结果发现没有VGG16,于是下载了VGG16放入对应路径下就解决了这个问题。
VGG16下载链接:https://download.pytorch.org/models/vgg16-397923af.pth
2:Unexpected running stats buffer(s) "upsample_layers.4.running_mean" and "upsample_layers.4.running_var" for InstanceNorm2d with track_running_stats=False. If state_dict is a checkpoint saved before 0.4.0, this may be expected because InstanceNorm2d does not track running stats by default since 0.4.0. Please remove these keys from state_dict. If the running stats are actually needed, instead set track_running_stats=True in InstanceNorm2d to enable them. See the documentation of InstanceNorm2d for details.
报错中说InstanceNorm2d有问题,让我们设置track_running_stats=True。
我们看一下对应报错行的代码,先看一部分含有InstanceNorm2d的代码,如下。
self.initial_layers = nn.Sequential(
ConvLayer(3, 32, kernel_size=9, stride=1),
nn.InstanceNorm2d(32, affine=True),
nn.ReLU(True),
ConvLayer(32, 64, kernel_size=3, stride=2),
nn.InstanceNorm2d(64, affine=True),
nn.ReLU(True),
ConvLayer(64, 128, kernel_size=3, stride=2),
nn.InstanceNorm2d(128, affine=True),
nn.ReLU(True),
)
按照命令行提示,我们设置将所有含有nn.InstanceNorm2d都设置track_running_stats=True,如下。
self.initial_layers = nn.Sequential(
ConvLayer(3, 32, kernel_size=9, stride=1),
nn.InstanceNorm2d(32, affine=True, track_running_stats=True),
nn.ReLU(True),
ConvLayer(32, 64, kernel_size=3, stride=2),
nn.InstanceNorm2d(64, affine=True, track_running_stats=True),
nn.ReLU(True),
ConvLayer(64, 128, kernel_size=3, stride=2),
nn.InstanceNorm2d(128, affine=True, track_running_stats=True),
nn.ReLU(True),
)