【PyTorch】用PyTorch實現風格遷移所遇到的問題解決方案

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章