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

File "/home/wayshow/.local/lib/python3.10/site-packages/torch/nn/functional.py", line 2448, in batch_norm _verify_batch_size(input.size()) File "/home/wayshow/.local/lib/python3.10/site-packages/torch/nn/functional.py", line 2416, in _verify_batch_size raise ValueError("Expected more than 1 value per channel when training, got input size {}".format(size)) ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 512])

这个错误是因为你在训练模式(training mode)下使用了batch normalization(BatchNorm)层,但是提供给BatchNorm层的输入数据的batch size(批次大小)是1。BatchNorm层期望在训练模式下,每个通道(channel)有超过一个的值,因为在这个模式下,它会对每个通道的数据进行统计计算(如均值和方差)。

出现这个错误的根本原因是输入的batch只有一个数据,但是BatchNorm操作必须超过一个数据计算平均值。

最后发现是数据集的总数除以batch_size的值不能整除,余下了一个数据作为一个单独的batch。

解决办法:

1 修改batch的大小,使其能够整除

2 在dataloader中把drop_last 参数设置为True,舍去批次中多余的部分

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值