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