正则项学习笔记

目录

1. L2 正则化 岭回归

1.1 L2 norm计算例子

2. L1 正则化

3. 弹性网正则化

4. Dropout


1. L2 正则化 岭回归

在 PyTorch 中,L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子:

介绍博文:

正则化(1):通俗易懂的岭回归

import torch
import torch.nn as nn
import torch.optim as optim# 定义一个简单的模型
class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.fc1 = nn.Linear(10, 5)self.fc2 = nn.Linear(5, 2)def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return x# 创建模型和数据
model = Model()
inputs = torch.randn(1, 10)
targets = torch.tensor([1, 0], dtype=torch.float32)# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-5)  # L2 正则化# 训练模型
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()

1.1 L2 norm计算例子

import numpy as np# 假设一些模型权重
weights = np.array([1.5, -2.3, 0.7, -0.9])# 计算 L2 范数(即所有权重平方的平方根)
l2_norm = np.sqrt(np.sum(np.square(weights)))# 计算 L2 正则化项,这里使用一个正则化参数 lambda
lambda_param = 0.01
l2_regularization = lambda_param * 0.5 * np.sum(np.square(weights))print("L2 Norm of weights:", l2_norm)
print("L2 Regularization term:", l2_regularization)

2. L1 正则化

在 PyTorch 中,实现 L1 正则化需要自定义损失函数,包括权重的 L1 范数:

# 计算 L1 正则化损失
def l1_penalty(model):l1_norm = sum(p.abs().sum() for p in model.parameters())return l1_norm# 添加 L1 正则化到总损失
lambda1 = 0.01
l1_loss = l1_penalty(model)
total_loss = loss + lambda1 * l1_loss

3. 弹性网正则化

弹性网正则化结合了 L1 和 L2 正则化:

lambda1 = 0.01
lambda2 = 0.01l1_loss = l1_penalty(model)
l2_loss = sum(p.pow(2.0).sum() for p in model.parameters())elastic_net_loss = lambda1 * l1_loss + lambda2 * l2_loss
total_loss = loss + elastic_net_loss

4. Dropout

Dropout 是一种在训练过程中随机丢弃网络中一部分神经元的方法:

class DropoutModel(nn.Module):def __init__(self):super(DropoutModel, self).__init__()self.fc1 = nn.Linear(10, 5)self.dropout = nn.Dropout(0.2)self.fc2 = nn.Linear(5, 2)def forward(self, x):x = torch.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x# 使用 DropoutModel 替代原始模型
model = DropoutModel()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java数据结构与算法(翻转二叉树)

前言 翻转二叉树的规则: 1.将二叉树所有节点以根节点为中心进行左右交换。 实现原理 递归实现:采用后续遍历的方式交换节点。同样也可以采用前序递归的方式,必须按分层替换。所以不可以用中序递归方式。 1.递归退出条件:节点的值为空,返回null。 2…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2(函数全删)pm2管理器(node版本选择v12.20.0) config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

C语言----深入理解指针(1)

1.内存地址 内存单元的编号 地址 指针 cpu访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,而因为内存中字节很多,所以需要给内存进行编址 /int main() //{ // int a 20;//创建变量的本质其实是在内存中申请空间 //…

css左右滚动互不影响

想实现左右都可以滚动,且互不影响。 只需要再左边的css里面 .threedlist {cursor: pointer;width: 280px;position: fixed;height: 100vh; /* 定义父容器高度 */overflow-y: auto; /* 只有在内容超过父容器高度时才出现滚动条 */} 如果想取消滚动条样式 .threedli…

PHP深度探索:从基础到实战,打造高效Web应用

PHP深度探索:从基础到实战,打造高效Web应用 PHP基础概念与环境搭建PHP简介环境搭建 PHP基础语法输出与变量控制结构条件判断循环 函数与数组 实战案例:简易博客系统数据库连接文章发布功能表单提交提交处理 安全性与性能优化安全实践性能优化…

【设计模式深度剖析】【4】【创建型】【建造者模式】| 类比选购汽车的过程,加深理解

👈️上一篇:抽象工厂模式 | 下一篇:原型模式👉️ 目录 建造者模式概览定义英文原话直译如何理解呢?建造者模式将对象的建造过程给抽象出来了类比选购汽车 4个角色UML类图1. 抽象建造者(Builder)角色2. 具体建造者…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

三维焊接平台在新一代机器人生产中得到广泛应用-河北北重

随着智能制造行业的不断推进&#xff0c;三维焊接平台在工业机器人领域应用现象普遍。三维焊接平台、三维柔性焊接平台工装夹具也会在新一代机器人——智能机器人在工业生产中得到广泛应用。目前&#xff0c;三维焊接平台、焊接铸铁平台在工业机器人的主要作用是应用于弧焊、电…

内网穿透--Ngrok-入门-上线

免责声明:本文仅做技术交流与学习... 目录 Ngrok: 技术实现: 前提: 命令: 详细流程及图解: 平台Ngrok: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 支持的协议&#xff1a;tcp、http、https 支持的类型&#xff1a;正向代理、反向代理 --隧道开通免费的 --协议…

Flink集群搭建简介

一、下载与解压 前往Flink官方网站&#xff08;https://flink.apache.org/zh/downloads.html&#xff09;下载适合你环境的Flink版本。注意&#xff0c;你需要选择与你的Scala版本相匹配的Flink版本。将下载的安装包&#xff08;通常是.tgz格式&#xff09;传输到你的主节点&a…

第三代“图即代码”低代码平台设计

低代码平台现在市面上的产品大致分为两类&#xff0c;一种是“ 搭积木”类型的 这种类型的主要是一些行业定制的saas产品&#xff0c;是在已经成型或者是平台提供的垄断性资源上来做二次“搭建”这种平台优势在于能快速上手&#xff0c;有难度的都进行了“简化”和“特定场景”…

经纬恒润第三代重载自动驾驶平板车

随着无人驾驶在封闭场地和干线道路场景的加速落地&#xff0c;港口作为无人化运营的先行者&#xff0c;其场景的复杂度、特殊性对无人化运营的技术提出了各种挑战。经纬恒润作为无人驾驶解决方案提供商&#xff0c;见证了港口在无人化运营方面的尝试及发展&#xff0c;并深度参…

html中嵌入js的2种方法 引用 引入javascript

方法1&#xff1a;引入js脚本块 页面中引入<script>标签&#xff0c;标签范围里写js代码。 <script type"text/javascript">//脚本代码function f1(){...} </script>方法2&#xff1a;引入js文件 <script type"text/javascript" s…

Sentinel限流

目录 Sentinel规则持久化Sentinel与Spring Cloud Gateway整合自定义扩展部分遇到的问题解决方案 控制面板改造新增读取规则代码重写SpringCloudGatewayApiDefinitionChangeObserver类&#xff0c;注意&#xff1a;类路径要完全一致新增自定义规则读取类lua脚本&#xff08;这里…

VSCODE gcc运行多个.c文件

一、简介 很多时候&#xff0c;开发者需要使用VSCODE进行C语言算法验证。而VSCODE的gcc编译&#xff0c;默认是只编译本文件的内容&#xff0c;其他.c文件是不参与编译的。这就给开发者带来很大的困扰&#xff0c;因为开发者不可能把所有的算法都写在一个.c文件&#xff0c;特别…

如何异地组网添加摄像机?

本文将介绍如何使用天联技术实现异地组网添加摄像机&#xff0c;并保障数据的安全性。 安防摄像机的应用愈发广泛&#xff0c;无论是家庭安防还是企业监控&#xff0c;摄像机都扮演着重要角色。在一些特殊场合或者特殊需求下&#xff0c;我们需要将摄像机添加到异地网络中进行监…

什么是JML

JML&#xff08;Java Modeling Language&#xff09;是用于对Java程序进行规格化设计的一种表示语言。它是一种行为接口规格语言&#xff08;BISL&#xff09;&#xff0c;基于Larch方法构建&#xff0c;特别为Java定制。JML的基本用途是描述Java模块方法的形式规范&#xff0c…

Flink 对接 Hudi 查询数据,java代码编写

1.pom.xml文件需要引入下面包 <properties><flink.version>1.15.4</flink.version><hudi.version>0.13.1</hudi.version></properties><dependencies><dependency><groupId>org.apache.flink</groupId><artifa…

【推荐算法-特征工程】每种item单侧特征,都可产生对应user单侧特征

比如item的平均成单价格&#xff0c;可以分成10个档位&#xff0c;作为一个标签值打在item上&#xff0c; 那么对应user对item的click用户行为&#xff0c;就能产生user-click的10个档位作为特征值 作为user的标签。 比如item的平均点击率&#xff0c;也可以分成比如20个档位…

Java-Spring

为什么要使用spring 综述省去很多非业务层代码研发的工作&#xff0c;提升javaweb服务研发效率&#xff0c;降低研发难度详解1、spring非常轻量且非侵入式&#xff0c;耦合低&#xff0c;污染小2、通过非常方便的依赖注入以及面向接口编程&#xff0c;可以实现业务代码之间的松…