【PyTorch】张量(Tensor)的生成

PyTorch深度学习总结

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


文章目录

  • PyTorch深度学习总结
  • 一、什么是PyTorch?
  • 二、张量(Tensor)
    • 1、张量的数据类型
    • 2、张量生成和信息获取
  • 总结


一、什么是PyTorch?

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

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

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

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


二、张量(Tensor)

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


1、张量的数据类型

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

数据类型 Dtype CPU Tensor GPU Tensor
32位浮点型 Torch.float或torch.float32 torch.FloatTensor torch.cuda.FloatTensor
64位浮点型 Torch.double或torch.float64 torch.DoubleTensor torch.cuda.DoubleTensor
16位浮点型 Torch.half 或torch.float16 torch.HalfTensor torch.cuda.HalfTensor
8位无符号整型 Torch.uint8 torch.ByteTensor torch.cuda.ByteTensor
8位有符号整型 Torch.int8 torch.CharTensor torch.cuda.CharTensor
16位有符号整型 Torch.short 或Torch.int16 torch.ShortTensor torch.cuda.ShortTensor
32位有符号整型 Torch.int或Torch.int32 torch.IntTensor torch.cuda.IntTensor
64位有符号整型 Torch.long 或Torch.int64 torch.LongTensor torch.cuda.LongTensor

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

①自动生成情况分析:

# 引入库
import torch

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

输出结果为:torch.int64

# 引入库
import torch

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

输出结果为:torch.float32

②修改后情况分析:

# 引入库
import torch

# 创建张量
torch.set_default_tensor_type(torch.DoubleTensor)
a = torch.tensor([1, 2])
print(a.dtype)

输出结果为:torch.int64

# 引入库
import torch

# 创建张量
torch.set_default_tensor_type(torch.DoubleTensor)
a = torch.tensor([1.2, 2])
print(a.dtype)

输出结果为:torch.float64


2、张量生成和信息获取

张量生成:

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

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

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

输出结果为: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)

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

获取张量大小:

# 获取张量维度
A_size = A.size()
print(A_size)

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

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

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

输出结果为:4


总结

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

你可能感兴趣的:(PyTorch,pytorch,人工智能,python)