ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 256,

解决办法

batchsize 设为2或以上,并且dataloader的drop_last=True。
dataloader的drop_last默认为False,当batch_size设为2时,最后一个batch_size可能是1,如果按照默认的drop_last为False,那么这个batch_size为1的就会送进网络训练,也会报这个错。

原因

当batch_size为1时没法用batch normalization,因为batch normalization的计算公式是:
(x-mean(X))/(std(X)+eps),
当只有一个样本时,分子为0,没法训练。因为当权重初始化为全0时,同一层的更新后的权重是一样的,这会导致网络在学习时没有重点,对所有的特征处理相同,可能导致模型无法收敛。具体见:参数初始化

你可能感兴趣的:(项目遇到的问题,深度学习,人工智能)