PyTorch 是怎样举行呆板学习的

[复制链接]
发表于 2025-10-26 11:55:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. 呆板学习的核心流程

呆板学习的核心是通过数据训练模子,让模子学会从输入数据中提取规律,并对新数据做出推测。整个过程可以分为以下几个步调:

  •         准备数据:网络并整理数据,分为输入(特性)和输出(标签)。
  •         界说模子:计划一个模子布局(好比神经网络),用来学习数据中的规律。
  •         训练模子:通过优化算法(如梯度降落)调解模子参数,让模子的推测结果越来越靠近真实值。
  •         评估模子:用测试数据查抄模子的性能。
  •         使用模子:用训练好的模子对新数据做出推测。

2. PyTorch 的作用

PyTorch 是一个深度学习框架,它资助我们高效地完成上述流程。具体来说,PyTorch 提供了以下核心功能:

  •         张量(Tensor):类似于 NumPy 的数组,但支持 GPU 加快。
  •         自动求导(Autograd):自动盘算梯度,用于优化模子参数。
  •         神经网络模块(nn.Module):提供预界说的层(如全毗连层、卷积层)和丧失函数。
  •         优化器(Optimizer):实现梯度降落等优化算法。

3. 用 PyTorch 实现呆板学习的步调

我们用一个简朴的线性回归标题来阐明 PyTorch 是怎样工作的。
标题形貌

假设我们有一组数据:y = 2x + 1,此中 x 是输入,y 是输出。我们的目的是让模子学会这个规律。

步调 1:准备数据

PyTorch 使用 张量(Tensor) 来存储数据。我们可以将输入 x 和输出 y 转换为张量。
  1. import torch
  2. # 输入数据
  3. x = torch.tensor([[1.0], [2.0], [3.0], [4.0]])  # 4个样本,每个样本1个特征
  4. y = torch.tensor([[3.0], [5.0], [7.0], [9.0]])  # 对应的标签
复制代码

步调 2:界说模子

我们界说一个简朴的线性模子:y = wx + b,此中 w 是权重,b 是偏置。
  1. import torch.nn as nn
  2. # 定义模型
  3. class LinearRegression(nn.Module):
  4.     def __init__(self):
  5.         super(LinearRegression, self).__init__()
  6.         self.linear = nn.Linear(1, 1)  # 输入1维,输出1维
  7.     def forward(self, x):
  8.         return self.linear(x)
  9. model = LinearRegression()
复制代码

  •         nn.Linear(1, 1) 表现一个全毗连层,输入是 1 维,输出是 1 维。
  •         forward 方法界说了模子的前向盘算过程。

步调 3:训练模子

训练模子的核心是通过优化算法调解模子参数(w 和 b),使得模子的推测结果尽大概靠近真实值。
  1. # 定义损失函数和优化器
  2. criterion = nn.MSELoss()  # 均方误差损失
  3. optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降
  4. # 训练过程
  5. for epoch in range(100):  # 训练100轮
  6.     # 前向传播:计算预测值
  7.     y_pred = model(x)
  8.     # 计算损失
  9.     loss = criterion(y_pred, y)
  10.     # 反向传播:计算梯度
  11.     loss.backward()
  12.     # 更新参数
  13.     optimizer.step()
  14.     # 清空梯度
  15.     optimizer.zero_grad()
  16.     # 打印损失
  17.     if (epoch+1) % 10 == 0:
  18.         print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
复制代码

  •         丧失函数:衡量模子推测值与真实值的差距。
  •         优化器:根据梯度更新模子参数。
  •         反向流传:PyTorch 的 autograd 自动盘算梯度。

步调 4:评估模子

训练完成后,我们可以用模子对新数据做出推测。
  1. # 测试模型
  2. x_test = torch.tensor([[5.0]])  # 新数据
  3. y_test = model(x_test)
  4. print(f'预测值: {y_test.item()}')  # 应该接近 11.0
复制代码

步调 5:使用模子

训练好的模子可以生存下来,供后续使用。
  1. # 保存模型
  2. torch.save(model.state_dict(), 'linear_regression.pth')
  3. # 加载模型
  4. model.load_state_dict(torch.load('linear_regression.pth'))
复制代码

4. PyTorch 的核心原理


  •         张量(Tensor)

    •                 是 PyTorch 的根本数据布局,支持 GPU 加快。
    •                 类似于 NumPy 的数组,但多了自动求导功能。
           
  •         自动求导(Autograd)

    •                 PyTorch 的 autograd 模块会自动盘算梯度。
    •                 通过 loss.backward(),PyTorch 会从丧失函数开始,反向流传盘算每个参数的梯度。
           
  •         神经网络模块(nn.Module)

    •                 提供了预界说的层(如全毗连层、卷积层)和丧失函数。
    •                 用户可以通过继续 nn.Module 自界说模子。
           
  •         优化器(Optimizer)

    •                 实现了梯度降落等优化算法。
    •                 通过 optimizer.step() 更新模子参数。
           

5. 总结


  •         PyTorch 的核心:通过张量、自动求导、神经网络模块和优化器,资助我们高效地实现呆板学习。
  •         呆板学习流程:准备数据 → 界说模子 → 训练模子 → 评估模子 → 使用模子。
  •         PyTorch 的上风:动态盘算图、易用性强、社区活泼,得当研究和快速原型开发。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表