目录
一、前言
二、实验环境
三、PyTorch数据结构
0、分类
1、张量(Tensor)
2、张量操作(Tensor Operations)
1. 数学运算
a. 基本运算
b. 向量运算
向量加法
向量乘法
内积计算(Dot Product)
叉积(Cross Product)
范数计算(Norm Calculation)
c. 矩阵运算
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.5502https://blog.csdn.net/m0_63834988/article/details/128841527?spm=1001.2014.3001.5502
【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量):维度(Dimensions)、数据类型(Data Types)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132909219?spm=1001.2014.3001.5501https://blog.csdn.net/m0_63834988/article/details/132909219?spm=1001.2014.3001.5501
PyTorch提供了丰富的操作函数,用于对Tensor进行各种操作,如数学运算、统计计算、张量变形、索引和切片等。这些操作函数能够高效地利用GPU进行并行计算,加速模型训练过程。
张量的加法、减法、乘法和除法等运算可以应用于两个或多个张量,对应元素进行逐个运算。
import torch
tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])
# 加法
result_add = tensor1 + tensor2
print("加法结果:", result_add) # 输出: tensor([5, 7, 9])
# 减法
result_sub = tensor1 - tensor2
print("减法结果:", result_sub) # 输出: tensor([-3, -3, -3])
# 乘法
result_mul = tensor1 * tensor2
print("乘法结果:", result_mul) # 输出: tensor([4, 10, 18])
# 除法
result_div = tensor1 / tensor2
print("除法结果:", result_div) # 输出: tensor([0.2500, 0.4000, 0.5000])
import torch
# 创建两个向量
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 向量相加
result = torch.add(vector1, vector2)
# 打印结果
print(result)
输出:
tensor([5, 7, 9])
import torch
# 创建两个向量
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 向量相乘
result = torch.mul(vector1, vector2)
# 打印结果
print(result)
输出:
tensor([ 4, 10, 18])
import torch
# 创建两个向量
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 计算内积
result = torch.dot(vector1, vector2)
# 打印结果
print(result)
输出:
tensor(32)
import torch
# 创建两个向量
vector1 = torch.tensor([1, 0, 0])
vector2 = torch.tensor([0, 1, 0])
# 计算叉积
cross_product = torch.cross(vector1, vector2)
# 打印结果
print(cross_product)
输出:
tensor([0, 0, 1])
import torch
# 创建一个向量
vector = torch.tensor([1, 2, 3, 4, 5])
# 计算范数
norm = torch.norm(vector)
# 打印结果
print(norm)
输出:
tensor(7.4162)
矩阵运算包括矩阵乘法、转置、逆矩阵等操作,这些操作可以用来解决线性方程组、求特征值等问题。
import torch
# 创建两个矩阵
matrix1 = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
matrix2 = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
# 矩阵乘法
matrix_product = torch.matmul(matrix1, matrix2)
print("矩阵乘法结果:")
print(matrix_product.numpy()) # 输出: [[19 22]
# [43 50]]
# 转置
matrix_transpose = torch.transpose(matrix1, 0, 1)
print("矩阵转置结果:")
print(matrix_transpose.numpy()) # 输出: [[1 3]
# [2 4]]
# 逆矩阵
matrix_inverse = torch.inverse(matrix1)
print("矩阵逆结果:")
print(matrix_inverse.numpy()) # 输出: [[-2.0000002 1.0000001 ]
# [ 1.5000001 -0.50000006]]