李沐动手学深度学习Pytorch-v2笔记【08线性回归+基础优化算法】2

文章目录

线性回归的简介实现

通过使用深度学习框架来简洁实现 线性回归模型 生成数据集

python 复制代码
import torch
import numpy as np
from torch.utils import data
from d2l import torch as d2l

true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = d2l.synthetic_data(true_w, true_b, 1000)
python 复制代码
def load_array(data_arrays, batch_size, is_train = True):
	"构造一个Pytorch数据迭代器"
	dataset = data.TensorDataset(*data_arrays)
	return data.DataLoader(dataset, batch_size, shuffle = is_train)
batch_size = 10
data_iter = load_array((features, labels),batch_size)

next(iter(data_iter))

data.TensorDataset :是 PyTorch 提供的一个类,用于将多个张量封装为一个数据集。
data_arrays :是解包操作,假设 data_arrays 是 (features, labels),则等价于 data.TensorDataset(features, labels)。
DataLoader:提供批次加载、数据打乱和多线程支持。
next(iter(data_iter)):
iter(data_iter) 将 DataLoader 转换为迭代器。
next() 获取下一个批次(第一次调用时是第一批数据)。

使用框架的预定好的层

python 复制代码
#"nn"是神经网络的缩写
from torch import nn

net = nn.Sequential(nn.Linear(2, 1))

初始化模型参数

python 复制代码
net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)


_:表示写入
normal : 表示正态分布

计算均方误差使用的是MESLoss类也称平方范数

python 复制代码
loss = nn.MSELoss()

实例化SGD示实例:

python 复制代码
trainer = torch.optim.SGD(net.parameters(),lr = 0.03)

torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)

params(必须参数): 这是一个包含了需要优化的参数(张量)的迭代器,例如模型的参数 model.parameters()。

lr(必须参数): 学习率(learning rate)。它是一个正数,控制每次参数更新的步长。较小的学习率会导致收敛较慢,较大的学习率可能导致震荡或无法收敛。

momentum(默认值为 0): 动量(momentum)是一个用于加速 SGD 收敛的参数。它引入了上一步梯度的指数加权平均。通常设置在 0 到 1 之间。当 momentum 大于 0 时,算法在更新时会考虑之前的梯度,有助于加速收敛。

dampening(默认值为 0): 阻尼项,用于减缓动量的速度。在某些情况下,为了防止动量项引起的震荡,可以设置一个小的 dampening 值。

weight_decay(默认值为 0): 权重衰减,也称为 L2 正则化项。它用于控制参数的幅度,以防止过拟合。通常设置为一个小的正数。

nesterov(默认值为 False): Nesterov 动量。当设置为 True 时,采用 Nesterov 动量更新规则。Nesterov 动量在梯度更新之前先进行一次预测,然后在计算梯度更新时使用这个预测。

训练过程

python 复制代码
num_epochs = 3
for epoch in rangepochs:
	for X, y in data_iter:
		l = loss(net(X), y)
		trainer.zero_grad()
		l.backward()
		train_step()
	l = loss(net(features), labels)
	print(f'epoch {epoch + 1}, loss {1:f}')
相关推荐
qq_252941316840 分钟前
日本道路病害检测数据集 | 道路病害 裂缝检测 坑洼识别 市政巡检9287期
人工智能·深度学习·yolo·目标检测·计算机视觉·道路检测
Qianxueban1 小时前
如果卷积核大小固定,步长固定,那经过i次卷积,它一个像素的感受野是多大?
人工智能·深度学习·计算机视觉
计算机毕业编程指导师2 小时前
基于深度学习的光伏组件红外图像缺陷识别系统设计与实现
人工智能·python·深度学习·目标检测·毕业设计·课程设计·光伏
田里的水稻3 小时前
FA_CNN卷积神经网络二十四---层\块\参数管理PyTorch
人工智能·pytorch·cnn
AiNightVision3 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3334 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君6585 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
johnsong5 小时前
AI前沿日报 | 2026-11-03 — 基因突变:当AI开始重写神经网络
人工智能·深度学习·神经网络
kaixin_啊啊5 小时前
【零基础学AI】第 23 章——用神经网络识别图片
人工智能·深度学习·神经网络
JJJennie7775 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai