目录
一、前言
二、实验环境
三、PyTorch数据结构
0、分类
1、Tensor(张量)
1. 维度(Dimensions)
0维(标量)
1维(向量)
2维(矩阵)
3维张量
2. 数据类型(Data Types)
ChatGPT:
PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富的工具和库,用于构建和训练各种类型的神经网络模型。下面是PyTorch的一些详细介绍:
动态计算图:PyTorch使用动态计算图的方式进行计算,这意味着在运行时可以动态地定义、修改和调整计算图,使得模型的构建和调试更加灵活和直观。
强大的GPU加速支持:PyTorch充分利用GPU进行计算,可以大幅提升训练和推理的速度。它提供了针对GPU的优化操作和内存管理,使得在GPU上运行模型更加高效。
自动求导:PyTorch内置了自动求导的功能,可以根据定义的计算图自动计算梯度。这简化了反向传播算法的实现,使得训练神经网络模型更加便捷。
大量的预训练模型和模型库:PyTorch生态系统中有许多预训练的模型和模型库可供使用,如TorchVision、TorchText和TorchAudio等,可以方便地加载和使用这些模型,加快模型开发的速度。
高级抽象接口:PyTorch提供了高级抽象接口,如
nn.Module
和nn.functional
,用于快速构建神经网络模型。这些接口封装了常用的神经网络层和函数,简化了模型的定义和训练过程。支持分布式训练:PyTorch支持在多个GPU和多台机器上进行分布式训练,可以加速训练过程,处理大规模的数据和模型。
总体而言,PyTorch提供了一个灵活而强大的平台,使得深度学习的研究和开发更加便捷和高效。它的简洁的API和丰富的功能使得用户可以快速实现复杂的神经网络模型,并在各种任务中取得优秀的性能。
本系列实验使用如下环境
conda create -n DL python=3.7
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib
关于配置环境问题,可参考前文的惨痛经历:
Anaconda搭建深度学习环境py 3.7:tensorflow-gpu2.3.0、pytorch1.12.1_gpu版本;(使用conda下载cuda和cudnn);配置环境经验总结_anaconda下载tensorflow_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/128841527?spm=1001.2014.3001.5502
Tensor(张量)是PyTorch中用于表示多维数据的主要数据结构。在PyTorch中,张量类似于多维数组,可以存储和操作数字数据。
Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。在PyTorch中,可以使用size()
方法获取张量的维度信息,使用dim()
方法获取张量的轴数。
import torch
# 创建0维张量(标量)
scalar = torch.tensor(5)
print("0维张量(标量):")
print(scalar)
print("维度信息:", scalar.size())
print("轴数:", scalar.dim())
import torch
# 创建1维张量(向量)
vector = torch.tensor([1, 2, 3, 4, 5])
print("\n1维张量(向量):")
print(vector)
print("维度信息:", vector.size())
print("轴数:", vector.dim())
import torch
# 创建2维张量(矩阵)
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
print("\n2维张量(矩阵):")
print(matrix)
print("维度信息:", matrix.size())
print("轴数:", matrix.dim())
import torch
# 创建3维张量
tensor_3d = torch.tensor([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print("\n3维张量:")
print(tensor_3d)
print("维度信息:", tensor_3d.size())
print("轴数:", tensor_3d.dim())
在上面的代码中,创建了一个3维张量tensor
,它有2个维度为2x3的矩阵。通过调用size()
方法,我们可以获取张量的维度信息,返回的是一个torch.Size
对象,它是一个元组(tuple)形式的数据结构,表示各个维度的大小。在这个例子中,tensor
的维度信息是[2, 2, 3]
,表示有2个矩阵,每个矩阵的大小为2x3。通过调用dim()
方法,我们可以得到张量的轴数,这里是3。
PyTorch中的张量可以具有不同的数据类型:
torch.float32
或torch.float
:32位浮点数张量。torch.float64
或torch.double
:64位浮点数张量。torch.float16
或torch.half
:16位浮点数张量。torch.int8
:8位整数张量。torch.int16
或torch.short
:16位整数张量。torch.int32
或torch.int
:32位整数张量。torch.int64
或torch.long
:64位整数张量。torch.bool
:布尔张量,存储True或False。 在创建张量时,可以通过指定dtype
参数来设置所需的数据类型。例如,要创建一个64位浮点数张量,可以使用以下代码:
import torch
tensor = torch.tensor([1, 2, 3], dtype=torch.float64)
print(tensor)
print(tensor.dtype)
输出:
tensor([1., 2., 3.], dtype=torch.float64)
torch.float64