1. 错误一 TypeError: expected Long (got Float)
- 错误语句:
loss = criterion(outputs, target)
- 错误原因:target类型错误,要求时是Long类型的,给了Float类型的
- 修改后:
loss = criterion(outputs, target.long())
2. 错误二 RuntimeError: Assertion cur_target 0 cur_target n_classes failed
- 错误全部信息:
RuntimeError: Assertion cur_target >= 0 && cur_target < n_classes' failed. at C:\Users\builder\AppData\Local\Temp\pip-req-build-9msmi1s9\aten\src\THNN/generic/ClassNLLCriterion.c:97
- 错误语句:
loss = criterion(outputs, target.long())
-
错误原因1:模型输出与分类数不一致,比如有10个类别,但是网络的输出维度设置的是9;
-
改正方法1:检查网络的输出维度。
-
错误原因2:标签的设置不是从0开始;
-
改正方法2:如果标签是从1开始的,修改标签值使其从0开始.
3. 错误三 IndexError: dimension specified as 0 but tensor has no dimensions
- 错误原因:只知道是batch_size太小引起的;
- 改正方法:将batch_size调大。
4. 错误四RuntimeError: multi-target not supported at
- 错误全部信息:
RuntimeError: multi-target not supported at C:\Users\builder\AppData\Local\Temp\pip-req-build-9msmi1s9\aten\src\THNN/generic/ClassNLLCriterion.c:22
- 错误语句:
loss = criterion(outputs, target.long())
- 错误原因:标签必须是一维的,我设置成了两维
- 改正方法:
target = target.squeeze() # 压缩一个维度
loss = criterion(outputs, target.long())