2. 深度学习的项目流程(批量化打包数据、构建模型、训练模型、波士顿房价预测、激活函数、多层感知机)

原文链接:https://blog.youkuaiyun.com/Deadwalk/article/details/139649117?spm=1001.2014.3001.5502

1. 深度学习基本流程

1.1 流程图

  • 由于训练的本质就是求loss函数的最小值;所以,我们类比求 y = 2 x 2 y = 2x^2 y=2x2 最小值的过程,来看一下线性回归训练(也就是求loss最小值)的过程,其流程如下:
    在这里插入图片描述

1.2 代码实现

import torch
import torch.nn as nn
import torch.optim as optim

# 生成模拟数据
torch.manual_seed(42)
x_train = torch.randn(100, 13)  # 100个样本,每个样本有13个特征
y_train = torch.randn(100, 1)   # 每个样本对应一个输出值

# 定义模型
model = nn.Linear(13, 1)  # 输入特征数为13,输出特征数为1

# 初始化优化器
criterion = nn.MSELoss()  # 均方误差损失
optimizer = optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降优化器

# 迭代次数和学习率
epochs = 1000
learning_rate = 1e-2

# 使用 PyTorch 进行梯度下降
for _ in range(epochs):
    optimizer.zero_grad()  # 梯度清零

    outputs = model(x_train)  # 正向传播
    loss = criterion(outputs, y_train)  # 计算损失
    loss.backward()  # 反向传播
    optimizer.step()  # 更新参数

# 输出最终模型参数
print("线性回归模型的权重:", model.weight)
print("线性回归模型的偏置:", model.bias)

1.3 基本概念

  • 模型 model
    • 前向传播:把特征 X 带入模型 model ,得到预测结果 y_pred
      • 训练时:自动在底层构建计算图(把正向传播的流程记录下来,方便进行后续的分布求导/链式求导
      • 例如:在导数中,对于一个复合函数 h ( g ( f ( x ) ) ) h( g( f(x))) h(g(f(x))) ,我们需要进行链式求导,即 h ( g ( f ( x ) ) ) = f ′ ∗ g ′ ∗ h ′ h( g( f(x))) = f' * g' * h' h(g(f(x)))=fgh
    • 反向传播:本质是计算每个参数的梯度,是通过损失函数发起的
    • 模型的作用:只负责前向传播 forward,不负责后向传播 backward
  • 训练流程
    1. 从训练集中,取一批 batch 样本 (x, y)
    2. 把样本特征 X 送入模型 model,得到预测结果 y_pred
    3. 计算损失函数 loss = f(y_pred, y),计算当前的误差 loss
    4. 通过 loss , 反向传播,计算每个参数 (w, b) 的梯度
    5. 利用优化器 optimizer ,通过梯度下降法,更新参数
    6. 利用优化器 optimizer 清空参数的梯度
    7. 重复1-6 直至迭代结束(各项指标满足
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值