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

高品质的佛山网站建设柳州市网站建设公司

高品质的佛山网站建设,柳州市网站建设公司,免费做文字图网站,2016做砸了的小网站文章目录 一、理论知识二、代码实现2.1从零开始实现2.2简洁实现 【相关总结】 主要解决过拟合 一、理论知识 1、使用均方范数作为硬性限制(不常用) 通过限制参数值的选择范围来控制模型容量 通常不限制偏移b 小的意味着更强的正则项 使用均方范数作为柔…

文章目录

  • 一、理论知识
  • 二、代码实现
    • 2.1从零开始实现
    • 2.2简洁实现
  • 【相关总结】

主要解决过拟合

一、理论知识

1、使用均方范数作为硬性限制(不常用)
通过限制参数值的选择范围来控制模型容量
在这里插入图片描述
通常不限制偏移b
小的在这里插入图片描述意味着更强的正则项
使用均方范数作为柔性限制
对于每个在这里插入图片描述都可以找到在这里插入图片描述使得之前的目标函数等价于下面的:
在这里插入图片描述

可以通过拉格朗日乘子来证明
超参数在这里插入图片描述控制了正则项的重要程度

在这里插入图片描述
在这里插入图片描述
参数更新法则
在这里插入图片描述
总结:

  • 权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度
  • 正则项权重是控制模型复杂度的超参数

二、代码实现

权重衰减是最广泛使用的正则化技术之一
1.首先,人工生成数据
在这里插入图片描述
我们选择标签是关于输入的线性函数。 标签同时被均值为0,标准差为0.01高斯噪声破坏。 为了使过拟合的效果更加明显,我们可以将问题的维数增加到, 并使用一个只包含20个样本的小训练集。

%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l
n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
# print(torch.ones((num_inputs, 1)))
# print(true_w)
train_data = d2l.synthetic_data(true_w, true_b, n_train)
train_iter = d2l.load_array(train_data, batch_size)
# print(train_iter)
test_data = d2l.synthetic_data(true_w, true_b, n_test)
test_iter = d2l.load_array(test_data, batch_size, is_train=False)

2.1从零开始实现

只需将的平方惩罚添加到原始目标函数中。

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

定义L2范数惩罚

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

定义训练代码

def train(lambd):w,b = init_params()net, loss = lambda X: d2l.linreg(X, w, b), d2l.squared_lossnum_epochs, lr = 100, 0.003animator = d2l.Animator(xlabel='epochs', ylabel='loss', yscale='log',xlim=[5,num_epochs], legend=['train', 'test'])for epoch in range(num_epochs):for X, y in train_iter:
#             增加了L2范数惩罚项
# 广播机制使l2_penalty(w)成为一个长度为torch_size的向量l = loss(net(X), y) + lambd * 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('w的L2范数是:',torch.norm(w).item())

忽略正则化直接训练
用lambd = 0禁用权重衰减

train(lambd=0)

w的L2范数是: 13.702591896057129
在这里插入图片描述
使用权重衰退

train(lambd=3)

w的L2范数是: 0.36873573064804077
在这里插入图片描述

2.2简洁实现

在实例化优化器时直接通过weight_decay指定weight decay超参数

def train_concise(wd):net = nn.Sequential(nn.Linear(num_inputs, 1))for param in net.parameters():param.data.normal_()loss = nn.MSELoss(reduction='none')num_epochs, lr = 100, 0.003# 偏置参数没有衰减trainer = torch.optim.SGD([{"params":net[0].weight,'weight_decay': wd},{"params":net[0].bias}], lr=lr)animator = d2l.Animator(xlabel='epochs', ylabel='loss', yscale='log',xlim=[5, num_epochs], legend=['train', 'test'])for epoch in range(num_epochs):for X, y in train_iter:trainer.zero_grad()l = loss(net(X), y)l.mean().backward()trainer.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('w的L2范数:', net[0].weight.norm().item())
train_concise(0)

w的L2范数: 12.619434356689453
在这里插入图片描述

train_concise(3)

w的L2范数: 0.3909929692745209
在这里插入图片描述

【相关总结】

http://www.yayakq.cn/news/954993/

相关文章:

  • 申请网站价格php 茶叶网站建设
  • 网站系统使用说明书免费ppt模版网站
  • 雄安移动网站建一个网站首先要怎么做
  • 淘宝装修免费模板有哪些网站无锡品牌网站建设介绍
  • 软件网站建设基本流程图微信营销
  • 浙江网站设计公司构建一个网站
  • 深圳企业企业网站建设wap是什么意思?
  • 宿州网站建设推广wordpress门户加商城
  • 临沂做网站的公司哪里有网站怎么做sem优化
  • 移动门户网站建设特点新手初做网站
  • 网站建设微信商城运营图书网站开发的实践意义
  • 网站攻击一般有那些erp软件是干嘛的
  • 县级门户网站用什么源码好襄阳谷城网站建设
  • 网站建设综合技术微网站建设使用程序
  • 怎么做专题网站网站备案 个人 单位
  • 公司有网站域名后如何建网站手机网站加百度地图
  • 公司改名网站备案网站建设每天的工作
  • 龙泉做网站哪家好蛋糕磨具网站开发背景
  • 昆山建设投标网站WordPress美图主题
  • 建网站 pdf中国室内装饰设计网
  • 免费做app网站做ppt的软件模板下载网站
  • 建网站相关知识t型布局网站的样子
  • 做网站除了域名还需要什么哪里买到纯净网站模板
  • 制作公司网站怎样收费官网网页制作
  • 网站提供商建设银行网上营业厅
  • 网站建设推广机构平板怎么做网页
  • 广东湛江免费做网站响应式网站开发有哪些框架
  • 职业生涯规划大赛的目的长沙关键词优化新行情报价
  • 响应式网站开发技术wordpress访问太慢
  • 手机网站建设渠道李连杰做的功夫网站