1. 设置打印精

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

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

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

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

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

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

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

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

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

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

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

  1. 1 >>> # 测试精度位数变化情况
  2. 2 >>> d=100+b
  3. 3 >>> d
  4. 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 精度

Pytorch中tensor的打印精度的更多相关文章

  1. pytorch中tensor数据和numpy数据转换中注意的一个问题

    转载自:(pytorch中tensor数据和numpy数据转换中注意的一个问题)[https://blog.csdn.net/nihate/article/details/82791277] 在pyt ...

  2. 对pytorch中Tensor的剖析

    不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...

  3. [Pytorch]Pytorch中tensor常用语法

    原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...

  4. pytorch中tensor张量数据基础入门

    pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...

  5. pytorch中tensor的属性 类型转换 形状变换 转置 最大值

    import torch import numpy as np a = torch.tensor([[[1]]]) #只有一个数据的时候,获取其数值 print(a.item()) #tensor转化 ...

  6. pytorch中tensor张量的创建

    import torch import numpy as np print(torch.tensor([1,2,3])) print(torch.tensor(np.arange(15).reshap ...

  7. Pytorch 中 tensor的维度拼接

    torch.stack() 和 torch.cat() 都可以按照指定的维度进行拼接,但是两者也有区别,torch.satck() 是增加新的维度进行堆叠,即其维度拼接后会增加一个维度:而torch. ...

  8. pytorch 中的数据类型,tensor的创建

    pytorch中的数据类型 import torch a=torch.randn(2,3) b=a.type() print(b) #检验是否是该数据类型 print(isinstance(a,tor ...

  9. 详解Pytorch中的网络构造,模型save和load,.pth权重文件解析

    转载:https://zhuanlan.zhihu.com/p/53927068 https://blog.csdn.net/wangdongwei0/article/details/88956527 ...

  10. Pytorch基础-tensor数据结构

    torch.Tensor Tensor 数据类型 Tensor 的属性 view 和 reshape 的区别 Tensor 与 ndarray 创建 Tensor 传入维度的方法 参考资料 torch ...

随机推荐

  1. spring mvc基本介绍

    1 MVC 盖帘: MVC 是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计编写 Web 应用程序表现层的模式. MVC 设计模式的三大角色: Model ...

  2. adobe 色轮

    https://color.adobe.com/zh/create/color-wheel

  3. tomcat 1 - Servlet 容器

    Socket socket = new Socket ( "yahoo.com", 80); OutputStream os = socket.getOutputStream(); ...

  4. nodejs 程序打包 打包 koa express 项目 源代码保护加密

    打包项目 几个可以 把 nodejs 打包成单个文件的库,为了方便或保护源代码,都可以尝试,打包完成需要测试,如果项目有特殊依赖,可能会失败. https://github.com/nexe/nexe ...

  5. pytorch学习笔记(8)--现有模型的使用和修改

    官网网址: https://pytorch.org/vision/0.9/models.html#semantic-segmentation (1).ImageNet train_data = tor ...

  6. Oracle数据库简单常用语句

    简单常用语句: 登录超级用户 sqlplus / as sysdba; 登录普通用户 connect username/password; 显示当前用户名 show user; 查询所有用户名 sel ...

  7. 博弈论[leetocde913]

    class Solution { static final int MOUSE_WIN = 1; static final int CAT_WIN = 2; static final int DRAW ...

  8. 织梦清除文章后后台页码异常怎么办?dedecms页码缓存更新设置

    织梦dedecms当我们清除大量文章后,发现织梦后台文章列表的页码还是原来的数量或者页码显示异常,该怎么办呢?其实是因为dedecms页码有缓存更新设置,DeDeCMS有缓存机制,有些比较费时的SQl ...

  9. Day10-数组

    数组 一.什么是数组 数组是相同数据类型的有序集合 数字描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 其中.每一个数据称作一个数组元素,每个数组元素可以通过一个下表来访问它们 二.数组 ...

  10. react实现某个元素节点截图(html2canvas)

    1.安装所需插件:html2canvas: 2.引入插件: import html2canvas from 'html2canvas'; 3.使用: const creatImg = () => ...