首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PyTorch -无法将batchnorm1d与线性一起使用

PyTorch -无法将batchnorm1d与线性一起使用
EN

Stack Overflow用户
提问于 2019-06-01 01:05:33
回答 2查看 2.2K关注 0票数 3

在一维张量上使用PyTorch的BatchNorm1D会给出错误:

RuntimeError: running_mean应包含%1个不是2304的元素

有什么建议可能是错误的吗?

我的代码:

代码语言:javascript
复制
self.net_common = nn.Sequential (
    nn.Linear(64*64, 48*48),
    nn.BatchNorm1d(48*48),
    nn.Tanh(),
    nn.Dropout(p=0.25),
    nn.Linear(48*48, 32*32),
    nn.BatchNorm1d(32*32),
    nn.Tanh(),
)
EN

回答 2

Stack Overflow用户

发布于 2019-06-04 05:13:09

您应该使用2D张量作为输入,因为BatchNorm1d使用小批量:

在2D或3D输入(具有可选附加通道维度的1D输入的小型批次)上应用批归一化...More

您可以尝试torch.unsqueeze来修复您的输入尺寸。More

票数 0
EN

Stack Overflow用户

发布于 2019-07-11 10:59:31

https://pytorch.org/docs/stable/nn.html#torch.nn.BatchNorm1d

参数的解释

num_features -C来自预期的输入大小(N,C,L)或L来自输入大小(N,L)我认为C表示通道,L表示数据长度,N表示批处理大小。因此,如果输入的形状是(N,C,L),可能C是1或3,则可以使用

代码语言:javascript
复制
···
nn.BatchNorm1d(1)
···

代码语言:javascript
复制
m = nn.BatchNorm1d(1)
d = torch.randn(4, 1, 8)
output = m(d)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56399151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档