当前位置:   article > 正文

【PyTorch】张量(Tensor)的生成

【PyTorch】张量(Tensor)的生成

PyTorch深度学习总结

第一章 Pytorch中张量(Tensor)的生成



一、什么是PyTorch?

PyTorch是一个开源的深度学习框架,基于Python语言。它由Facebook的人工智能研究团队于2016年开发并发布。

PyTorch提供了一种灵活的、动态的计算图模型,使得开发者可以方便地构建和训练神经网络模型。PyTorch采用了动态图的方式,即在运行时才构建计算图,这与静态图的框架相比具有更大的灵活性和易用性。开发者可以使用Python的控制流语句标准库函数来定义和操作计算图,这使得模型的编写和调试变得更加简单和直观。

PyTorch还提供了丰富的工具和库,用于大规模训练和部署深度学习模型。其中包括数据加载和预处理模型定义优化算法可视化等功能。
此外,PyTorch还与许多其他常用的Python库和工具集成,如NumPySciPyJupyter Notebook

总之,PyTorch是一个强大而灵活的深度学习框架,它在易用性、灵活性和性能方面都具有优势,使得开发者可以更加自由地进行深度学习模型的设计、训练和部署。


二、张量(Tensor)

张量是一种数学对象,可以用来表示多维数组多维矩阵
张量在深度学习和神经网络中也被广泛应用,用于表示和处理大规模数据集。


1、张量的数据类型

在torch中CPU和GPU张量分别有8种数据类型:

数据类型DtypeCPU TensorGPU Tensor
32位浮点型Torch.float或torch.float32torch.FloatTensortorch.cuda.FloatTensor
64位浮点型Torch.double或torch.float64torch.DoubleTensortorch.cuda.DoubleTensor
16位浮点型Torch.half 或torch.float16torch.HalfTensortorch.cuda.HalfTensor
8位无符号整型Torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8位有符号整型Torch.int8torch.CharTensortorch.cuda.CharTensor
16位有符号整型Torch.short 或Torch.int16torch.ShortTensortorch.cuda.ShortTensor
32位有符号整型Torch.int或Torch.int32torch.IntTensortorch.cuda.IntTensor
64位有符号整型Torch.long 或Torch.int64torch.LongTensortorch.cuda.LongTensor

Torch中默认数据类型为:torch.FloatTensortorch.int64
如果要修改默认数据类型可以使用函数:
torch.set_default_tensor_type()
(注:此函数只有torch.DoubleTensortorch.FloatTensor两个参数)

①自动生成情况分析:

# 引入库
import torch

# 创建张量
a = torch.tensor([1, 2])  # 均为整数
print(a.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出结果为:torch.int64

# 引入库
import torch

# 创建张量
a = torch.tensor([1.2, 2])  # 涉及到小数
print(a.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出结果为:torch.float32

②修改后情况分析:

# 引入库
import torch

# 创建张量
torch.set_default_tensor_type(torch.DoubleTensor)
a = torch.tensor([1, 2])
print(a.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果为:torch.int64

# 引入库
import torch

# 创建张量
torch.set_default_tensor_type(torch.DoubleTensor)
a = torch.tensor([1.2, 2])
print(a.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果为:torch.float64


2、张量生成和信息获取

张量生成:

A = torch.tensor([[1, 1], [2, 2]])
  • 1

深度学习中需要对梯度大小进行更新,所以需要计算梯度,需注意只有浮点型数据才可以计算梯度。

B = torch.tensor([[1, 1], [2, 2]], dtype=torch.float32, >requires_grad=True)
  • 1

输出结果为:tensor([[1., 1.],[2., 2.]], dtype=torch.float32, requires_grad=True)

其中dtype设置数据类型,requires_grad设置是否需要计算梯度。

函数描述
torch.zeros(3, 3)3*3的全0张量
torch.ones(3, 3)3*3的全1张量
torch.eye(3, 3)3*3的单位张量
torch.full((3, 3) , full_value=0.25)3*3使用0.25填充的张量
torch.empty(3, 3)3*3的空张量
torch.rand(3, 3)3*3的随机张量
torch.ones_like(A)与A大小相同的全1张量
torch.zeros_like(A)与A大小相同的全0张量
torch.rand_like(A)与A大小相同的随机张量
torch.ones_like(A)与A大小相同的全1张量
torch.arange(start=0, end=2, step=1)tensor([0, 1])

张量信息获取:

获取张量维度:

# 获取张量维度
A_shape = A.shape
print(A_shape)
  • 1
  • 2
  • 3

输出结果为:torch.Size([2, 2])

获取张量大小:

# 获取张量维度
A_size = A.size()
print(A_size)
  • 1
  • 2
  • 3

输出结果为:torch.Size([2, 2])

获取张量中包含元素数量:

# 获取张量中包含元素数量
A_number = A.numel()
print(A_number)
  • 1
  • 2
  • 3

输出结果为:4


总结

张量在深度学习中起着重要的作用。在深度学习中,数据通常以张量的形式表示。
张量的数值存储了模型的参数值数据的特征表示,通过对张量进行运算和优化,可以使模型逐渐学习到更好的特征表示和参数。
张量的计算和变换是深度学习的核心操作,它们的高效实现对于深度学习算法的训练和推理过程至关重要

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号