PyTorch nn.Linear层输出良好的输入和权重?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (2721)

(回复bug:https//github.com/zihualiu/pytorch_linear_bug

我最近在Pytorch遇到了一个奇怪的错误,我希望你能帮助我。在我的一个网络中,我有一个完全连接的层,表示为net.fc_h1。然而,在训练期间,我意识到该层在激活之前输出NaN。所以我把它放在pdb中,希望它会让我产生一些东西。以下是日志:

# in network declaration:
def forward(self, obs):
    z1 = self.fc_h1(obs)
    if np.isnan(np.sum(z1.data.numpy())):
        pdb.set_trace()
    h1 = F.tanh(z1)
    ...

确实捕获了NaN,但我在pdb中意识到如果再次运行该操作,结果将是显着的:

(Pdb) z1.sum()
Variable containing:
nan
[torch.FloatTensor of size 1]

(Pdb) self.fc_h1(obs).sum()
Variable containing:
771.5120
[torch.FloatTensor of size 1]

当我检查我的输入或权重是否包含NaN时,我得到以下内容:(Pdb)self.fc_h1.weight.max()包含变量的变量:0.2482 [大小为1的torch.FloatTensor]

(Pdb) self.fc_h1.weight.mean()
Variable containing:
1.00000e-03 *
  1.7761
[torch.FloatTensor of size 1]

(Pdb) self.fc_h1.weight.min()
Variable containing:
-0.2504
[torch.FloatTensor of size 1]

(Pdb) obs.max()
Variable containing:
 6.9884
[torch.FloatTensor of size 1]

(Pdb) obs.min()
Variable containing:
-6.7855
[torch.FloatTensor of size 1]

(Pdb) obs.mean()
Variable containing:
1.00000e-02 *
 -1.5033
[torch.FloatTensor of size 1] 
(Pdb) self.fc_h1.bias.max()
Variable containing:
 0.2482
[torch.FloatTensor of size 1]

(Pdb) self.fc_h1.bias.mean()
Variable containing:
1.00000e-03 *
  3.9104
[torch.FloatTensor of size 1]

(Pdb) self.fc_h1.bias.min()
Variable containing:
-0.2466
[torch.FloatTensor of size 1]

看来输入,重量和偏见都很好。如果一切形成良好,有关线性层如何产生NaN的任何见解?

编辑:更奇怪所以我试图再次运行前锋传球,有趣的是,多次前锋传球给了我不同的结果:

(Pdb) self.fc_h1(obs)
Variable containing:
 2.2321e-01 -6.2586e-01 -1.9004e-01  ...  -4.2521e-01  8.6175e-01  8.6866e-01
-7.2699e-02  7.8234e-01 -5.8862e-01  ...   2.4041e-01 -1.7577e-01  6.9928e-01
-7.2699e-02  7.8234e-01 -5.8862e-01  ...   2.4041e-01 -1.7577e-01  6.9928e-01
                ...                   ⋱                   ...
-6.4686e-02 -1.5819e+00  5.7410e-01  ...  -6.4127e-01  5.2837e-01 -1.3166e+00
 3.9214e-01  2.8727e-01 -5.5699e-01  ...  -8.3164e-01 -5.1795e-01 -3.7637e-01
-9.6061e-01  1.4780e-01  5.3614e-02  ...  -1.5042e+00  6.0759e-02 -3.6862e-01
[torch.FloatTensor of size 4096x170]

(Pdb) self.fc_h1(obs)
Variable containing:
 2.2321e-01 -6.2586e-01 -1.9004e-01  ...  -4.2521e-01  8.6175e-01  8.6866e-01
-7.2699e-02  7.8234e-01 -5.8862e-01  ...   2.4041e-01 -1.7577e-01  6.9928e-01
-7.2699e-02  7.8234e-01 -5.8862e-01  ...   2.4041e-01 -1.7577e-01  6.9928e-01
                ...                   ⋱                   ...
        nan         nan         nan  ...          nan  5.2837e-01 -1.3166e+00
        nan         nan         nan  ...          nan -5.1795e-01 -3.7637e-01
        nan         nan         nan  ...          nan  6.0759e-02 -3.6862e-01
[torch.FloatTensor of size 4096x170]

我也没有使用GPU,只是CPU。

提问于
用户回答回答于

对我来说,我正在复制RNN名称分类示例中的代码。我添加了优化器和标准模式,而示例是手动操作并手动更新权重。我不小心为优化器添加了一个动量值,这就是我的问题所在。将动量设置为0固定它的默认值。

热门问答

腾讯会议共享屏幕,其他人收到的是黑屏?

你好,共享屏幕黑屏问题,可以先尝试把腾讯会议版更新到最新版本测试验证,如更新到最新版未能解决您的问题,可以填写以下信息: 【*会议号】 【*入会昵称】 【*注册手机号】 【*问题出现的腾讯会议版本】 【*出现平台以及版本:Android/iOS/win/mac/小程序】 【*出现...... 展开详请

实时音视频和小程序集成,设置合法域名 文档中少了一个域名?是否还有其他域名需要设置?

shixin

腾讯 · 高级产品经理 (已认证)

推荐

在开发工具上开启不校验合法域名即可,不影响真机运行,不需要配置,

Dr.Elephant支持hadoop3吗?还有编译一直有包找不到怎么解决?

目前TBDS的hadoop版本是2.7.2,建议配置文件中使用该版本号进行匹配

cos文件最大可以存储多大的问题件?

腾讯云技术服务团队

腾讯云 · 技术服务团队 (已认证)

腾讯云技术服务团队
推荐
COS简单上传最大可以上传5GB的文件,分片上传最大可以上传48.82TB (50,000GB )的文件。可参见COS产品文档https://cloud.tencent.com/document/product/436/14518 对于您提到的问题。js调用cos接口上传大于8M...... 展开详请

腾讯云IM使用不同视频创建视频消息的时候生成的缩略图都是一样,而且是透明的图片,为什么?

最爱开车啦互联网的敏感者
推荐
文档上已经有相关描述https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html?_ga=1.118341771.384230994.1576337691#createVideoMessage image.png ... 展开详请

如何用命令修改腾讯云解析目标ip?

氧化先生道可道 非常道 名可名 非常名
推荐
可以,参考: https://cns.api.qcloud.com/v2/index.php? &<公共请求参数> &Action=RecordCreate &domain=qcloud.com &subDomain=www &recordType=A &recordLine=默...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券