返回顶部
首页 > 资讯 > 精选 >怎么解决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://lsjlt.com/news/277646.html(转载时请注明来源链接)

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

猜你喜欢
  • 解决numpy和torch数据类型转化的问题
    在实际计算过程中,float类型使用最多,因此这里重点介绍numpy和torch数据float类型转化遇到的问题,其他类型同理。 numpy数据类型转化 numpy使用astype转...
    99+
    2024-04-02
  • 怎么解决numpy和torch数据类型转化的问题
    小编给大家分享一下怎么解决numpy和torch数据类型转化的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在实际计算过程中,float类型使用最多,因此这里...
    99+
    2023-06-15
  • numpy强制类型转换的问题怎么解决
    本篇内容主要讲解“numpy强制类型转换的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“numpy强制类型转换的问题怎么解决”吧!numpy强制类型转换今天用numpy遇到一个关于类...
    99+
    2023-06-30
  • 常见numpy数据类型转换问题的解决方案及答案
    numpy数据类型转换的常见问题解答及解决方案 引言NumPy是一个功能强大的Python库,用于科学计算和数据分析。在NumPy中,有时候我们需要进行不同数据类型之间的转换,但在转换过程中可能会遇到一些常见的问题。本文将介绍...
    99+
    2024-01-26
    Numpy 数据类型 转换
  • 如何使用Python和NumPy在LeetCode上解决数据类型问题?
    LeetCode是一个面向程序员的在线编程平台,许多人使用它来提高自己的编程技能。然而,当你在LeetCode上解决问题时,你可能会遇到一些数据类型问题。这些问题可能会让你的代码运行缓慢或者根本无法运行。在本文中,我们将介绍如何使用Pyt...
    99+
    2023-06-02
    numpy 数据类型 leetcode
  • numpy和ASP:如何解决数据类型同步所带来的性能问题?
    在数据处理的过程中,我们常常需要使用不同的编程语言来处理不同的数据类型。这就带来了一个问题,就是如何解决数据类型同步所带来的性能问题。在本文中,我们将介绍如何使用numpy和ASP来解决这个问题,并且我们还将穿插一些演示代码来帮助读者更好...
    99+
    2023-10-30
    numpy 同步 数据类型
  • C++中常见的数据类型转换问题及解决方法
    C++ 中常见的数据类型转换问题及解决方法引言:在 C++ 编程中,经常会遇到不同数据类型之间的转换问题。正确地进行数据类型转换是保证程序正确性和性能的关键之一。本文将介绍一些常见的数据类型转换问题,并提供相应的解决方法和具体的代码示例。一...
    99+
    2023-10-22
    解决方法 数据类型转换 C++问题
  • C#中常见的数据类型转换问题及解决方案
    C#中常见的数据类型转换问题及解决方案在C#中,数据类型转换是一个常见的问题。由于C#是一种强类型语言,要求变量在进行计算或赋值时类型必须匹配。因此,当我们需要将一个数据类型转换为另一个数据类型时,可能会遇到各种问题。本文将介绍常见的数据类...
    99+
    2023-10-22
    数据类型转换解决方案
  • 详解Python数据类型、进制转换、字符串格式化的问题
    目录1. 整数、浮点数和复数浮点数Decimal复数2.进制转换进制数字类型整型进制操作3. 字符串3.1 转义字符3.2 字符串取值4. 字符串运算与转换5. 字符串的常用方法判断...
    99+
    2024-04-02
  • numpy和ASP:如何处理不同的数据类型同步问题?
    随着数据处理需求的增加,不同的数据类型之间同步的问题变得越来越重要。在这方面,numpy和ASP这两个工具是非常有用的工具。 首先,让我们了解一下numpy。numpy是一个Python库,它提供了一个强大的多维数组对象,以及许多用于操作这...
    99+
    2023-10-30
    numpy 同步 数据类型
  • 使用numpy的转置函数解决数组的转置问题
    numpy中的转置函数使用方法,需要具体代码示例 在数据分析和科学计算中,经常需要对矩阵进行转置操作。numpy是Python中非常常用的科学计算库,提供了丰富的功能和工具,包括矩阵操作和转置函数。 numpy中的转置函数是tr...
    99+
    2024-01-26
    Numpy 函数使用方法 转置
  • NumPy和Java:如何优化大数据处理的数据类型?
    在大数据处理领域,数据类型是一个非常关键的问题。数据类型的选择会直接影响到数据处理的速度和效率。在这个领域中,NumPy和Java都是非常流行的数据处理工具。本文将介绍如何利用NumPy和Java来优化大数据处理的数据类型选择。 一、Nu...
    99+
    2023-07-08
    numy 大数据 数据类型
  • Python字符串类型及格式化问题怎么解决
    这篇文章主要讲解了“Python字符串类型及格式化问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字符串类型及格式化问题怎么解决”吧!一、字符串类型1)字符串是字符的序...
    99+
    2023-07-05
  • PHP 类型转换实用指南:解决数据转换难题
    php类型转换指南:内置转换函数:settype()、intval()、floatval()、boolval()自定义转换:强制转换操作符(int)、(float)、(bool)、(ar...
    99+
    2024-04-09
    php 类型转换 mysql
  • SQL Server 中的数据类型隐式转换问题
    写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题。我们先构造测试数据,如下所示: CRE...
    99+
    2024-04-02
  • javascript基本数据类型和对象类型归档问题解析
    javascript的基本数据类型以及引用数据类型,基本数据类型在开发中经常会用到,包括作为变量使用,判断数据类型来处理一些业务等 基本(简单数据类型) undefined,Null...
    99+
    2024-04-02
  • 解决Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题
    问题描述: 在进行数据库备份时候,导出dmp数据出现““ORA-01455: 转换列溢出整数数据类型”的错误 Oracle版本号为11.2.0.1,操作系统为Windows Serv...
    99+
    2024-04-02
  • C++中常见的数据类型问题的解决方法
    C++中常见的数据类型问题的解决方法引言:在C++编程中,处理不同数据类型的问题是非常常见的。不同的数据类型具有不同的特征和用途,然而,在处理不同类型的数据时,我们经常会遇到一些问题。本文将介绍一些在处理C++中常见数据类型问题时的解决方法...
    99+
    2023-10-22
    数据类型 C++ 解决方法
  • Python转换数据类型函数和转换数据类型的作用是什么
    这篇文章给大家分享的是有关Python转换数据类型函数和转换数据类型的作用是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、转换数据类型的作用(必要性)先用一个问题来讲解一下为什么要学习转换数据类型?问题:...
    99+
    2023-06-29
  • php怎么将json数据转化为数组类型
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,可以利用json_decode()函数来将json数据转为数组类型。json_decode()函数可以将JSON编码的字符串转换为适当的PHP数据类型。默认...
    99+
    2020-10-13
    php json数据 数组类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作