PyTorch-无法将BatchNormal1d与线性

PyTorch-无法将BatchNormal1d与线性,pytorch,batch-normalization,Pytorch,Batch Normalization,在一维张量上使用PyTorch的BatchNormal1d,会产生以下错误: RuntimeError:running_mean应包含1个元素,而不是2304 对可能出现的问题有什么建议吗 我的代码: 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,

在一维张量上使用PyTorch的
BatchNormal1d
,会产生以下错误:

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

对可能出现的问题有什么建议吗

我的代码:

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

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

在2D或3D输入上应用批量规格化(带有可选附加通道尺寸的1D输入的小批量)。。。

您可以尝试
torch.unsqueze
修复输入维度

参数的解释

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

···
nn.1D(1)
···
对于测试,您可以使用以下代码:

m=nn.BatchNorm1d(1)
d=火炬。随机数(4,1,8)
输出=m(d)