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

机器学习06-正则化

机器学习06-正则化

文章目录

  • 机器学习06-正则化
    • 0-核心逻辑脉络
    • 1-参考网址
    • 3-大模型训练中的正则化
      • 1.正则化的定义与作用
      • 2.常见的正则化方法及其应用场景
        • 2.1 L1正则化(Lasso)
        • 2.2 L2正则化(Ridge)
        • 2.3 弹性网络正则化(Elastic Net)
        • 2.4 Dropout
        • 2.5 Batch Normalization
        • 2.6 早停(Early Stopping)
        • 2.7 权重衰减(Weight Decay)
        • 2.8 梯度惩罚(Gradient Penalty)
        • 2.9 特征选择和降维
      • 3.不同正则化方法的对比
    • 4-Batch Normalization
      • 简单示例
        • 输入数据
        • 计算步骤
        • 总结
      • 代码实现
    • 5-Layer Normalization
      • 简单示例
        • 输入数据
        • 计算步骤
        • 总结
      • 代码实现

0-核心逻辑脉络

  • 1)欠拟合和过拟合的含义
  • 2)过拟合的解决办法
  • 3)常用的正则化之间的对比
  • 4)Dropout在模型训练的时候有用,在模型预测的时候不会用
  • 5)L1和L2用在什么地方->损失函数+正则化函数(用来约束损失函数不要因为某个参数的权重而倾斜)->
    类比:你赚钱快是不是,我用梯度缴税(正则约束)去治你,再有钱你也麻头皮
  • 6)Layer Normalization正则化->多用于文本训练,针对每个句子(样本)进行正则化
  • 7)Layer Normalization(层归一化)通过归一化每个样本的特征向量来实现这一点,而不是像Batch Normalization(批归一化)那样归一化整个批次的数据。
  • 8)Batch Normalization(批归一化)通过对每个批次的数据进行归一化来实现这一点,具体来说,是对每个特征维度在批次中的分布进行归一化。

1-参考网址

  • 1)解读正则化:https://www.bilibili.com/video/BV1Cm421j7dw
  • 2)最清晰好懂的 Layernorm 原理解析:https://zhuanlan.zhihu.com/p/751292473

  • 正则化知识概念

  • 常用的正则化


3-大模型训练中的正则化

1.正则化的定义与作用

正则化是机器学习和深度学习中的一种技术,旨在通过在模型的损失函数中添加惩罚项来控制模型的复杂度,从而防止模型在训练数据上过度拟合,提高模型的泛化能力。常见的正则化方法包括L1正则化、L2正则化、弹性网络正则化、Dropout、Batch
Normalization等。

2.常见的正则化方法及其应用场景

2.1 L1正则化(Lasso)

原理:通过在损失函数中添加特征权重的绝对值和,使得某些特征权重减小到零,从而实现特征选择。
应用场景:适用于高维数据和稀疏数据,特别是在特征数量大于样本数量时。
优点:可以实现特征选择,减少模型参数数量。
缺点:可能导致模型参数不稳定。

2.2 L2正则化(Ridge)

原理:通过在损失函数中添加特征权重的平方和,鼓励权重均匀分布,减小模型复杂性。
应用场景:适用于一般情况下有较少噪声的数据集。
优点:模型参数稳定,易于解释。
缺点:无法实现特征选择。

2.3 弹性网络正则化(Elastic Net)

原理:结合了L1和L2正则化,通过调节参数来平衡两者的影响。
应用场景:适用于大量特征且存在多重共线性的问题时。
优点:结合了L1和L2正则化的优点,可以同时实现特征选择和参数压缩。
缺点:参数选择较为复杂。

2.4 Dropout

原理:在训练过程中随机忽略神经网络中的一部分神经元,从而减少网络对特定神经元的依赖,提高泛化能力。
应用场景:广泛应用于深度学习中的神经网络模型训练时。
优点:可以有效防止过拟合,提高模型的泛化能力。
缺点:可能会增加训练时间。

2.5 Batch Normalization

原理:通过对每一层的输入进行标准化,加速训练过程并提高模型的泛化能力。
应用场景:广泛应用于深度学习中的各种神经网络模型。
优点:可以加速训练过程,提高模型的稳定性和泛化能力。
缺点:增加了模型的复杂度和计算量。

2.6 早停(Early Stopping)

原理:在训练过程中,当验证集上的性能不再提升时,提前停止训练,以防止过拟合。
应用场景:适用于各种机器学习和深度学习模型。
优点:简单有效,可以防止过拟合。
缺点:可能会导致模型欠拟合,需要合理选择停止条件。

2.7 权重衰减(Weight Decay)

原理:与L2正则化相似,通过在优化过程中引入权重的平方惩罚项来限制权重的大小,从而减少模型的复杂度。
应用场景:广泛应用于深度学习的优化过程中,尤其是针对大规模模型。
优点:能有效防止网络过拟合,尤其是在训练数据有限时。
缺点:与L2正则化类似,无法实现特征选择。

2.8 梯度惩罚(Gradient Penalty)

原理:对神经网络的梯度大小进行正则化,目的是约束网络的梯度不至于过大,避免过拟合。
应用场景:在对抗训练、生成对抗网络(GAN)和强化学习中具有广泛应用。
优点:可以促使模型学习到更加平滑的决策边界,从而提高模型的泛化能力。
缺点:增加了模型的复杂度和计算量。

2.9 特征选择和降维

原理:通过选择对预测有用的特征或对数据进行降维(如PCA)来减少模型的输入维度,从而降低模型复杂度。
应用场景:广泛应用于机器学习中的监督学习任务,尤其是高维数据集的处理。
优点:可以减少过拟合,提高模型的可解释性和计算效率。
缺点:可能会丢失一些有用的信息。

3.不同正则化方法的对比

正则化方法原理优点缺点适用场景
L1正则化添加权重的绝对值和实现特征选择,减少参数数量参数不稳定高维稀疏数据
L2正则化添加权重的平方和参数稳定,易于解释无法实现特征选择一般数据集
弹性网络结合L1和L2正则化同时实现特征选择和参数压缩参数选择复杂多重共线性数据
Dropout随机忽略神经元防止过拟合,提高泛化能力增加训练时间神经网络模型
Batch Normalization输入标准化加速训练,提高稳定性增加复杂度各种神经网络
Layer Normalization每一层各特征维度的标准化提升梯度流动稳定性,适合更深层模型计算成本高RNN、Transformer、小批量数据
早停提前停止训练防止过拟合可能欠拟合各种模型
权重衰减权重平方惩罚防止过拟合无法特征选择大规模模型
梯度惩罚梯度大小正则化学习平滑决策边界增加复杂度对抗训练、GAN
特征选择和降维选择有用特征或降维减少过拟合,提高效率可能丢失信息高维数据集

4-Batch Normalization

Batch Normalization(批归一化)是一种用于神经网络的技术,旨在加快训练速度并提高模型性能。它通过对每个批次的数据进行归一化来实现这一点,具体来说,是对每个特征维度在批次中的分布进行归一化。

简单示例

假设我们有一个简单的神经网络,其中有一个全连接层(Fully Connected Layer),输入是一个形状为 (batch_size, features)
的张量。我们以一个具体的例子来说明Batch Normalization的工作原理。

输入数据

假设我们有一个小批量数据,大小为 batch_size = 2,每个样本有 features = 3 个特征。输入数据如下:

x = [[0.8, -1.2, 0.5],[1.0, 0.3, -0.7]]
计算步骤
  1. 计算每个特征维度的均值和方差

    • 对于第一个特征维度 [0.8, 1.0]
      • 均值:mean1 = (0.8 + 1.0) / 2 = 0.9
      • 方差:var1 = [(0.8 - 0.9)^2 + (1.0 - 0.9)^2] / 2 = 0.01
    • 对于第二个特征维度 [-1.2, 0.3]
      • 均值:mean2 = (-1.2 + 0.3) / 2 = -0.45
      • 方差:var2 = [(-1.2 - (-0.45))^2 + (0.3 - (-0.45))^2] / 2 = 0.9025
    • 对于第三个特征维度 [0.5, -0.7]
      • 均值:mean3 = (0.5 + (-0.7)) / 2 = -0.1
      • 方差:var3 = [(0.5 - (-0.1))^2 + (-0.7 - (-0.1))^2] / 2 = 0.18
  2. 归一化

    • 对于第一个特征维度:
      normalized1 = [(0.8 - 0.9) / sqrt(0.01 + eps),(1.0 - 0.9) / sqrt(0.01 + eps)]
      
      其中 eps 是一个很小的数,用于防止除零错误。
    • 对于第二个特征维度:
      normalized2 = [(-1.2 - (-0.45)) / sqrt(0.9025 + eps),(0.3 - (-0.45)) / sqrt(0.9025 + eps)]
      
    • 对于第三个特征维度:
      normalized3 = [(0.5 - (-0.1)) / sqrt(0.18 + eps),(-0.7 - (-0.1)) / sqrt(0.18 + eps)]
      
  3. 线性变换

    • 归一化后的数据会通过一个线性变换参数 gammabeta 进行调整。
      output1 = gamma1 * normalized1 + beta1
      output2 = gamma2 * normalized2 + beta2
      output3 = gamma3 * normalized3 + beta3
      
总结

通过Batch Normalization,我们为每个特征维度计算批次内的均值和方差,并进行归一化,这样可以确保每个特征维度在批次中的分布更加稳定,从而有助于模型更好地学习和收敛。这种方法有效地减少了内部协变量偏移(Internal
Covariate Shift),提高了训练的稳定性和速度。

代码实现

在实际的深度学习框架中,Batch Normalization通常通过以下方式实现:

import torch
import torch.nn as nn# 定义Batch Normalization
batch_norm = nn.BatchNorm1d(num_features=3)# 输入数据
x = torch.tensor([[0.8, -1.2, 0.5],[1.0, 0.3, -0.7]], dtype=torch.float32)# 应用Batch Normalization
output = batch_norm(x)print(output)

这个简单的示例展示了Batch Normalization的基本操作流程。


5-Layer Normalization

Layer Normalization(层归一化)是一种用于神经网络的正则化技术,旨在提高模型的训练稳定性和收敛速度。它通过归一化每个样本的特征向量来实现这一点,而不是像Batch
Normalization(批归一化)那样归一化整个批次的数据。

简单示例

假设我们有一个简单的神经网络,其中有一个全连接层(Fully Connected Layer),输入是一个形状为 (batch_size, features)
的张量。我们以一个具体的例子来说明Layer Normalization的工作原理。

输入数据

假设我们有一个小批量数据,大小为 batch_size = 2,每个样本有 features = 3 个特征。输入数据如下:

x = [[0.8, -1.2, 0.5],[1.0, 0.3, -0.7]]
计算步骤
  1. 计算每个样本的均值和方差

    • 对于第一个样本 [0.8, -1.2, 0.5]
      • 均值:mean1 = (0.8 + (-1.2) + 0.5) / 3 = 0.0333
      • 方差:var1 = [(0.8 - 0.0333)^2 + (-1.2 - 0.0333)^2 + (0.5 - 0.0333)^2] / 3 = 0.7667
    • 对于第二个样本 [1.0, 0.3, -0.7]
      • 均值:mean2 = (1.0 + 0.3 + (-0.7)) / 3 = 0.2
      • 方差:var2 = [(1.0 - 0.2)^2 + (0.3 - 0.2)^2 + (-0.7 - 0.2)^2] / 3 = 0.5467
  2. 归一化

    • 对于第一个样本:
      normalized1 = [(0.8 - 0.0333) / sqrt(0.7667 + eps),(-1.2 - 0.0333) / sqrt(0.7667 + eps),(0.5 - 0.0333) / sqrt(0.7667 + eps)]
      
      其中 eps 是一个很小的数,用于防止除零错误。
    • 对于第二个样本:
      normalized2 = [(1.0 - 0.2) / sqrt(0.5467 + eps),(0.3 - 0.2) / sqrt(0.5467 + eps),(-0.7 - 0.2) / sqrt(0.5467 + eps)]
      
  3. 线性变换

    • 归一化后的数据会通过一个线性变换参数 gammabeta 进行调整。
      output1 = gamma * normalized1 + beta
      output2 = gamma * normalized2 + beta
      
总结

通过Layer Normalization,我们为每个样本独立地计算均值和方差,并进行归一化,这样可以确保每个样本在特征维度上的分布更加稳定,从而有助于模型更好地学习和收敛。

代码实现

在实际的深度学习框架中,Layer Normalization通常通过以下方式实现:

import torch
import torch.nn as nn# 定义Layer Normalization
layer_norm = nn.LayerNorm(normalized_shape=[3])# 输入数据
x = torch.tensor([[0.8, -1.2, 0.5],[1.0, 0.3, -0.7]], dtype=torch.float32)# 应用Layer Normalization
output = layer_norm(x)print(output)

这个简单的示例展示了Layer Normalization的基本操作流程。


相关文章:

机器学习06-正则化

机器学习06-正则化 文章目录 机器学习06-正则化0-核心逻辑脉络1-参考网址3-大模型训练中的正则化1.正则化的定义与作用2.常见的正则化方法及其应用场景2.1 L1正则化(Lasso)2.2 L2正则化(Ridge)2.3 弹性网络正则化(Elas…...

如何开放2375和2376端口供Docker daemon监听

Linux (以 Ubuntu 为例) 1. 修改 Docker 配置文件 打开 Docker 的配置文件 /etc/docker/daemon.json。如果该文件不存在,则可以创建一个新的。 bash sudo nano /etc/docker/daemon.json在配置文件中添加以下内容: json {"hosts": ["un…...

Vue.js组件开发-如何实现路由懒加载

在Vue.js应用中,路由懒加载是一种优化性能的技术,它允许在需要时才加载特定的路由组件,而不是在应用启动时加载所有组件。这样可以显著减少初始加载时间,提高用户体验。在Vue Router中,实现路由懒加载非常简单&#xf…...

rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...

一、什么是rclone? rclone是一个命令行程序,全称:rsync for cloud storage。是用于将文件和目录同步到云存储提供商的工具。因其支持多种云存储服务的备份,如Google Drive、Amazon S3、Dropbox、Backblaze B2、One Drive、Swift、…...

集成学习算法

目录 1.必要的导入 2.Bagging集成 3.基于matplotlib写一个函数对决策边界做可视化 4.总结图中结论 5.扩展说明 1.必要的导入 # To support both python 2 and python 3 from __future__ import division, print_function, unicode_literals# Common imports import numpy as np…...

vue3之pinia学习

最近查看了pinia这个状态管理管理&#xff0c;想跟大家一起学习下&#xff0c;下面是我的个人理解&#xff0c;希望对大家有帮助&#xff0c;我们开始吧&#xff01; 第一步&#xff1a;安装pinia npm install pinia 第二步&#xff1a;创建pinia <script setup langts&…...

Flink (七): DataStream API (四) Watermarks

1. Event Time and Processing Time 1. 1 处理时间&#xff08;Processing time&#xff09; 处理时间是指执行相应操作的机器的系统时间。当流处理程序基于处理时间运行时&#xff0c;所有基于时间的操作&#xff08;如时间窗口&#xff09;将使用执行相应算子的机器的系统时…...

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1&#xff09;Anacanda使用CUDAPytorch2&#xff09;使用本地MNIST进行手写图片训练3&#xff09;…...

【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用

提升数据质量&#xff1a;质量评估与改进策略 引言&#xff1a;数据质量的概念 在大数据时代&#xff0c;数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途&#xff0c;确保数据的准确性、完整性、一致性和及时性是数据质量的…...

GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文解读

论文地址&#xff1a;https://arxiv.org/abs/2103.10360 参考&#xff1a;https://zhuanlan.zhihu.com/p/532851481 GLM混合了自注意力和masked注意力&#xff0c;而且使用了2D位置编码。第一维的含义是在PartA中的位置&#xff0c;如5 5 5。第二维的含义是在Span内部的位置&a…...

总结SpringBoot项目中读取resource目录下的文件多种方法

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…...

云原生第四次作业

下载 [rootopenEuler-1 ~]# wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz 压缩 配置实验环境 [rootopenEuler-1 httpd-2.4.46]# yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-d…...

day10_Structured Steaming

文章目录 Structured Steaming一、结构化流介绍&#xff08;了解&#xff09;1、有界和无界数据2、基本介绍3、使用三大步骤(掌握)4.回顾sparkSQL的词频统计案例 二、结构化流的编程模型&#xff08;掌握&#xff09;1、数据结构2、读取数据源2.1 File Source2.2 Socket Source…...

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口&#xff0c;让子类决定实列化哪一个类&#xff0c;工厂模式使一个类的实例化延迟到其子类&#xff1b; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中&#xff0c;核心工厂类不在负责产品的创建&#xff0c;而是将具体的创建工作…...

【算法学习】——整数划分问题详解(动态规划)

&#x1f9ee;整数划分问题是一个较为常见的算法题&#xff0c;很多问题从整数划分这里出发&#xff0c;进行包装&#xff0c;形成新的题目&#xff0c;所以完全理解整数划分的解决思路对于之后的进一步学习算法是很有帮助的。 「整数划分」通常使用「动态规划」解决&#xff0…...

【新教程】Ubuntu 24.04 单节点安装slurm

背景 网上教程老旧&#xff0c;不适用。 详细步骤 1、安装slurm sudo apt install slurm-wlm slurm-wlm-doc -y检查是否安装成功&#xff1a; slurmd --version如果得到slurm-wlm 23.11.4&#xff0c;表明安装成功。 2、配置slurm。 使用命令&#xff1a; sudo vi /etc/s…...

window下用vim

Windows 默认不支持 vim 命令&#xff0c;需要手动安装后才能使用。以下是解决方案&#xff1a; 1. 安装 Vim 编辑器 方法 1&#xff1a;通过 Scoop 或 Chocolatey 安装 使用 Scoop&#xff1a; 安装 Scoop&#xff08;如果尚未安装&#xff09;&#xff1a;iwr -useb get.sco…...

citrix netscaler13.1 重写负载均衡响应头(基础版)

在 Citrix NetScaler 13.1 中&#xff0c;Rewrite Actions 用于对负载均衡响应进行修改&#xff0c;包括替换、删除和插入 HTTP 响应头。这些操作可以通过自定义策略来完成&#xff0c;帮助你根据需求调整请求内容。以下是三种常见的操作&#xff1a; 1. Replace (替换响应头)…...

使用PWM生成模式驱动BLDC三相无刷直流电机

引言 在 TI 的无刷直流 (BLDC) DRV8x 产品系列使用的栅极驱动器应用中&#xff0c;通常使用一些控制模式来切换MOSFET 开关的输出栅极。这些控制模式包括&#xff1a;1x、3x、6x 和独立脉宽调制 (PWM) 模式。   不过&#xff0c;DRV8x 产品系列&#xff08;例如 DRV8311&…...

常见的php框架有哪几个?

一直以来&#xff0c;PHP作为一种广泛使用的编程语言&#xff0c;拥有着许多优秀的框架来帮助开发人员快速构建稳定的Web应用程序。本文降为大家介绍几种常见的PHP的主流框架&#xff0c;以及它们相关的特点和使用场景。如有问题&#xff0c;欢迎指正&#xff01; 1.Laravel&a…...

机器学习(2):线性回归Python实现

1 概念回顾 1.1 模型假设 线性回归模型假设因变量y yy与自变量x xx之间的关系可以用以下线性方程表示&#xff1a; y β 0 β 1 ⋅ X 1 β 2 ⋅ X 2 … β n ⋅ X n ε y 是因变量 (待预测值)&#xff1b;X1, X2, ... Xn 是自变量&#xff08;特征&#xff09;β0, β1,…...

Unity-Mirror网络框架-从入门到精通之RigidbodyPhysics示例

文章目录 前言示例一、球体的基础配置二、三个球体的设置差异三、示例意图LatencySimulation前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开…...

【Unity-Animator】通过 StateMachineBehaviour 实现回调

StateMachineBehaviour 简介 StateMachineBehaviour是一个基类&#xff0c;所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码&#xff0c;而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑&#xff0c;例…...

并行服务、远程SSH无法下载conda,报错404

原下载代码无效&#xff0c;报错404 wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh 使用下面代码下载 wget --user-agent"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12…...

cuquantum 简介

1. 关于 cuquantum 概述 官方文档&#xff1a; https://docs.nvidia.com/cuda/cuquantum/latest/appliance/overview.html#prerequisites NVIDIA 的 cuQuantum 是一个专门用于量子计算的高性能库&#xff0c;旨在加速量子电路的模拟和量子算法的执行。cuQuantum 提供了一系列…...

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意&#xff1a;小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务&#xff0c;如果没有就在插件管理中添加插件 2.腾讯位置服务…...

【react】使用antd Table渲染数据遇到的报错问题

记录自己在开发过程中遇到的报错问题&#xff1a; 目录 原本写法&#xff1a;错误分析&#xff1a;解决方案&#xff1a; 原本写法&#xff1a; render: (text) > {console.log(text, "111111text");console.log(typeof text, "111111text");return t…...

55_OpenResty开发入门

Nginx编程需要用到Lua语言,因此我们必须先学习Lua的基本语法。Nginx本身也是C语言开发,因此也允许基于Lua做拓展。多级缓存的实现离不开Nginx编程,而Nginx编程又离不开OpenResty。 1.OpenResty概述 OpenResty是一款基于NGINX和LuaJIT的Web平台。通过Lua扩展NGINX实现的可伸…...

(即插即用模块-Attention部分) 四十四、(ICIP 2022) HWA 半小波注意力

文章目录 1、Half Wavelet Attention2、代码实现 paper&#xff1a;HALFWAVELET ATTENTION ON M-NET FOR LOW-LIGHT IMAGE ENHANCEMENT Code&#xff1a;https://github.com/FanChiMao/HWMNet 1、Half Wavelet Attention 传统的图像增强方法主要关注图像在空间域的特征信息&am…...

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;...

全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误

具体错误 前面和后面的&#xff1a; /opt/linux/x86-arm/aarch64-mix210-linux/host_bin/../lib/gcc/aarch64-linux-gnu/7.3.0/../../../../aarch64-linux-gnu/bin/ld: warning: libcrypto.so.1.1, needed by ../lib/libssh.so.4.10.1, not found (try using -rpath or -rpat…...

springboot 集成javaFx 两个面板之间如何进行跳转

1.创建两个面板 可参考博主的 java8 springboot 集成javaFx 实现一个客户端程序 文章来实现 2.完善代码 以下是博主创建的两个模板 博主在这里实现的是登录跳转功能,注意:这里登录按钮的触发实现方式做了以下小小的改动,也可根据自己的习惯来处理 相较第一篇文章,博主在Lo…...

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…...

ASP.NET Core - IStartupFilter 与 IHostingStartup

ASP.NET Core - IStartupFilter 与 IHostingStartup 1. IStartupFilter2 IHostingStartup2.5.1 创建外部程序集2.5.2 激活外部程序集 1. IStartupFilter 上面讲到的方式虽然能够根据不同环境将Startup中的启动逻辑进行分离&#xff0c;但是有些时候我们还会可以根据应用中的功能…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证5)

用户在前端页面登录成功后会从服务端获取Token&#xff0c;后续调用服务器的服务接口时都得带着Token&#xff0c;否则就会验证失败。之前使用postman测试的时候&#xff0c;获取Token后再调用其它服务都是人工将Token添加到Header中&#xff0c;网页中没法这么做&#xff0c;只…...

【Vue】let、const、var的区别、适用场景

let、const、var&#xff0c;有哪些区别&#xff0c;适用场景 var 特点&#xff1a; var 是 JavaScript 中最传统的变量声明方式。具有函数作用域&#xff0c;即在函数内声明的 var 变量&#xff0c;在整个函数内都可以访问。变量提升&#xff1a;使用 var 声明的变量会被提升…...

【llama_factory】qwen2_vl训练与批量推理

训练llama factory配置文件 文件&#xff1a;examples/train_lora/qwen2vl_lora_sft.yaml ### model model_name_or_path: qwen2_vl/model_72b trust_remote_code: true### method stage: sft do_train: true finetuning_type: lora lora_target: all### dataset dataset: ca…...

计算机视觉与深度学习:使用深度学习训练基于视觉的车辆检测器(MATLAB源码-Faster R-CNN)

在人工智能领域,计算机视觉是一个重要且充满活力的研究方向。它使计算机能够理解和分析图像和视频数据,从而做出有意义的决策。其中,目标检测是计算机视觉中的一项关键技术,它旨在识别并定位图像中的多个目标对象。车辆检测作为目标检测的一个重要应用,在自动驾驶、智能交…...

Python 扫描枪读取发票数据导入Excel

财务需要一个扫描枪扫描发票文件&#xff0c;并将主要信息录入Excel 的功能。 文件中sheet表的列名称&#xff0c;依次为&#xff1a;发票编号、发票编码、日期、金额、工号、扫描日期。 扫描的时候&#xff0c;Excel 文件需要关闭&#xff0c;否则会报错。 import openpyxl …...

SpringMVC复习笔记

文章目录 SpringMVC 概念和基本使用SpringMVC 简介SpringMVC 核心组件和调用流程SpringMVC 基本使用第一步&#xff1a;导入依赖第二步&#xff1a;Controller 层开发第三步&#xff1a;SpringMVC 配置类配置核心组件第四步&#xff1a;SpringMVC 环境搭建第五步&#xff1a;部…...

arcgis提取不规则栅格数据的矢量边界

效果 1、准备数据 栅格数据:dem或者dsm 2、栅格重分类 分成两类即可 3、新建线面图层 在目录下选择预先准备好的文件夹,点击右键,选择“新建”→“Shapefile”,新建一个Shapefile文件。 在弹出的“新建Shapefile”对话框内“名称”命名为“折线”,“要素类型”选…...

【机器学习】零售行业的智慧升级:机器学习驱动的精准营销与库存管理

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 在当今数字化浪潮汹涌澎湃的时代&#xff0c;零售行业正站在转型升级的十字路口。市场竞争的白热化使得企业必须另辟蹊径&#xff0…...

链路追踪SkyWalking

链路追踪 链路追踪作用链路追踪的关键概念链路追踪的工作原理常用链路追踪工具链路追踪的实现步骤链路追踪的典型场景 SkyWalkingSkyWalking 的主要功能SkyWalking 的架构安装 SkyWalking从 SkyWalking 的官方 GitHub 仓库 下载最新版本。配置后端存储SkyWalking使用&#xff0…...

linux下的线程

一、pthread 线程 线程可以说是轻量级的进程&#xff0c;一般是一个进程中的多个任务。 进程&#xff1a;系统中的最小资源分配单元 线程:系统中最小执行单元 二、线程的特征 1、共享资源 2、效率高30% 3.使用第三方库&#xff08;头文件加pthread.h 编译时添加 -lpthre…...

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业&#xff0c;技术革新迅猛&#xff0c;市场竞争激烈。《全星研发管理 APQP 软件系统》的应用&#xff0c;为企业带来了革命性的变化&#xff0c;诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…...

mysql、oracle、sqlserver的区别

一、保存数据的持久性&#xff1a; MySQL&#xff1a;是在数据库更新或者重启&#xff0c;则会丢失数据。 Oracle&#xff1a;把提交的sql操作线写入了在线联机日志文件中&#xff0c;保持到了磁盘上&#xff0c;可以随时恢复。 SqlServer&#xff1a;2…...

CV(10)--目标检测

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 目标检测 object detection&#xff0c;就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别;输出的是分类类别label物体的外框&#xff08;x, y, width, height&#xff09;。 目标检测算法&#xff1a…...

SQL LAST()

SQL中的LAST()函数是一个用于返回指定列中最后一个记录值的函数。然而&#xff0c;需要注意的是&#xff0c;这个函数并不是SQL标准的一部分&#xff0c;因此并不是所有数据库系统都支持它。具体来说&#xff0c;只有MS Access直接支持LAST()函数【0†source】。 在其他数据库…...

传统以太网问题与VLAN技术详解

传统以太网的问题 广播域&#xff1a;在网络中能接收同一广播信息的所有设备&#xff08;计算机、交换机&#xff09;等的集合 说明&#xff1a;在一个广播域内&#xff0c;当一个设备发送广播帧时&#xff0c;该域内的所有设备都能接收到这个广播帧。工作原理&#xff1a;在以…...

Java 面试题 - ArrayList 和 LinkedList 的区别,哪个集合是线程安全的?

Java 面试题 - ArrayList 和 LinkedList 的区别&#xff0c;哪个集合是线程安全的&#xff1f; 在 Java 开发中&#xff0c;ArrayList和LinkedList是两个常用的集合类&#xff0c;它们在数据结构和性能上有诸多不同&#xff0c;同时线程安全性也各有特点。深入理解这些差异&am…...