博客
关于我
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/

你可能感兴趣的文章
OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
查看>>
OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
查看>>
osgearth介绍
查看>>
OSGi与Maven、Eclipse PlugIn的区别
查看>>
Osgi环境配置
查看>>
OSG——选取和拖拽
查看>>
OSG中找到特定节点的方法(转)
查看>>
OSG学习:C#调用非托管C++方法——C++/CLI
查看>>
OSG学习:OSG组成(三)——组成模块(续):OSG核心库中的一些类和方法
查看>>
OSG学习:OSG组成(二)——渲染状态和纹理映射
查看>>
OSG学习:WIN10系统下OSG+VS2017编译及运行
查看>>
OSG学习:人机交互——普通键盘事件:着火的飞机
查看>>
OSG学习:几何体的操作(一)——交互事件、简化几何体
查看>>
OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
查看>>
OSG学习:几何对象的绘制(一)——四边形
查看>>
OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
查看>>
OSG学习:几何对象的绘制(二)——简易房屋
查看>>
OSG学习:几何对象的绘制(四)——几何体的更新回调:旋转的线
查看>>
OSG学习:场景图形管理(一)——视图与相机
查看>>
OSG学习:场景图形管理(三)——多视图相机渲染
查看>>