当前位置: 首页 > ai >正文

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

文章目录

    • 线性回归的简介实现
      • **通过使用深度学习框架来简洁实现 线性回归模型 生成数据集**
      • **使用框架的预定好的层**
      • **初始化模型参数**
      • **计算均方误差使用的是MESLoss类也称平方范数**
      • **实例化SGD示实例**:
      • **训练过程**

线性回归的简介实现

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

import torch
import numpy as np
from torch.utils import data
from d2l import torch as d2ltrue_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = d2l.synthetic_data(true_w, true_b, 1000)
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() 获取下一个批次(第一次调用时是第一批数据)。

使用框架的预定好的层

#"nn"是神经网络的缩写
from torch import nnnet = nn.Sequential(nn.Linear(2, 1))

初始化模型参数

net[0].weight.data.normal_(0, 0.01)
net[0].bias.data.fill_(0)

在这里插入图片描述
_:表示写入
normal : 表示正态分布

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

loss = nn.MSELoss()

在这里插入图片描述

实例化SGD示实例

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 收敛的参数。它引入了上一步梯度的指数加权平均。通常设置在 01 之间。当 momentum 大于 0 时,算法在更新时会考虑之前的梯度,有助于加速收敛。

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

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

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

训练过程

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}')

在这里插入图片描述

http://www.xdnf.cn/news/15333.html

相关文章:

  • PHP password_hash() 函数
  • Excel常用快捷键与功能整理
  • 当 `conda list` 里出现两个 pip:一步步拆解并卸载冲突包
  • 【时时三省】(C语言基础)用数组名作函数参数
  • MFC中BOOL类型,在某些操作系统中,-1不能被识别,一般是哪些原因?
  • C++-linux 7.文件IO(二)文件描述符、阻塞与非阻塞
  • 招投标——环保大数据平台售后服务计划
  • 现代数据平台能力地图:如何构建未来数据平台的核心能力体系
  • Spark 之 like 表达式
  • uni-app开发的页面跳转全局加载中
  • QT——信号与槽
  • git 访问 github
  • 《恋与深空》中黑白羽毛是谁的代表物?
  • python+Request提取cookie
  • ubuntu22.04下配置qt5.15.17开发环境
  • Elasticsearch9.x核心架构概述
  • 机器学习、深度学习、神经网络之间的关系
  • 多租户云环境下的隔离性保障:虚拟化、容器、安全组如何协同防护?
  • 高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server
  • Redis技术笔记-主从复制、哨兵与持久化实战指南
  • 工业场合需要千变万化的模拟信号,如何获取?
  • Servlet基础
  • priority_queue的使用和模拟实现以及仿函数
  • FatJar打包和FatJar启动配置文件修改。
  • 对偶原理与蕴含定理
  • [论文阅读] 人工智能 + 软件工程 | 用大语言模型+排名机制,让代码评论自动更新更靠谱
  • Ubuntu22.04 python环境管理
  • 深度解析:htmlspecialchars 与 nl2br 结合使用的前后端协作之道,大学毕业论文——仙盟创梦IDE
  • nginx:SSL_CTX_use_PrivateKey failed
  • 【HTTP版本演变】