PAGE1
PAGE1
PyTorch基础与核心机制
在上一节中,我们介绍了PyTorch的基本安装和环境配置,确保您已经成功安装了PyTorch并能够运行简单的示例代码。接下来,我们将深入探讨PyTorch的基础概念和核心机制,这是进行二次开发的基础。本节将涵盖以下几个主要内容:
张量(Tensor)
自动求导(Autograd)
神经网络模块(nn.Module)
优化器(Optimizers)
数据加载与处理(DataLoader)
1.张量(Tensor)
张量是PyTorch中最基本的数据结构,可以看作是一个多维数组。张量在PyTorch中用于表示输入数据、模型参数和输出结果。张量具有多种属性,如形状(shape)、数据类型(dtype)和设备(device)。
1.1创建张量
创建张量有多种方法,包括从列表或NumPy数组创建、使用预定义的张量工厂函数等。
importtorch
#从列表创建张量
data=[[1,2],[3,4]]
tensor_from_list=torch.tensor(data)
print(tensor_from_list)
#使用预定义的张量工厂函数
#创建一个2x3的全零张量
zero_tensor=torch.zeros(2,3)
print(zero_tensor)
#创建一个2x3的全一张量
one_tensor=torch.ones(2,3)
print(one_tensor)
#创建一个2x3的随机张量
random_tensor=torch.rand(2,3)
print(random_tensor)
#创建一个2x3的张量,值从1到6
range_tensor=torch.arange(1,7).reshape(2,3)
print(range_tensor)
1.2张量的属性
张量的属性包括形状、数据类型和设备。这些属性可以通过张量对象的方法来获取和设置。
#获取张量的形状
shape=tensor_from_list.shape
print(fShape:{shape})
#获取张量的数据类型
dtype=tensor_from_list.dtype
print(fDataType:{dtype})
#获取张量所在的设备
device=tensor_from_list.device
print(fDevice:{device})
#将张量移动到GPU
iftorch.cuda.is_available():
tensor_on_gpu=tensor_from_list.to(cuda)
print(fTensoronGPU:{tensor_on_gpu})
1.3张量操作
张量支持各种操作,包括基本的数学运算、索引、切片、重塑等。
#基本数学运算
a=torch.tensor([1,2,3])
b=torch.tensor([4,5,6])
c=a+b
print(fa+b:{c})
#索引和切片
tensor=torch.arange(1,10).reshape(3,3)
print(fTensor:\n{tensor})
print(fFirstrow:{tensor[0]})
print(fFirstcolumn:{tensor[:,0]})
#重塑张量
reshaped_tensor=tensor.view(9)
print(fReshapedTensor:{reshaped_tensor})
#转置张量
transposed_tensor=tensor.t()
print(fTransposedTensor:\n{transposed_tensor})
1.4张量与NumPy数组的互操作
PyTorch张量和NumPy数组之间可以轻松转换,这在数据预处理和模型评估中非常有用。
importnumpyasnp
#从NumPy数组创建张量
np_array=np.array([1,2,3])
tensor_from_numpy=torch.from_numpy(np_array)
print(fTensorfromNumPy:{tensor_from_numpy})
#将张量转换为NumPy数组
tensor=torch.tensor([1,2,3])
numpy