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 精度

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. JDBC之Statement

    Statement 目录 Statement Statement Statement概述 要执行的SQL分为两类 查询 增删改 Statement继承体系 SQL注入问题 SQL注入问题解决 获取得到 ...

  2. Harbor离线安装

    一.安装docker-compose 1-1. #安装方式一 curl -SL https://github.com/docker/compose/releases/download/v2.11.2/ ...

  3. 洛谷P4562 [JXOI2018]游戏

    题目 https://www.luogu.com.cn/problem/P4562 沉迷水题无法自拔(感觉校赛要大寄特寄qwq) 思路 可以fa现可怜的检查和员工的通风报信类似一个筛法的过程,当区间中 ...

  4. Selector 如何关联 channel,以及需要注意的点

    一.创建 selector Selector selector = Selector.open(); 1.一个 selector 可以管理多个 channel . 二.channel 如何注册到 se ...

  5. 大数据分析——matplotlib

    参考链接:https://blog.csdn.net/xavier_muse/article/details/83859272 fig,ax = plt.subplots()等价于: fig = pl ...

  6. HDFS Shell 操作

    HDFS Shell 操作 HDFS Shell 命令行格式 格式一:hadoop fs –命令名 参数 格式二:hdfs dfs –命令名 参数 HDFS 常用命令及参数 ls:查看 hdfs 中的 ...

  7. bzoj 3561

    题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)^{gcd(i,j)}$ 神仙题... 首先可能会想到一个转化,就是$lcm(i,j)=\frac{ij}{gcd(i ...

  8. Python 时间日期获取(今天,昨天或者某一段时间)

    日常使用的时间函数: 昨天,或者N天的日期 import time def time_stamp(days): hours = int(days) t = time.strftime("%Y ...

  9. kubernetes系列—Ubuntu下搭建Kubernetes集群--k8s部署

    1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 2.安装kubernetes 2.1  关闭防火墙 在每台机器上关闭防火墙: ① 关闭服务,并设为开机不自启 $ ...

  10. 时钟同步技术----NTP

    深圳市立显电子有限公司,专业LED时钟生产厂家!--------[点击进入]  学校考场医院车站GPS/NTP网络校时之组联网对时精度达5ppm原理剖析.        时间精度是根据各个用户所要求对 ...