PyTorch-无法与Linear一起使用batchnorm1d

时间:2019-05-31 17:05:33

标签: pytorch batch-normalization

在一维张量上使用PyTorch的{​​{1}}会产生错误:

  

RuntimeError:running_mean应该包含1个元素,而不是2304

关于什么可能有问题的任何建议?

我的代码:

BatchNorm1D

2 个答案:

答案 0 :(得分:0)

您应该使用2D张量作为输入,因为BatchNorm1d适用于迷你批处理:

  

在2D或3D输入上应用批处理归一化(1D输入的微型批处理,具有可选的附加通道尺寸)...   More

您可以尝试torch.unsqueeze来固定输入尺寸。 More

答案 1 :(得分:0)

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

参数说明

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

···
nn.BatchNorm1d(1)
···

要进行测试,您可以使用以下代码:

m = nn.BatchNorm1d(1)
d = torch.randn(4, 1, 8)
output = m(d)