报错信息

expected scalar type Long but found Int
或者
expected scalar type Long but found Float

报错场景

pytorch的分类,本例具体为torch.nn.CrossEntropyLoss

原因

pytorch的分类的loss函数的label的类型只能是torch.LongTensor类型(也是torch.int64类型),其他类型比如torch.int32,torch.float32等等会报错。
我自己的是从np.long转成tensor时,由于np.long也是np.int32,转成tensor是转成了torch.int32,所以会报错。
np和torch的long类型不能直接转换,它们之间不等价,因为前者是int32,后者是int64。

解决办法

把label类型改成torch.LongTensor类型即可:
label = label.type(torch.LongTensor) # 原来的label是torch.int32类型,转换后是torch.int64

代码示例


import numpy as np
import torcha = [1,2,3]
a = np.array(a, dtype=np.long)
print(a.dtype)
new_a = torch.from_numpy(a.copy())
print(new_a.dtype)another_a = new_a.type(torch.LongTensor)
print(another_a.dtype)

输出:

int32
torch.int32
torch.int64

expected scalar type Long but found Int相关推荐

  1. RuntimeError: expected scalar type Long but found Int

    这个错误首先定位是Label错误 也就是Loss计算出错! 每个代码的loss都不一样,找到我们代码的Loss那里,将label的属性变化一下 添加红框内容,根据实际情况进行调整即可

  2. 解决pytorch RuntimeError: expected scalar type XXXX but found XXXX

    比如报错为:RuntimeError: expected scalar type Long but found Float,就是希望输入为torch.Long,结果得到一个torch.Float 解决 ...

  3. expected scalar type Double but found Float

    RuntimeError: expected scalar type Double but found Float 原因:tensor的数据类型不正确 解决: 将数据类型转为float32 并不是因为 ...

  4. 常见报错:RuntimeError: expected scalar type Long but found Float

    RuntimeError: expected scalar type Long but found Float 这是一个非常常见的报错,我已经遇到过这个报错很多次了,但是之前没有仔细研究过,今天好好好 ...

  5. Runtime error: expected scalar type Float but found Double

    错误:Runtime error: expected scalar type Float but found Double w_true=torch.tensor([2,-3.4]).T b_true ...

  6. [报错]RuntimeError: expected scalar type Double but found Float(torch)

    RuntimeError: expected scalar type Double but found Float 在使用torch训练模型的时候,发现该问题.根据提示,是双精度和float之间的冲突 ...

  7. RuntimeError: expected scalar type Double but found Float

    最近在使用 sequitur库 快速搭建自编码器时遇到 RuntimeError: expected scalar type Double but found Float 涉及代码 import to ...

  8. output = input.matmul(weight.t()) RuntimeError: expected scalar type Long but found Float 错误解决

    在使用pytorch的nn.Linear时出现错误 RuntimeError: expected scalar type Long but found Float 这里报错的原因是我的输入是Longt ...

  9. expected scalar type float but found half

    expected scalar type float but found half 这个问题很明显就是网络内的参数类型不同意: 修改: 在前面添加:这个我测试没成功 torch.set_default ...

最新文章

  1. Idiomatic Python手记一: average in FP way
  2. php日志导出oracle,一个php导出oracle库的php代码
  3. 【反射的使用】java反射的复习
  4. RMQ问题-ST表倍增处理静态区间最值
  5. PostgreSQL 简单的查询
  6. influxdb java api使用_java使用influxDB数据库的详细源码
  7. 转:Mysql explain
  8. win10更新1809版本后运行Dev-cpp, dos控制台字符乱码解决方法
  9. linux rtl8188eu ap模式 密码错误 disassoc reason code(8)
  10. Weak Pair (dfs+树状数组)
  11. arima基本原理_单变量的ARIMA预测
  12. javacv使用笔记
  13. grandMA2onPC控制UE4灯光
  14. 爬虫入门实践:天气信息
  15. 用C语言解一元二次方程
  16. 51单片机学习笔记【五】——1602液晶屏
  17. Visualizing Search Results with Solr /browse Velocity
  18. 淘宝电商产品jQuery图片放大镜代码
  19. bat批处理文件字符替换一例
  20. Windows 7定时关机命令shutdown

热门文章

  1. 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀
  2. python数据字典ppt_[关系型数据库][MySQL]用python快速导出数据字典
  3. springboot 分布式 --- 慕课网
  4. 论计算机叫兽们与林纳斯·托瓦兹
  5. HGOI 20190711 题解
  6. 任意模数ntt_任意模数NTT
  7. 打豆豆游戏c语言编程,C语言程序打豆豆(函数版)分享!
  8. CSS - 解决 “本地测试” 和 “线上测试” 样式不一样问题
  9. 制造linux安装系统老毛桃u盘
  10. 云服务器1M带宽是什么意思,怎么选择服务器带宽?