【问题标题】:FastGAN - RuntimeError: Error(s) in loading state_dict for GeneratorFastGAN - RuntimeError:为生成器加载 state_dict 时出错
【发布时间】:2021-11-27 09:15:39
【问题描述】:

我在 Google Colab 上运行 FastGAN (https://github.com/odegeasslbc/FastGAN-pytorch),现在尝试从网络生成的已保存 .pth 恢复训练。但是,它一直抛出这个错误:

回溯(最近一次通话最后): 文件“train.py”,第 202 行,在 火车(参数) 文件“train.py”,第 117 行,在火车中 netG.load_state_dict(ckpt['g']) 文件“/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py”,第 1407 行,在 load_state_dict self.__class__.__name__, "\n\t".join(error_msgs))) RuntimeError:为生成器加载 state_dict 时出错: state_dict 中缺少键:“init.init.0.weight_orig”、“init.init.0.weight”、“init.init.0.weight_u”、“init.init.0.weight_orig”、“init .init.0.weight_u”、“init.init.0.weight_v”、“init.init.1.weight”、“init.init.1.bias”、“init.init.1.running_mean”、“init .init.1.running_var”、“feat_8.​​1.weight_orig”、“feat_8.​​1.weight”、“feat_8.​​1.weight_u”、“feat_8.​​1.weight_orig”、“feat_8.​​1.weight_u”、“feat_8 .1.weight_v”、“feat_8.​​2.weight”、“feat_8.​​3.weight”、“feat_8.​​3.bias”、“feat_8.​​3.running_mean”、“feat_8.​​3.running_var”、“feat_8.​​5 .weight_orig”、“feat_8.​​5.weight”、“feat_8.​​5.weight_u”、“feat_8.​​5.weight_orig”、“feat_8.​​5.weight_u”、“feat_8.​​5.weight_v”、“feat_8.​​6.weight ”、“feat_8.​​7.weight”、“feat_8.​​7.bias”、“feat_8.​​7.running_mean”、“feat_8.​​7.running_var”、“feat_16.1.weight_orig”、“feat_16.1.weight”、 “feat_16.1.weight_u”、“feat_16.1.weight_orig”、“feat_16.1.weight_u”、“feat_16.1.weight_v”、“feat_16.2.weight”、“feat_16.2.bias”、“feat_16 .2.running_mean”、“feat_16.2.running_var”、“feat_32.1.weight_orig”、“feat_3 2.1.weight”、“feat_32.1.weight_u”、“feat_32.1.weight_orig”、“feat_32.1.weight_u”、“feat_32.1.weight_v”、“feat_32.2.weight”、“feat_32.3。重量”、“feat_32.3.bias”、“feat_32.3.running_mean”、“feat_32.3.running_var”、“feat_32.5.weight_orig”、“feat_32.5.weight”、“feat_32.5.weight_u” ,“feat_32.5.weight_orig”,“feat_32.5.weight_u”,“feat_32.5.weight_v”,“feat_32.6.weight”,“feat_32.7.weight”,“feat_32.7.bias”,“ feat_32.7.running_mean”、“feat_32.7.running_var”、“feat_64.1.weight_orig”、“feat_64.1.weight”、“feat_64.1.weight_u”、“feat_64.1.weight_orig”、“feat_64”。 1.weight_u”、“feat_64.1.weight_v”、“feat_64.2.weight”、“feat_64.2.bias”、“feat_64.2.running_mean”、“feat_64.2.running_var”、“feat_128.1”。 weight_orig”、“feat_128.1.weight”、“feat_128.1.weight_u”、“feat_128.1.weight_orig”、“feat_128.1.weight_u”、“feat_128.1.weight_v”、“feat_128.2.weight” ,“feat_128.3.weight”,“feat_128.3.bias”,“feat_128.3.running_mean”,“feat_128.3.running_var”,“feat_128.5.weight_orig”,“feat_128.5.weight”,“ feat_128.5.we ight_u”、“feat_128.5.weight_orig”、“feat_128.5.weight_u”、“feat_128.5.weight_v”、“feat_128.6.weight”、“feat_128.7.weight”、“feat_128.7.bias” ,“feat_128.7.running_mean”,“feat_128.7.running_var”,“feat_256.1.weight_orig”,“feat_256.1.weight”,“feat_256.1.weight_u”,“feat_256.1.weight_orig”,“ feat_256.1.weight_u”、“feat_256.1.weight_v”、“feat_256.2.weight”、“feat_256.2.bias”、“feat_256.2.running_mean”、“feat_256.2.running_var”、“se_64。 main.1.weight_orig”、“se_64.main.1.weight”、“se_64.main.1.weight_u”、“se_64.main.1.weight_orig”、“se_64.main.1.weight_u”、“se_64。 main.1.weight_v”、“se_64.main.3.weight_orig”、“se_64.main.3.weight”、“se_64.main.3.weight_u”、“se_64.main.3.weight_orig”、“se_64。 main.3.weight_u”、“se_64.main.3.weight_v”、“se_128.main.1.weight_orig”、“se_128.main.1.weight”、“se_128.main.1.weight_u”、“se_128。 main.1.weight_orig”、“se_128.main.1.weight_u”、“se_128.main.1.weight_v”、“se_128.main.3.weight_orig”、“se_128.main.3.weight”、“se_128。 main.3.weight_u", "se_128.main.3.weight_o钻机”、“se_128.main.3.weight_u”、“se_128.main.3.weight_v”、“se_256.main.1.weight_orig”、“se_256.main.1.weight”、“se_256.main.1。 weight_u”、“se_256.main.1.weight_orig”、“se_256.main.1.weight_u”、“se_256.main.1.weight_v”、“se_256.main.3.weight_orig”、“se_256.main.3。重量”、“se_256.main.3.weight_u”、“se_256.main.3.weight_orig”、“se_256.main.3.weight_u”、“se_256.main.3.weight_v”、“to_128.weight_orig”、“ to_128.weight”、“to_128.weight_u”、“to_128.weight_orig”、“to_128.weight_u”、“to_128.weight_v”、“to_big.weight_orig”、“to_big.weight”、“to_big.weight_u”、“to_big. weight_orig”、“to_big.weight_u”、“to_big.weight_v”、“feat_512​​.1.weight_orig”、“feat_512​​.1.weight”、“feat_512​​.1.weight_u”、“feat_512​​.1.weight_orig”、“feat_512​​”。 1.weight_u”、“feat_512​​.1.weight_v”、“feat_512​​.2.weight”、“feat_512​​.3.weight”、“feat_512​​.3.bias”、“feat_512​​.3.running_mean”、“feat_512​​.3”。 running_var”、“feat_512​​.5.weight_orig”、“feat_512​​.5.weight”、“feat_512​​.5.weight_u”、“feat_512​​.5.weight_orig”、“feat_512​​.5.weight_u”、“feat_512​​.5” .weight_v”、“feat_512​​.6.weight”、“feat_512​​.7.weight”、“feat_512​​.7.bias”、“feat_512​​.7.running_mean”、“feat_512​​.7.running_var”、“se_512.main.1 .weight_orig”、“se_512.main.1.weight”、“se_512.main.1.weight_u”、“se_512.main.1.weight_orig”、“se_512.main.1.weight_u”、“se_512.main.1 .weight_v”、“se_512.main.3.weight_orig”、“se_512.main.3.weight”、“se_512.main.3.weight_u”、“se_512.main.3.weight_orig”、“se_512.main.3 .weight_u”、“se_512.main.3.weight_v”、“feat_1024.1.weight_orig”、“feat_1024.1.weight”、“feat_1024.1.weight_u”、“feat_1024.1.weight_orig”、“feat_1024.1” .weight_u”、“feat_1024.1.weight_v”、“feat_1024.2.weight”、“feat_1024.2.bias”、“feat_1024.2.running_mean”、“feat_1024.2.running_var”。 state_dict 中的意外键:“module.init.init.0.weight_orig”、“module.init.init.0.weight_u”、“module.init.init.0.weight_v”、“module.init.init” .1.weight”、“module.init.init.1.bias”、“module.init.init.1.running_mean”、“module.init.init.1.running_var”、“module.init.init.1 .nu​​m_batches_tracked”、“module.feat_8.​​1.weight_orig”、“module.feat_8.​​1.weight_u”、“module.feat_8.​​1.weight_v”、“module.feat_8.​​2.weight”、“module.feat_8.​​3 .weight”、“module.feat_8.​​3.bias”、“module.feat_8.​​3.running_mean”、“module.feat_8.​​3.running_var”、“module.feat_8.​​3.num_batches_tracked”、“module.feat_8.​​5 .weight_orig"、"module.feat_8.​​5.weight_u"、"module.feat_8.​​5.weight_v"、"module.feat_8.​​6.weight"、"module.feat_8.​​7.weight"、"module.feat_8.​​7 .bias”、“module.feat_8.​​7.running_mean”、“module.feat_8.​​7.running_var”、“module.feat_8.​​7.num_batches_tracked”、“module.feat_16.1.weight_orig”、“module.feat_16.1 .weight_u”、“module.feat_16.1.weight_v”、“module.feat_16.2.weight”、“module.feat_16.2.bias”、“module.feat_16.2.running_mean”、 “module.feat_16.2.running_var”、“module.feat_16.2.num_batches_tracked”、“module.feat_32.1.weight_orig”、“module.feat_32.1.weight_u”、“module.feat_32.1.weight_v”、 “module.feat_32.2.weight”、“module.feat_32.3.weight”、“module.feat_32.3.bias”、“module.feat_32.3.running_mean”、“module.feat_32.3.running_var”、 “module.feat_32.3.num_batches_tracked”、“module.feat_32.5.weight_orig”、“module.feat_32.5.weight_u”、“module.feat_32.5.weight_v”、“module.feat_32.6.weight”、 “module.feat_32.7.weight”、“module.feat_32.7.bias”、“module.feat_32.7.running_mean”、“module.feat_32.7.running_var”、“module.feat_32.7.num_batches_tracked”、 “module.feat_64.1.weight_orig”、“module.feat_64.1.weight_u”、“module.feat_64.1.weight_v”、“module.feat_64.2.weight”、“module.feat_64.2.bias”、 “module.feat_64.2.running_mean”、“module.feat_64.2.running_var”、“module.feat_64.2.num_batches_tracked”、“module.feat_128.1.weight_orig”、“module.feat_128.1.weight_u”、 “module.feat_128.1.weight_v”、“module.feat_128.2.weight”、“module.fea t_128.3.weight”、“module.feat_128.3.bias”、“module.feat_128.3.running_mean”、“module.feat_128.3.running_var”、“module.feat_128.3.num_batches_tracked”、“模块。 feat_128.5.weight_orig”、“module.feat_128.5.weight_u”、“module.feat_128.5.weight_v”、“module.feat_128.6.weight”、“module.feat_128.7.weight”、“模块。 feat_128.7.bias”、“module.feat_128.7.running_mean”、“module.feat_128.7.running_var”、“module.feat_128.7.num_batches_tracked”、“module.feat_256.1.weight_orig”、“模块。 feat_256.1.weight_u”、“module.feat_256.1.weight_v”、“module.feat_256.2.weight”、“module.feat_256.2.bias”、“module.feat_256.2.running_mean”、“模块。 feat_256.2.running_var”、“module.feat_256.2.num_batches_tracked”、“module.se_64.main.1.weight_orig”、“module.se_64.main.1.weight_u”、“module.se_64.main.1。 weight_v”、“module.se_64.main.3.weight_orig”、“module.se_64.main.3.weight_u”、“module.se_64.main.3.weight_v”、“module.se_128.main.1.weight_orig” , "module.se_128.main.1.weight_u", "module.se_128.main.1.weight_v", "module.se_ 128.main.3.weight_orig”、“module.se_128.main.3.weight_u”、“module.se_128.main.3.weight_v”、“module.se_256.main.1.weight_orig”、“module.se_256。 main.1.weight_u”、“module.se_256.main.1.weight_v”、“module.se_256.main.3.weight_orig”、“module.se_256.main.3.weight_u”、“module.se_256.main。 3.weight_v”、“module.to_128.weight_orig”、“module.to_128.weight_u”、“module.to_128.weight_v”、“module.to_big.weight_orig”、“module.to_big.weight_u”、“module.to_big. weight_v”、“module.feat_512​​.1.weight_orig”、“module.feat_512​​.1.weight_u”、“module.feat_512​​.1.weight_v”、“module.feat_512​​.2.weight”、“module.feat_512​​.3。重量”、“module.feat_512​​.3.bias”、“module.feat_512​​.3.running_mean”、“module.feat_512​​.3.running_var”、“module.feat_512​​.3.num_batches_tracked”、“module.feat_512​​.5。 weight_orig”、“module.feat_512​​.5.weight_u”、“module.feat_512​​.5.weight_v”、“module.feat_512​​.6.weight”、“module.feat_512​​.7.weight”、“module.feat_512​​.7。偏差”、“module.feat_512​​.7.running_mean”、“module.feat_512​​.7.running_var”、“module.feat_512​​.7 .nu​​m_batches_tracked”、“module.se_512.main.1.weight_orig”、“module.se_512.main.1.weight_u”、“module.se_512.main.1.weight_v”、“module.se_512.main.3.weight_orig” "、"module.se_512.main.3.weight_u"、"module.se_512.main.3.weight_v"、"module.feat_1024.1.weight_orig"、"module.feat_1024.1.weight_u"、"module.feat_1024 .1.weight_v”、“module.feat_1024.2.weight”、“module.feat_1024.2.bias”、“module.feat_1024.2.running_mean”、“module.feat_1024.2.running_var”、“module.feat_1024 .2.num_batches_tracked”。

知道这里会发生什么吗?

非常感谢您的帮助!

【问题讨论】:

  • 我建议你在 Github Repo 上查找问题或在 Repo 上提出这个问题,因为 Repo 所有者比 StackOverflow 上的人更有可能提出解决方案
  • 我已经阅读了这些问题,但不愿打扰回购所有者。我不熟悉 python/pytorch,所以我倾向于认为这只是我的一个简单错误。不过可以试试,谢谢!
  • 我很抱歉,但我怀疑你会在这里收到答案

标签: python pytorch generative-adversarial-network stylegan


【解决方案1】:

这在更改 nn.Module 中子模块的属性名称时很常见。

请注意这里的大多数层键与加载状态 dict 中包含的层键有什么不同,因为它们的前缀:字典中的所有键都有一个 'module.' 前缀。

您可以快速解决此前缀。例如,您可以使用 dict 理解:

loaded_state = {k.replace('module.', ''): v for k, v in ckpt['g'].items()}
netG.load_state_dict(loaded_state)

【讨论】:

  • 感谢您的修复!刚刚尝试过,但似乎必须对鉴别器键执行相同的操作。这是解决问题的最佳方法吗?它是否必须对使用 nn.DataParallel 保存的模型做些什么?我看到 multi_gpu 默认设置为 True。
  • 你是对的,nn.DataParallel 将有效地包裹你nn.Module,这导致module 被添加到你的原始模块的内容中。
  • 所以我认为您的修复将是恢复它的最简单方法?我已经尝试将它应用于 g 和 d 键,但它会转移到另一个错误(只是一个错误的顺序?):File "train.py", line 127, in train optimizerG.load_state_dict(ckpt['opt_g']) UnboundLocalError: local variable 'optimizerG' referenced before assignment
猜你喜欢
  • 2021-02-21
  • 2019-06-01
  • 2023-03-12
  • 2020-11-10
  • 2020-09-18
  • 1970-01-01
  • 2020-04-10
  • 2022-10-19
  • 1970-01-01
相关资源
最近更新 更多