广告
返回顶部
首页 > 资讯 > 精选 >怎么解决numpy和torch数据类型转化的问题
  • 332
分享到

怎么解决numpy和torch数据类型转化的问题

2023-06-15 04:06:13 332人浏览 泡泡鱼
摘要

小编给大家分享一下怎么解决numpy和torch数据类型转化的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在实际计算过程中,float类型使用最多,因此这里

小编给大家分享一下怎么解决numpy和torch数据类型转化的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在实际计算过程中,float类型使用最多,因此这里重点介绍numpy和torch数据float类型转化遇到的问题,其他类型同理。

numpy数据类型转化

numpy使用astype转化数据类型,float默认转化为64位,可以使用np.float32指定为32位

#numpy转化float类型a= np.array([1,2,3])a = a.astype(np.float)print(a)print(a.dtype)

[1. 2. 3.]

float64

不要使用a.dtype指定数据类型,会使数据丢失

#numpy转化float类型b= np.array([1,2,3])b.dtype= np.float32print(b)print(b.dtype)

[1.e-45 3.e-45 4.e-45]

float32

不要用float代替np.float,否则可能出现意想不到的错误

不能从np.float64位转化np.float32,会报错

np.float64与np.float32相乘,结果为np.float64

在实际使用过程中,可以指定为np.float,也可以指定具体的位数,如np.float,不过直接指定np.float更方便。

torch数据类型转化

torch使用torch.float()转化数据类型,float默认转化为32位,torch中没有torch.float64()这个方法

# torch转化float类型b = torch.tensor([4,5,6])b = b.float()b.dtype
torch.float32

np.float64使用torch.from_numpy转化为torch后也是64位的

print(a.dtype)c = torch.from_numpy(a)c.dtype

float64

torch.float64

不要用float代替torch.float,否则可能出现意想不到的错误

torch.float32与torch.float64数据类型相乘会出错,因此相乘的时候注意指定或转化数据float具体类型

np和torch数据类型转化大体原理一样,只有相乘的时候,torch.float不一致不可相乘,np.float不一致可以相乘,并且转化为np.float64

numpy和tensor互转

tensor转化为numpy

import torchb = torch.tensor([4.0,6])# b = b.float()print(b.dtype)c = b.numpy()print(c.dtype)

torch.int64

int64

numpy转化为tensor

import torchimport numpy as npb= np.array([1,2,3])# b = b.astype(np.float)print(b.dtype)c = torch.from_numpy(b)print(c.dtype)

int32

torch.int32

可以看到,torch默认int型是64位的,numpy默认int型是32位的

补充:torch.from_numpy VS torch.Tensor

最近在造dataset的时候,突然发现,在输入图像转tensor的时候,我可以用torch.Tensor直接强制转型将numpy类转成tensor类,也可以用torch.from_numpy这个方法将numpy类转换成tensor类,那么,torch.Tensor和torch.from_numpy这两个到底有什么区别呢?既然torch.Tensor能搞定,那torch.from_numpy留着不就是冗余吗?

答案

有区别,使用torch.from_numpy更加安全,使用tensor.Tensor在非float类型下会与预期不符。

解释

实际上,两者的区别是大大的。打个不完全正确的比方说,torch.Tensor就如同c的int,torch.from_numpy就如同c++的static_cast,我们都知道,如果将int64强制转int32,只要是高位转低位,一定会出现高位被抹去的隐患的,不仅仅可能会丢失精度,甚至会正负对调。

这里的torch.Tensor与torch.from_numpy也会存在同样的问题。

看看torch.Tensor的文档,里面清楚地说明了,

torch.Tensor is an alias for the default tensor type (torch.FloatTensor).

而torch.from_numpy的文档则是说明,

The returned tensor and ndarray share the same memory. Modifications to the tensor will be reflected in the ndarray and vice versa. The returned tensor is not resizable.

也即是说,

当转换的源是float类型,torch.Tensor与torch.from_numpy会共享一块内存!且转换后的结果的类型是torch.float32

当转换的源不是float类型,torch.Tensor得到的是torch.float32,而torch.from_numpy则是与源类型一致!

是不是很神奇,下面是一个简单的例子:

import torchimport numpy as nps1 = np.arange(10, dtype=np.float32)s2 = np.arange(10) # 默认的dtype是int64# 例一o11 = torch.Tensor(s1)o12 = torch.from_numpy(s1)o11.dtype # torch.float32o12.dtype # torch.float32# 修改值o11[0] = 12o12[0] # tensor(12.)# 例二o21 = torch.Tensor(s2)o22 = torch.from_numpy(s2)o21.dtype # torch.float32o22.dtype # torch.int64# 修改值o21[0] = 12o22[0] # tensor(0)

以上是“怎么解决numpy和torch数据类型转化的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 怎么解决numpy和torch数据类型转化的问题

本文链接: https://www.lsjlt.com/news/277646.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么解决numpy和torch数据类型转化的问题
    小编给大家分享一下怎么解决numpy和torch数据类型转化的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在实际计算过程中,float类型使用最多,因此这里...
    99+
    2023-06-15
  • 解决numpy和torch数据类型转化的问题
    在实际计算过程中,float类型使用最多,因此这里重点介绍numpy和torch数据float类型转化遇到的问题,其他类型同理。 numpy数据类型转化 numpy使用astype转...
    99+
    2022-11-12
  • numpy强制类型转换的问题怎么解决
    本篇内容主要讲解“numpy强制类型转换的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“numpy强制类型转换的问题怎么解决”吧!numpy强制类型转换今天用numpy遇到一个关于类...
    99+
    2023-06-30
  • 如何使用Python和NumPy在LeetCode上解决数据类型问题?
    LeetCode是一个面向程序员的在线编程平台,许多人使用它来提高自己的编程技能。然而,当你在LeetCode上解决问题时,你可能会遇到一些数据类型问题。这些问题可能会让你的代码运行缓慢或者根本无法运行。在本文中,我们将介绍如何使用Pyt...
    99+
    2023-06-02
    numpy 数据类型 leetcode
  • numpy和ASP:如何解决数据类型同步所带来的性能问题?
    在数据处理的过程中,我们常常需要使用不同的编程语言来处理不同的数据类型。这就带来了一个问题,就是如何解决数据类型同步所带来的性能问题。在本文中,我们将介绍如何使用numpy和ASP来解决这个问题,并且我们还将穿插一些演示代码来帮助读者更好...
    99+
    2023-10-30
    numpy 同步 数据类型
  • C#中常见的数据类型转换问题及解决方案
    C#中常见的数据类型转换问题及解决方案在C#中,数据类型转换是一个常见的问题。由于C#是一种强类型语言,要求变量在进行计算或赋值时类型必须匹配。因此,当我们需要将一个数据类型转换为另一个数据类型时,可能会遇到各种问题。本文将介绍常见的数据类...
    99+
    2023-10-22
    数据类型转换解决方案
  • C++中常见的数据类型转换问题及解决方法
    C++ 中常见的数据类型转换问题及解决方法引言:在 C++ 编程中,经常会遇到不同数据类型之间的转换问题。正确地进行数据类型转换是保证程序正确性和性能的关键之一。本文将介绍一些常见的数据类型转换问题,并提供相应的解决方法和具体的代码示例。一...
    99+
    2023-10-22
    解决方法 数据类型转换 C++问题
  • 详解Python数据类型、进制转换、字符串格式化的问题
    目录1. 整数、浮点数和复数浮点数Decimal复数2.进制转换进制数字类型整型进制操作3. 字符串3.1 转义字符3.2 字符串取值4. 字符串运算与转换5. 字符串的常用方法判断...
    99+
    2022-11-10
  • Python字符串类型及格式化问题怎么解决
    这篇文章主要讲解了“Python字符串类型及格式化问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字符串类型及格式化问题怎么解决”吧!一、字符串类型1)字符串是字符的序...
    99+
    2023-07-05
  • numpy和ASP:如何处理不同的数据类型同步问题?
    随着数据处理需求的增加,不同的数据类型之间同步的问题变得越来越重要。在这方面,numpy和ASP这两个工具是非常有用的工具。 首先,让我们了解一下numpy。numpy是一个Python库,它提供了一个强大的多维数组对象,以及许多用于操作这...
    99+
    2023-10-30
    numpy 同步 数据类型
  • 解决Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题
    问题描述: 在进行数据库备份时候,导出dmp数据出现““ORA-01455: 转换列溢出整数数据类型”的错误 Oracle版本号为11.2.0.1,操作系统为Windows Serv...
    99+
    2022-11-12
  • C++中常见的数据类型问题的解决方法
    C++中常见的数据类型问题的解决方法引言:在C++编程中,处理不同数据类型的问题是非常常见的。不同的数据类型具有不同的特征和用途,然而,在处理不同类型的数据时,我们经常会遇到一些问题。本文将介绍一些在处理C++中常见数据类型问题时的解决方法...
    99+
    2023-10-22
    数据类型 C++ 解决方法
  • 如何解决ajax接收Date类型的数据时把数据转换为时间戳的问题
    这篇文章主要介绍“如何解决ajax接收Date类型的数据时把数据转换为时间戳的问题”,在日常操作中,相信很多人在如何解决ajax接收Date类型的数据时把数据转换为时间戳的问题问题上存在疑惑,小编查阅了各式...
    99+
    2022-10-19
  • 怎样帮助解决大数据转换和管理问题
    今天就跟大家聊聊有关怎样帮助解决大数据转换和管理问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  尽管大数据分析技术取得了惊人的进步,但我们在很大程度上仍需要手动来完成重要任务,...
    99+
    2023-06-02
  • 怎么解决mybatis映射和实际类型不一致的问题
    本篇内容主要讲解“怎么解决mybatis映射和实际类型不一致的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决mybatis映射和实际类型不一致的问题”吧!mybatis映射和实际类型...
    99+
    2023-06-21
  • Numpy数据加载时常见的问题和解决方法是什么?
    在数据科学领域中,Numpy是一个非常重要的库,它为数据分析和科学计算提供了强大的支持。但是,在使用Numpy进行数据加载时,常会遇到一些问题。这篇文章将介绍Numpy数据加载时常见的问题及其解决方法。 问题一:数据类型不匹配 当我们使用...
    99+
    2023-08-11
    日志 numy load
  • PHP超出整型数据相加问题怎么解决
    这篇“PHP超出整型数据相加问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP超出整型数据相加问题怎么解决”文...
    99+
    2023-07-06
  • mybatis的integer类型为0的失效问题怎么解决
    本篇内容介绍了“mybatis的integer类型为0的失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!integer类型为0...
    99+
    2023-06-26
  • Python中的数据类型转换函数的性能问题和使用建议
    Python中的数据类型转换函数的性能问题和使用建议在Python编程中,经常会遇到数据类型转换的需求。Python提供了丰富的内置函数来实现数据类型之间的转换,例如int()、float()、str()等。尽管这些函数非常方便,但是它们的...
    99+
    2023-10-22
    性能 数据类型转换 使用建议
  • Python开发中常见的数据类型问题及解决策略
    Python开发中常见的数据类型问题及解决策略概述:在Python开发过程中,处理数据是一个非常常见的任务。然而,由于数据的多样性和复杂性,很容易出现一些数据类型相关的问题。本文将介绍一些常见的数据类型问题,并提供相应的解决策略和代码示例。...
    99+
    2023-10-22
    策略 数据类型 问题
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作