1. 设置打印精

Pytorch中tensor打印的数据长度需要使用torch.set_printoptions(precision=xx)进行设置,否则打印的长度会很短,给人一种精度不够的错觉:

>>> import torch
>>> a=torch.tensor([1/3])
>>> a
tensor([0.3333])
>>> # 修改打印精度为20位小数
>>> torch.set_printoptions(precision=20)
>>> a
tensor([0.33333334326744079590])

2. 类型转换对精度的影响

这里考虑使用类型转换将单精度浮点转换为双精度浮点:

>>> # 将单精度浮点转换为双精度浮点
>>> c=a.double()
>>> c
tensor([0.33333334326744079590], dtype=torch.float64)

可以看到,使用类型转换并不会提升数据精度

3. 重新定义高精度数据类型

那么,重新定义一个双精度的浮点数会怎么样呢?

>>> # 使用双精度浮点类型重新生成
>>> b=torch.tensor([1/3],dtype=torch.double)
>>> b
tensor([0.33333333333333331483], dtype=torch.float64)

4. 数据整体精度是否变化

此时,将数据加上100,可以看到小数后的精度变低了,但是数据整体精度保持不变:

1 >>> # 测试精度位数变化情况
2 >>> d=100+b
3 >>> d
4 tensor([100.33333333333332859638], dtype=torch.float64)

5. 建议

使用torch.set_default_dtype(torch.double)设置默认的数据类型为双精度浮点,使用torch.set_default_tensor_type(torch.DoubleTensor)在设置默认数据类型的同时会设置torch.tensor接口的默认类型。[3][4]对单精度浮点,为稳妥起见,根据输入内容设置打印精度为6位有效数字,同样对双精度浮点,根据输入内容设置设置打印精度为16位有效数字。这样,打印出来的值就是较为精确的值了。

参考:

Pytorch中tensor的打印精度_步子大了吧的博客-CSDN博客_pytorch 设置精度

python与pytorch的数据类型、数据精度与转换_hangyangSJTU的博客-CSDN博客_torch 精度

最新文章

  1. js 布尔值作为开关判断
  2. Android 中的Json解析工具fastjson 、序列化、反序列化
  3. CSS 类选择器
  4. return和exit函数的区别
  5. zw版【转发·台湾nvp系列Delphi例程】HALCON color_fuses1
  6. windows下实现微秒级的延时
  7. PHP Directory 函数
  8. 1.1.3-学习Opencv与MFC混合编程之---画图工具 通过对话框进行工具的参数设置 画曲线 绘图校正
  9. SSDB是一个开源的高性能数据库服务器
  10. Python2 基于urllib2 的HTTP请求类
  11. [PA 2014]Lustra
  12. python学习——读取染色体长度(四:获取最长染色体的编号)
  13. JDK 1.8判断集合种的元素是否存在相同
  14. cocos 自动内存管理分析
  15. PullToRefreshGridView上拉刷新,下拉加载
  16. Python 学习 第九篇:模块
  17. tomcat远程部署war包,显示连接被重置
  18. struts Action设置数据的方法
  19. Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
  20. Does the parameter type of the setter match the return type of the getter?

热门文章

  1. vvv动态组件和keep-alive
  2. 时间处理及interval函数运用
  3. Ngrinder(性能测试工具)-(一)
  4. Java课后总结2
  5. Java流程控制之顺序结构+选择结构
  6. python实现PDF转PNG
  7. oracle 函数instr
  8. c#在代码中再次调用按钮点击事件
  9. HCIA-ICT实战基础07-访问控制列表ACL进阶
  10. 用Flask+Element+Vue搭建md5、sha加密网站