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

phpmysql动态网站开发从基础到实践百度官方客户端

phpmysql动态网站开发从基础到实践,百度官方客户端,桂林刚刚发生的事,美妆网站建设环境分析一、权重衰退原理 权重衰退(L2正则化)通过向损失函数添加权重的L2范数惩罚项,防止模型过拟合。其损失函数形式为: 二、从零开始实现 1.1 导入库与数据生成 %matplotlib inline import torch from torch import nn from d2l imp…

一、权重衰退原理

权重衰退(L2正则化)通过向损失函数添加权重的L2范数惩罚项,防止模型过拟合。其损失函数形式为:


二、从零开始实现

1.1 导入库与数据生成

%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l# 超参数设置
train_samples, test_samples, inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((inputs, 1)) * 0.01, 0.05# 生成合成数据
train_data = d2l.synthetic_data(true_w, true_b, train_samples)
train_iter = d2l.load_array(train_data, batch_size)
test_data = d2l.synthetic_data(true_w, true_b, test_samples)
test_iter = d2l.load_array(test_data, batch_size)

1.2 模型参数初始化

def init_params():w = torch.normal(0, 1, size=(inputs, 1), requires_grad=True)b = torch.zeros(1, requires_grad=True)return [w, b]

1.3 定义L2正则化

def l2_penalty(w):return torch.sum(w**2) / 2

1.4 训练函数

def train(l):w, b = init_params()net = lambda x: d2l.linreg(x, w, b)loss = d2l.squared_lossepochs, lr = 100, 0.03animator = d2l.Animator(xlabel='epoch', ylabel='loss', yscale='log',xlim=[5, epochs], legend=['train', 'test'])for epoch in range(epochs):for X, y in train_iter:l_ = loss(net(X), y) + l * l2_penalty(w)l_.sum().backward()d2l.sgd([w, b], lr, batch_size)if (epoch + 1) % 5 == 0:animator.add(epoch + 1, (d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))print(f"w的L2范数: {torch.norm(w).item():.5f}")

1.5 训练结果

不使用权重衰退(λ=0)
train(l=0)

输出结果

w的L2范数: 13.72006

使用权重衰退(λ=3) 
train(lambd=3)

输出结果

w的L2范数: 0.0426

2. PyTorch简洁实现

2.1 定义模型与训练

def train_concise(lambd):net = nn.Sequential(nn.Linear(inputs, 1))for param in net.parameters():param.data.normal_()loss = nn.MSELoss()optimizer = torch.optim.SGD([{"params": net[0].weight, "weight_decay": lambd},{"params": net[0].bias}], lr=0.03)animator = d2l.Animator(xlabel='epoch', ylabel='loss', yscale='log',xlim=[5, 100], legend=['train', 'test'])for epoch in range(100):for X, y in train_iter:optimizer.zero_grad()l = loss(net(X), y)l.backward()optimizer.step()if (epoch + 1) % 5 == 0:animator.add(epoch + 1, (d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))print(f"w的L2范数: {torch.norm(net[0].weight).item():.4f}")

2.2 训练结果

不使用权重衰退(λ=0)
train_concise(0)

输出结果

w的L2范数: 14.3265

使用权重衰退(λ=3) 
train_concise(3)

输出结果

w的L2范数: 0.0528

关键点解析

  1. L2正则化:通过向损失函数添加权重的平方和项(λ * ||w||^2),限制权重的大小,防止过拟合。

  2. 参数对比

    • 无正则化时,权重范数较大(13.72),模型可能过拟合。

    • 加入正则化后,权重范数显著降低(0.04),模型更稳定。

  3. 损失曲线:正则化后测试损失与训练损失更接近,表明泛化能力提升。


常见错误解决

在简洁实现中,若出现 TypeError: 'function' object is not iterable,请检查:

  1. evaluate_loss 的参数是否正确传递数据迭代器(如 train_iter 而非 train)。

  2. 确保数据加载器已正确定义。


通过本文,读者可以掌握权重衰退的核心思想,并学会在PyTorch中实现正则化方法。完整代码已通过测试,可直接运行。

http://www.dtcms.com/wzjs/183748.html

相关文章:

  • 做网站找客户seo网络推广课程
  • 新闻网站建设的原因谷歌seo建站
  • 苏州做网站公司有哪些seo全称是什么
  • 深圳网站设计公司怎么找百度下载软件
  • 网站页面设计尺寸地推任务网
  • 网页在线客服系统源码百度搜索关键词排名优化推广
  • 12306的网站是哪个公司做的企业网站建设优化
  • 旅游类网站模板最好最全的搜索引擎
  • 做网站模板广州营销推广
  • 防水网站的外链如何找企业网络营销的模式有哪些
  • 龙华区网站建设网站seo在线优化
  • 建论坛型网站360推广客服电话是多少
  • 贵州省城乡与建设厅网站关键字排名优化工具
  • 中国建筑网官网二测时间微信小程序排名关键词优化
  • 有什么网站可以做logo赚钱网络推广方式有哪几种
  • 网站开发需要什么软件新手怎么做销售
  • 公司网站后台打不开什么是网络营销?
  • 网站开发有前途吗关键词林俊杰mp3在线听
  • 福州网站建设多少钱关键词爱站网关键词挖掘工具
  • 用php做的网站实例网站之家
  • 消防设备网站建设班级优化大师使用心得
  • javamysql做网站网站怎么做的
  • 青海论坛网站建设玉溪seo
  • 建设网站几种方法做网络推广有前途吗
  • 专业网站建设哪家便宜宁波seo教程推广平台
  • 哪里可以免费发广告网站推广优化排名教程
  • 上传wordpress后无法安装seo推广代运营
  • 柳州做网站百度关键词推广一年多少钱
  • 我国网站开发成都网站关键词排名
  • 深圳网络推广建站零基础学什么技术好