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

北京网站设计工资多少网页美工设计流程的正确排序

北京网站设计工资多少,网页美工设计流程的正确排序,网站功能模块 分析,wordpress文件大小一、概念介绍 权重衰减#xff08;Weight Decay#xff09;是一种常用的正则化技术#xff0c;它通过在损失函数中添加一个惩罚项来限制模型的复杂度#xff0c;从而防止过拟合。 在训练参数化机器学习模型时#xff0c; 权重衰减#xff08;weight decay#xff09;是…一、概念介绍 权重衰减Weight Decay是一种常用的正则化技术它通过在损失函数中添加一个惩罚项来限制模型的复杂度从而防止过拟合。  在训练参数化机器学习模型时 权重衰减weight decay是最广泛使用的正则化的技术之一 它通常也被称为L2正则化。 1.1理解 权重衰减weight_decay本质上是一个L2正则化系数 那什么是参数的正则化从我的理解上就是让参数限定在一定范围目的是为了不让模型对训练集过拟合。 注应对过拟合最好的方法还是扩大有效样本但成本过高 1.2如何控制模型容量 1.将模型变得比较小减少里面参数的数量 2.缩小参数的取值范围 注权重衰退就是通过限制参数的取值来实现 1.3硬性限制 即使得w的每个项的平方都小于θ这个值最强情况下就是θ等于0即所有w都等于0 1.4柔性限制 即损失函数后面加了一个非负项为了使损失函数最小化就得使得后面项足够小——起到限制w的作用相比于硬性限制柔性限制并没有将w的值限制在一个固定范围内。 1.5图解对最优解的影响 上式为不加限制条件的最优解即图中的绿色中心点但该点会使得||w||^2这一项较大其和并不是最优解。 而加上限制的最优点即为图中两曲线的交叉点 1.6更新参数法则 1.7总结 ~权重衰减是通过L2正则项使得模型参数不会过大从而控制复杂度 ~正则项权重是控制模型复杂度的超参数 二、示例演示 2.1模型构造 生成公式如下 # 导入需要的库 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并将其初始化为0.01和0.05 true_w, true_b torch.ones((num_inputs, 1)) * 0.01, 0.05# 使用d2l.synthetic_data函数生成训练数据train_data和测试数据test_data # 生成的数据是通过真实的权重和偏差加上一些噪声生成的 train_data d2l.synthetic_data(true_w, true_b, n_train) test_data d2l.synthetic_data(true_w, true_b, n_test)# 使用d2l.load_array函数将训练数据train_data和测试数据test_data # 转换为数据迭代器train_iter和test_iter train_iter d2l.load_array(train_data, batch_size) test_iter d2l.load_array(test_data, batch_size, is_trainFalse) 2.2初始化模型参数 def init_params():w torch.normal(0, 1, size(num_inputs, 1), requires_gradTrue)b torch.zeros(1, requires_gradTrue)return [w, b] # 初始化模型参数w和b # w的形状为(num_inputs, 1)从正态分布中随机生成 # b初始化为0 # 参数需要计算梯度requires_grad参数被设置为True # 返回一个包含w和b的列表 2.3定义L2范数 def l2_penalty(w):return torch.sum(w.pow(2)) / 2 2.4定义训练代码实现 下面的代码将模型拟合训练数据集并在测试数据集上进行评估。 函数的具体实现如下 首先通过init_params()函数初始化模型参数w和b。 定义net函数为线性回归模型loss为平方损失函数。 设置训练的轮数num_epochs和学习率lr同时创建一个可视化工具animator用于可视化训练过程中的损失值。 在每个epoch中遍历训练数据集train_iter对每个小批量数据(X, y)进行如下操作 计算模型的输出net(X)并计算损失函数loss(net(X), y)。 加上L2范数惩罚项lambd * l2_penalty(w)其中l2_penalty(w)为权重w的L2范数。 对损失函数进行反向传播并使用SGD来更新模型参数w和b。 每5个epoch计算训练集和测试集上的损失值并使用animator将损失值可视化。 训练结束后输出模型参数w的L2范数。 # 带有L2正则化的线性回归训练过程 # lambd表示L2正则化的强度# 初始化模型参数w和b w, b init_params()# 定义线性回归模型net和平方损失函数loss net, loss lambda X: d2l.linreg(X, w, b), d2l.squared_loss# 设置训练的轮数num_epochs和学习率lr # 创建一个可视化工具animator用于可视化训练过程中的损失值 num_epochs, lr 100, 0.003 animator d2l.Animator(xlabelepochs, ylabelloss, yscalelog,xlim[5, num_epochs], legend[train, test])# 在每个epoch中遍历训练数据集train_iter对每个小批量数据(X, y)进行如下操作 for epoch in range(num_epochs):for X, y in train_iter:# 计算模型的输出net(X)并计算损失函数loss(net(X), y)# 加上L2范数惩罚项lambd * l2_penalty(w)其中l2_penalty(w)为权重w的L2范数# 对损失函数进行反向传播并使用SGD来更新模型参数w和bl loss(net(X), y) lambd * l2_penalty(w)l.sum().backward()d2l.sgd([w, b], lr, batch_size)# 每5个epoch计算训练集和测试集上的损失值并使用animator将损失值可视化if (epoch 1) % 5 0:animator.add(epoch 1, (d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))# 训练结束后输出模型参数w的L2范数 print(w的L2范数是, torch.norm(w).item()) 2.5训练结果展示 在这段代码中lambd是一个超参数表示L2正则化的强度。在每个小批量数据的损失函数中会加上L2范数惩罚项以控制模型的复杂度和防止过拟合。L2正则化的强度由超参数lambd控制lambd越大模型的复杂度就越小对训练数据的拟合程度就越差但是可以更好地控制过拟合。反之lambd越小模型的复杂度就越大对训练数据的拟合程度就越好但是可能会过拟合。在模型训练过程中我们通常会使用交叉验证等技术来选择最优的超参数lambd。 2.5.1忽略正则化直接训练 其中用lambd  0禁用权重衰减后运行这个代码。 注意虽然训练误差有了减少但测试误差没有减少 这意味着出现了严重的过拟合。 2.5.2使用权重衰减 下面我们使用权重衰减来运行代码。 注意在这里训练误差增大但测试误差减小。 得到预期效果。 三.简洁实现代码 # 导入需要的库 import torch from torch import nn from d2l import torch as d2ldef train_concise(wd):# 定义训练和测试数据集的大小输入特征的维度和批次大小n_train, n_test, num_inputs, batch_size 20, 100, 200, 5# 使用nn.Sequential定义了一个单层全连接神经网络net# 并将其参数使用param.data.normal_()方法初始化为随机值net nn.Sequential(nn.Linear(num_inputs, 1))for param in net.parameters():param.data.normal_()# 使用nn.MSELoss定义平方损失函数loss# 该损失函数的reduction参数设置为none表示不对损失值进行降维loss nn.MSELoss(reductionnone)# 设置训练的轮数num_epochs和学习率lr# 使用torch.optim.SGD定义一个优化器trainer该优化器的参数包括网络的权重和偏差以及权重衰减系数wdnum_epochs, lr 100, 0.003trainer torch.optim.SGD([{params:net[0].weight,weight_decay: wd},{params:net[0].bias}], lrlr)# 创建一个可视化工具animator用于可视化训练过程中的损失值animator d2l.Animator(xlabelepochs, ylabelloss, yscalelog,xlim[5, num_epochs], legend[train, test])# 在每个epoch中遍历训练数据集train_iter对每个小批量数据(X, y)进行如下操作for epoch in range(num_epochs):for X, y in train_iter:# 将优化器trainer的梯度清零# 计算模型的输出net(X)并计算损失函数loss(net(X), y)# 对损失函数进行反向传播并使用优化器trainer来更新模型参数trainer.zero_grad()l loss(net(X), y)l.mean().backward()trainer.step()# 每5个epoch计算训练集和测试集上的损失值并使用animator将损失值可视化。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) #lambd设置为0
http://www.sczhlp.com/news/172707/

相关文章:

  • 做logo专用的网站是哪个福州百度代理
  • 深圳福田网站优化网络营销培训学校wordpress 数卡
  • 搭建html5网站网站建设登录页面怎么写
  • 国外那些网站做展厅比较好深圳手机机械网站建设
  • 做网站电脑配置要求个高吗户外拓展网站源码
  • 宜春招聘网站开发区招工免费无线
  • 佛山营销网站网站开发费用可否计入无形资产
  • 怎么查询网站有没备案遵义58同城网
  • 无锡哪里建设网站wordpress网站维护页面
  • 黑龙江省建设集团有限公司网站首页优化设计电子课本
  • 公司网站主机流量30g每月够用吗网络营销导向企业网站建设的原则包括
  • 哪些网站可以做房产推广网站整站模板下载工具
  • 电子商务网站建设的参考文献建设行政主管部门网站
  • 搭建一个购物网站中山哪里可以做网站
  • wap音乐网站源码顶棒 技术支持 东莞网站建设
  • 【高级算法】单调队列优化动态规划
  • 【高级算法】树形DP
  • MySQL CentOS7 本地安装
  • wordpress 中文网站新品发布会策划方案ppt
  • 网站建设套餐怎么样云电脑免费版
  • 软件网站下载微信下单小程序怎么弄
  • 陕西网站开发房产资讯
  • 蚌埠网站建设文章代做网站公司哪家好
  • 站点推广是什么意思百科网wordpress
  • 企业手机网站建设定制六安网约车资格证在哪里办
  • 中企动力网站优化网站建设与发布
  • 汽车交易网站系统建设网易企业邮箱密码格式要求
  • 做网站容易还是app容易电脑网站有哪些
  • 家纺公司网站模版网站建设调研背景
  • 如何建设品牌网站响应式网站建设模板下载