马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 转换为张量。- import torch
- # 输入数据
- x = torch.tensor([[1.0], [2.0], [3.0], [4.0]]) # 4个样本,每个样本1个特征
- y = torch.tensor([[3.0], [5.0], [7.0], [9.0]]) # 对应的标签
复制代码 步调 2:界说模子
我们界说一个简朴的线性模子:y = wx + b,此中 w 是权重,b 是偏置。- import torch.nn as nn
- # 定义模型
- class LinearRegression(nn.Module):
- def __init__(self):
- super(LinearRegression, self).__init__()
- self.linear = nn.Linear(1, 1) # 输入1维,输出1维
- def forward(self, x):
- return self.linear(x)
- model = LinearRegression()
复制代码
- nn.Linear(1, 1) 表现一个全毗连层,输入是 1 维,输出是 1 维。
- forward 方法界说了模子的前向盘算过程。
步调 3:训练模子
训练模子的核心是通过优化算法调解模子参数(w 和 b),使得模子的推测结果尽大概靠近真实值。- # 定义损失函数和优化器
- criterion = nn.MSELoss() # 均方误差损失
- optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降
- # 训练过程
- for epoch in range(100): # 训练100轮
- # 前向传播:计算预测值
- y_pred = model(x)
- # 计算损失
- loss = criterion(y_pred, y)
- # 反向传播:计算梯度
- loss.backward()
- # 更新参数
- optimizer.step()
- # 清空梯度
- optimizer.zero_grad()
- # 打印损失
- if (epoch+1) % 10 == 0:
- print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
复制代码
- 丧失函数:衡量模子推测值与真实值的差距。
- 优化器:根据梯度更新模子参数。
- 反向流传:PyTorch 的 autograd 自动盘算梯度。
步调 4:评估模子
训练完成后,我们可以用模子对新数据做出推测。- # 测试模型
- x_test = torch.tensor([[5.0]]) # 新数据
- y_test = model(x_test)
- print(f'预测值: {y_test.item()}') # 应该接近 11.0
复制代码 步调 5:使用模子
训练好的模子可以生存下来,供后续使用。- # 保存模型
- torch.save(model.state_dict(), 'linear_regression.pth')
- # 加载模型
- 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 的上风:动态盘算图、易用性强、社区活泼,得当研究和快速原型开发。
|