博客
关于我
pytorch loss = loss_func(output, label) 报错
阅读量:313 次
发布时间:2019-03-03

本文共 639 字,大约阅读时间需要 2 分钟。

在运行损失函数时,当执行 loss = loss_func(output, label) 时,出现了两个错误。以下是详细的解决方法:

1. 数据类型错误

错误信息: RuntimeError: Expected object of scalar type Long but got scalar type Float for argument #2 'target'

问题分析: 这是因为标签 label 必须是 LongTensor 类型,而之前的代码中将其转换为浮点数类型了。具体来说,image[1] 是字符串类型,在转换为浮点数后,再将其转换为 LongTensor 类型。

解决方法: 将标签转换为 LongTensor 类型:

label = t.tensor(float(image[1])).long()

这样可以确保标签是正确的整数类型。

2. 类别标签范围错误

错误信息: Assertioncur_target >= 0 && cur_target < n_classes’ failed`

问题分析: 这是因为数据集的类别是从 1 开始的,但在计算损失函数时,默认是从 0 开始的。因此需要将标签减去 1。

解决方法: 将标签调整为减去 1:

label = t.tensor(float(image[1]) - 1).long()

这样可以确保标签的范围是从 0 开始的,符合损失函数的预期。

通过以上修改,可以解决以上两个错误,确保训练过程顺利进行。

转载地址:http://wncq.baihongyu.com/

你可能感兴趣的文章
Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
查看>>
pandas 适用,但仅适用于满足条件的行
查看>>
pandas 重新采样到每月的特定工作日
查看>>
pandas :我如何对堆叠的条形图进行分组?
查看>>
pandas :按移位分组和累加和(GroupBy Shift And Cumulative Sum)
查看>>
pandas :检测一个DF和另一个DF之间缺失的列
查看>>
Pandas-从具有嵌套列表列表的现有列创建动态列时出错
查看>>
Pandas-通过对列和索引的值求和来合并两个数据框
查看>>
pandas.columns、get_dummies等用法
查看>>
pandas.DataFrame.copy(deep=True) 实际上并不创建深拷贝
查看>>
pandas.read_csv()的详解-ChatGPT4o作答
查看>>
PANDAS.READ_EXCEL()输出‘;溢出错误:日期值超出范围‘;而不存在日期列
查看>>
pandas100个骚操作:再见 for 循环!速度提升315倍!
查看>>
Pandas:如何根据其他列值的条件对列进行求和?
查看>>
Pandas:对给定列求和 DataFrame 行
查看>>
Pandas、Matplotlib、Pyecharts数据分析实践
查看>>
Pandas中文官档~基础用法2
查看>>
Pandas中文官档~基础用法5
查看>>
Pandas中文官档~基础用法6
查看>>
Pandas中的GROUP BY AND SUM不丢失列
查看>>