本文共 639 字,大约阅读时间需要 2 分钟。
在运行损失函数时,当执行 loss = loss_func(output, label) 时,出现了两个错误。以下是详细的解决方法:
错误信息: 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()
这样可以确保标签是正确的整数类型。
错误信息: 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/