PyTorch 入门

2025-06-18 14:04 更新

PyTorch 简介

PyTorch 是一个开源的机器学习库,它具有强大的 GPU 加速功能,方便用户进行深度学习模型的构建和优化,被广泛应用于计算机视觉、自然语言处理等领域。

PyTorch 的安装

在开始学习 PyTorch 之前,需要先安装它。用户可以通过编程狮(W3Cschool)网站查看详细的安装步骤,并根据自己的操作系统和 Python 版本来选择合适的安装方式。

PyTorch 的核心概念

  • 张量(Tensor) :类似于 NumPy 的多维数组,不同的是 PyTorch 的张量可以利用 GPU 加速计算。例如:

import torch


x = torch.tensor([1, 2, 3])  # 创建一个一维张量
y = torch.tensor([[4, 5], [6, 7]])  # 创建一个二维张量

  • 自动求导(Autograd) :PyTorch 的自动求导功能可以自动计算张量的梯度,这对于神经网络的训练至关重要。在张量上调用 .backward() 方法可以计算梯度;使用 torch.no_grad() 可以停止梯度追踪。

x = torch.ones(2, 2, requires_grad=True)
y = x * 3
y.backward(torch.ones_like(x))
print(x.grad)

构建神经网络

  • 定义网络结构 :使用 torch.nn.Module 来定义神经网络的结构。例如,构建一个简单的全连接神经网络:

import torch
import torch.nn as nn


class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(4, 10)  # 输入层到隐藏层的连接,输入维度为4,输出维度为10
        self.fc2 = nn.Linear(10, 4)  # 隐藏层到输出层的连接,输入维度为10,输出维度为4
        self.relu = nn.ReLU()  # 激活函数


    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x


net = Net()

  • 定义损失函数和优化器 :选择合适的损失函数和优化器对于模型的训练效果至关重要。常见的损失函数有均方误差损失(MSELoss)、交叉熵损失(CrossEntropyLoss)等;常用的优化器有随机梯度下降(SGD)、Adam 等。

criterion = nn.MSELoss()  # 定义均方误差损失函数
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)  # 定义随机梯度下降优化器,学习率为0.01

  • 训练网络 :使用训练数据对网络进行训练,通过前向传播计算输出,计算损失函数的值,然后进行反向传播更新网络的参数。

for epoch in range(1000):  # 训练1000个周期
    optimizer.zero_grad()  # 清空梯度
    output = net(x_data)  # 前向传播
    loss = criterion(output, y_data)  # 计算损失
    loss.backward()  # 反向传播
    optimizer.step()  # 更新参数


    if epoch % 100 == 99:  # 每100个周期打印一次损失
        print('Epoch: {}, Loss: {}'.format(epoch+1, loss.item()))

PyTorch 的优势

PyTorch 具有动态计算图的特点,这使得它在网络结构的构建和调试方面更加灵活方便。此外,PyTorch 的社区非常活跃,有大量的开源项目和教程可供学习和参考,例如在编程狮(W3Cschool)网站上就有很多优秀的 PyTorch 教程。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号