【动手学深度学习】--09.PyTorch神经网络基础
发布人:shili8
发布时间:2025-01-13 11:38
阅读次数:0
**PyTorch神经网络基础**
在前面的章节中,我们已经了解了什么是深度学习,以及如何使用PyTorch进行基本的计算。现在,它是时候来探索PyTorch神经网络的基础。
###1. PyTorch中的Tensor在PyTorch中,Tensor是最基本的数据结构。它可以看作是一个多维数组,可以存储数字、浮点数等类型的数据。
import torch# 创建一个一维Tensortensor = torch.tensor([1,2,3]) print(tensor) # 创建一个二维Tensortensor = torch.tensor([[1,2], [3,4]]) print(tensor)
###2. PyTorch中的AutogradPyTorch的Autograd是用于计算梯度的机制。它可以自动计算神经网络中每个参数的梯度。
import torchimport torch.autograd as autograd# 创建一个Tensortensor = torch.tensor([1,2], requires_grad=True) # 对Tensor进行操作result = tensor **2# 计算梯度result.backward() print(tensor.grad)
###3. PyTorch中的ModulePyTorch的Module是用于构建神经网络模型的类。它可以包含多个层,包括线性层、激活函数等。
import torch.nn as nn# 创建一个线性层linear = nn.Linear(5,3) # 创建一个激活函数relu = nn.ReLU() # 将层和激活函数组合起来model = nn.Sequential( linear, relu, linear, relu)
###4. PyTorch中的Loss FunctionPyTorch的Loss Function是用于计算损失的函数。它可以根据预测值和真实值来计算损失。
import torch.nn as nn# 创建一个交叉熵损失函数criterion = nn.CrossEntropyLoss() # 计算损失loss = criterion(torch.tensor([0.5,0.5]), torch.tensor([1])) print(loss)
###5. PyTorch中的OptimizerPyTorch的Optimizer是用于更新模型参数的类。它可以根据损失值来更新参数。
import torch.optim as optim# 创建一个随机梯度下降优化器optimizer = optim.SGD(model.parameters(), lr=0.01) # 更新模型参数optimizer.zero_grad() loss.backward() optimizer.step()
###6. PyTorch中的Training LoopPyTorch的Training Loop是用于训练模型的循环。它可以根据损失值来更新模型参数。
import torch.optim as optim# 创建一个随机梯度下降优化器optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型for epoch in range(10): optimizer.zero_grad() output = model(input) loss = criterion(output, target) loss.backward() optimizer.step()
###7. PyTorch中的Evaluation LoopPyTorch的Evaluation Loop是用于评估模型的循环。它可以根据损失值来评估模型。
import torch.optim as optim# 创建一个随机梯度下降优化器optimizer = optim.SGD(model.parameters(), lr=0.01) #评估模型for epoch in range(10): optimizer.zero_grad() output = model(input) loss = criterion(output, target) loss.backward() optimizer.step() #评估模型 eval_loss =0 for i in range(len(eval_input)): output = model(eval_input[i]) loss = criterion(output, eval_target[i]) eval_loss += loss.item() print(f'Epoch {epoch+1}, Eval Loss: {eval_loss / len(eval_input)}')
以上就是PyTorch神经网络基础的内容。通过这些例子和注释,你应该能够理解如何使用PyTorch进行基本的计算、训练模型和评估模型。