【发布时间】:2021-04-17 08:04:17
【问题描述】:
我正在 PyTorch 中训练一个神经网络,它在某些时候有一个 BatchNorm3d(C)。
通常,我使用 1 的批大小对其进行训练,然后此特定级别的输入将具有 (1, C, 1, 1, 1) 的形状。
不幸的是,BatchNorm 然后失败并显示错误消息:
ValueError: 训练时每个通道期望超过 1 个值,得到输入大小 torch.Size([1, 32, 1, 1, 1])
当我使用InstanceNorm3d 时,也会发生同样的情况。当我使用大于 2 的批量大小时,它工作得非常好(即输入的形状将是 (2, C, 1, 1, 1)。
有人知道这个问题的解决方案吗?我错过了什么?
这个问题可以用下面的sn-p重现:
import torch
x_working = torch.ones([2,32,1,1,1])
x_not_working = torch.ones([1,32,1,1,1])
norm = torch.nn.InstanceNorm3d(32)
out_working = norm(x_working)
out_not_working=norm(x_not_working)
【问题讨论】:
标签: python-3.x pytorch