代码创作世界——pytorch深度学习框架数据类型

代码创作世界——pytorch深度学习框架数据类型

torch中的数据类型张量(tensor)

pytorch中的

在数学中,一个单独的数可以成为标量,一行或者一列数组可以称为向量,一个二维数组称为一个矩阵,矩阵中的每一个元素可以被行和列所唯一确定,如果数组的维度超过2那么我们称该数组为张量Tensor。

但在pytorch中张量属于一种数据结构,它可以是一个标量、数组、向量、矩阵、甚至更高维的数组,它和numpy中的ndarray非常相似,在使用的过程中经常转换

数据类型dtypecpu tensorGPU tensor
32位浮点型torch.float32或torch.floattorch.FloatTensortorch.cuda.FloatTensor
64位浮点型torch.float64或torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor
16位浮点型torch.float16或torch.halftorch.HalfTensortorch.cuda.HalfTensor
8位无符号整型torch.unit8torch.ByteTensortorch.cuda.ByteTensor
8位有符号整型torch.int8torch.CharTensortorch.cuda.CharTensor

torch中默认使用的数据类型是32位浮点数

张量的数据类型

在程序中使用torch.tensor()生成一个张量然后通过.dtype方法获取张量的数据类型,结果位32位浮点数。

import torch
torch.tensor([1.2,3.4]).dtype

在这里插入图片描述

使用set_default_tensor_type来设置默认的数据类型

torch.set_default_tensor_type(torch.DoubleTensor)
torch.tensor([1.2,3.4]).dtype

在这里插入图片描述

torch中还有其他的数据类型的数据,将浮点型转化为其他的数据类型的方法如下

a = torch.tensor([1.2,3.4])
a.dtype
a.int().dtype
a.long().dtype
a.float().dtype

在这里插入图片描述

获取默认数据集的方法

torch.get_default_dtype()

张量的生成

张量的生成可以有很多的方式,下面对生成的方式进行列举

  • (1)使用torch.tensor() python的列表或者序列可以通过torch.tensor()构造张量
A =  torch.tensor([[1.0,1.0],[2,2]])
A

在这里插入图片描述

张量的维度可以通过.shape查看,并使用.size()方法计算张量的形状的大小,使用.numel()方法计算张量中包含的元素的数量
例如:

# 获得张量的维度
A.shape
# 获得张量的形状
A.size()
# 计算张量中包括的元素的数量
A.numel()

在这里插入图片描述

在使用torch.tensor()函数的时,可以使用参数dtype来指定张量的数据类型,使用参数requires_grad来指定是否需要计算梯度。只有计算梯度的张量才能在深度网络优化时根据梯度的大小进行更新。

B = torch.tensor((1,2,3),dtype=torch.float32,requires_grad=True)
B

在这里插入图片描述
需要注意的是只有浮点型的数据才能计算梯度,其他的数据类型不能计算张量否则会报错

y= B.pow(2).sum()
y.backward()
B.grad

在这里插入图片描述

  • (2)使用torch.Tensor()函数来生成张量(可以根据形状生成指定的张量)
C = torch.Tensor([1,2,3,4])
C

在这里插入图片描述

也可以根据形状参数生成特定尺寸的张量。例如生成3x3的张量

D = torch.Tensor(3,3)
D

在这里插入图片描述

针对已经生成的张量可以使用torch.**_like()系列函数生成与指定张量相同性质相似的张量

# 创建一个和D大小相同且全是1的张量
torch.ones_like(D)

在这里插入图片描述

使用torch.zeros_like()函数生成与D维度相同的全为0的张量

torch.zeros_like(D)

在这里插入图片描述

使用torch.rand_like()函数生成与D维度相同的张量

torch.rand_like(D)

在这里插入图片描述

  • (3)张量与numpy数据的互换
    pytorch中提供了Numpy数组和张量互换的函数,非常方便对张量进行相关的操作

将numpy数组转化为pytorch张量,可以使用torch.as_tensor()函数和torch.from_numpy函数
举例如下:

import numpy as np
F = np.ones((3,3))
F
# 使用torch.as_tensor()函数
Ftensor = torch.as_tensor(F)
Ftensor
# 使用torch.from_numpy
Ftensor = torch.from_numpy(F)
Ftensor

在这里插入图片描述

使用torch.numpy()函数即可转化为Numpy数组

Ftensor.numpy()

在这里插入图片描述

总结

通过pytorch代码构造张量的过程,体现出了代码创造童话,共建快乐世界。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值