首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Pytorch 基本的数据类型

  • 25-03-03 22:41
  • 4785
  • 13018
blog.csdn.net

    Pytorch中的基本数据类型就是各式各样的张量,张量可以理解为多维矩阵。Pytorch中定义了一个Tensor类来实现张量,Tensor在使用上与numpy的ndarray类似,不同的是,Tensor可以在GPU上运行,但是numpy只能在CPU上运行,当然numpy与Tensor可以进行相互转换,以此使得numpy数据在GPU上运行。Pytorch中的Tensor又包括CPU上的数据类型和GPU上的数据类型,两种数据类型之间也可以进行相互转换,下面是Pytorch定义的数据类型:

1. 类型检查

Pytorch数据类型的检查可以通过三个方式:

1)python内置函数type()

2)Tensor的成员函数Tensor.type()

3)Pytorch提供的工具函数isinstance()

示例代码:

  1. import torch
  2. a = torch.randn(2, 3) # 2行3列,正态分布~N(0,1)
  3. print(a)
  4. print(type(a))
  5. print(a.type())
  6. print(isinstance(a, torch.FloatTensor))

运行结果:

  1. tensor([[-0.6646, 0.3935, 1.2683],
  2. [-1.8576, 0.2761, 1.4787]])
  3. <class 'torch.Tensor'>
  4. torch.FloatTensor
  5. True

从运行结果来看,python内置的类型检测函数type()只能检查该数据是Tensort类型,具体的基本数据类型无法检测出来,而Tensor的成员函数type()更加直观,可以检测出Tensor数据的基本类型。isinstance()函数主要用于判断某数据是否属于某个数据类型,如果属于返回True,否则返回False。

2. 数据类型转换

Tensor类型的变量进行类型转换一般有两种方法:

1)Tensor类型的变量直接调用long(), int(), double(),float(),byte()等函数就能将Tensor进行类型转换;

2)在Tensor成员函数type()中直接传入要转换的数据类型。

当你不知道要转换为什么类型时,但需要求a1,a2两个张量的乘积,可以使用a1.type_as(a2)将a1转换为a2同类型。

示例代码:

  1. import torch
  2. a = torch.randn(2, 3)
  3. print(a.type())
  4. # 转换为IntTensort类型
  5. b = a.int()
  6. # 转换为LongTensor类型
  7. c = a.type(torch.LongTensor)
  8. print(b.type())
  9. print(c.type())
  10. # 将a转换为与b相同的类型
  11. a.type_as(b)
  12. print(a.type())

运行结果:

  1. torch.FloatTensor
  2. torch.IntTensor
  3. torch.LongTensor
  4. torch.FloatTensor

3. Tensor与Numpy ndarray之间的转换

Tensor和numpy.ndarray之间还可以相互转换,其方式如下:

1)Numpy转化为Tensor:torch.from_numpy(numpy矩阵)

2)Tensor转化为numpy:Tensor矩阵.numpy()

示例代码:

  1. import torch
  2. import numpy as np
  3. # 定义一个3行2列的全为0的矩阵
  4. b = torch.randn((3, 2))
  5. # tensor转化为numpy
  6. numpy_b = b.numpy()
  7. print(numpy_b)
  8. # numpy转化为tensor
  9. numpy_e = np.array([[1, 2], [3, 4], [5, 6]])
  10. torch_e = torch.from_numpy(numpy_e)
  11. print(numpy_e)
  12. print(torch_e)

4. CPU或GPU张量之间的转

1) CPU张量 ---->  GPU张量, 使用Tensor.cuda()

2) GPU张量 ----> CPU张量 使用Tensor.cpu()

我们可以通过torch.cuda.is_available()函数来判断当前的环境是否支持GPU,如果支持,则返回True。所以,为保险起见,在项目代码中一般采取“先判断,后使用”的策略来保证代码的正常运行,其基本结构如下:

  1. import torch
  2. # 定义一个3行2列的全为0的矩阵
  3. tmp = torch.randn((3, 2))
  4. # 如果支持GPU,则定义为GPU类型
  5. if torch.cuda.is_available():
  6. inputs = tmp.cuda()
  7. # 否则,定义为一般的Tensor类型
  8. else:
  9. inputs = tmp


 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树人工智能深度学习416686 人正在系统学习中
注:本文转载自blog.csdn.net的洪流之源的文章"https://blog.csdn.net/weicao1990/article/details/93177626"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top