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

什么是正则化?Regularization: The Stabilizer of Machine Learning Models(中英双语)

正则化:机器学习模型的稳定器


1. 什么是正则化?

正则化(Regularization)是一种在机器学习模型训练中,通过约束模型复杂性以防止过拟合的技术
它的核心目标是让模型不仅在训练集上表现良好,还能在测试集上具有良好的泛化能力。


2. 为什么正则化起作用?

2.1 过拟合的本质

过拟合通常发生在模型参数过多、数据量不足或数据噪声较大时,模型学到了数据中的噪声和不相关的模式,从而导致泛化能力下降。

2.2 正则化的作用原理

正则化通过引入额外的约束条件来抑制模型的复杂性,限制其自由度,使得模型更倾向于学习数据的总体模式而非局部噪声。

数学原理
正则化通过在损失函数中添加正则项,改变了优化目标,从而约束模型的参数空间。以常见的线性回归为例:

  • 原始损失函数(最小化误差):
    L = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \mathcal{L} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 L=n1i=1n(yiy^i)2
  • 加入正则化后的损失函数:
    L reg = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 + λ R ( θ ) \mathcal{L}_{\text{reg}} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 + \lambda R(\theta) Lreg=n1i=1n(yiy^i)2+λR(θ)

其中:

  • ( R ( θ ) R(\theta) R(θ) ) 是正则项,用于约束模型参数 ( θ \theta θ )。
  • ( λ \lambda λ ) 是正则化强度的超参数,用于权衡数据拟合与正则化之间的关系。

3. 常见的正则化方法

3.1 参数正则化:L1 和 L2 正则化
  • L1 正则化(Lasso Regression)
    在损失函数中加入 ( L 1 L1 L1 ) 范数的约束:
    R ( θ ) = ∥ θ ∥ 1 = ∑ j = 1 p ∣ θ j ∣ R(\theta) = \|\theta\|_1 = \sum_{j=1}^p |\theta_j| R(θ)=θ1=j=1pθj

    • 优点:促使部分参数变为零,从而实现特征选择。
    • 缺点:在高维数据中可能会丢失部分信息。
  • L2 正则化(Ridge Regression)
    在损失函数中加入 ( L2 ) 范数的约束:
    R ( θ ) = ∥ θ ∥ 2 2 = ∑ j = 1 p θ j 2 R(\theta) = \|\theta\|_2^2 = \sum_{j=1}^p \theta_j^2 R(θ)=θ22=j=1pθj2

    • 优点:通过惩罚较大的参数值,抑制模型复杂性。
    • 缺点:不会稀疏参数,所有特征都会保留。

代码示例(以线性回归为例):

import numpy as np
from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 模拟数据
np.random.seed(42)
X = np.random.rand(100, 5)
y = 3 * X[:, 0] + 2 * X[:, 1] + np.random.randn(100)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# L2 正则化(Ridge)
ridge = Ridge(alpha=1.0)  # alpha 控制正则化强度
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)# L1 正则化(Lasso)
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)
y_pred_lasso = lasso.predict(X_test)print("Ridge MSE:", mean_squared_error(y_test, y_pred_ridge))
print("Lasso MSE:", mean_squared_error(y_test, y_pred_lasso))

3.2 数据增强(Data Augmentation)
  • 数据增强是通过对训练数据进行扩充(如图像翻转、裁剪、旋转等),使模型看到更多变种,从而提升泛化能力。
  • 常用于计算机视觉和自然语言处理领域。

代码示例(以 PyTorch 图像增强为例):

import torchvision.transforms as transforms
from torchvision.datasets import CIFAR10
from torch.utils.data import DataLoader# 数据增强
transform = transforms.Compose([transforms.RandomHorizontalFlip(),transforms.RandomCrop(32, padding=4),transforms.ToTensor(),
])# 加载数据集
train_dataset = CIFAR10(root='./data', train=True, transform=transform, download=True)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)# 打印增强后的图像形状
for images, labels in train_loader:print(images.shape)  # (64, 3, 32, 32)break

3.3 Dropout
  • Dropout 是一种在训练过程中随机“丢弃”一部分神经元的正则化技术,用于防止神经网络过拟合。
  • 训练时,随机将一部分神经元的输出置为零;推理时,使用所有神经元,但缩放其输出。

数学原理
假设 Dropout 比例为 ( p p p ),每个神经元有 ( 1 − p 1-p 1p ) 的概率被激活:
输出 = 激活值 ⋅ 掩码 / ( 1 − p ) \text{输出} = \text{激活值} \cdot \text{掩码} / (1-p) 输出=激活值掩码/(1p)

代码示例

import torch
import torch.nn as nn# 定义一个简单的网络
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(784, 256)self.dropout = nn.Dropout(p=0.5)  # Dropout 概率为 0.5self.fc2 = nn.Linear(256, 10)def forward(self, x):x = torch.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x# 使用 Dropout 的网络
model = SimpleNN()
print(model)

3.4 大模型中的正则化方法

在深度学习领域(尤其是 2022-2023 年的大模型训练),一些新的正则化方法逐渐被广泛应用:

  1. LayerNorm 和 WeightNorm

    • LayerNorm 对每一层进行归一化,减少梯度消失或爆炸问题。
    • WeightNorm 通过分离权重的幅度和方向,提升模型收敛速度。
  2. Label Smoothing

    • 通过在训练目标上引入少量噪声,避免模型过度自信。
      y ~ = ( 1 − ϵ ) ⋅ y + ϵ / K \tilde{y} = (1 - \epsilon) \cdot y + \epsilon / K y~=(1ϵ)y+ϵ/K
  3. 梯度裁剪(Gradient Clipping)

    • 限制梯度更新的幅度,避免梯度爆炸。
    torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
    
  4. 正则化优化器

    • AdamW 是一种带权重衰减的优化器,直接在更新权重时加入 L2 正则化效果。

4. 正则化在大模型中的实际应用

以 GPT-3 或 BERT 等大语言模型的训练为例,正则化方法的组合应用非常重要:

  • 使用 LayerNormDropout 作为网络层内的正则化手段。
  • 在优化器中应用 AdamW,并设置适当的权重衰减参数。
  • 在大数据集上进行分布式训练,同时引入数据增强策略。

5. 总结

正则化技术是机器学习和深度学习中不可或缺的一部分,帮助模型在复杂场景下提升泛化能力并防止过拟合。
不同场景适合的正则化方法如下:

场景常用正则化方法
传统机器学习(线性模型)L1 正则化、L2 正则化
神经网络训练Dropout、数据增强
大模型训练(2022-2023)LayerNorm、AdamW、梯度裁剪、Label Smoothing

正则化方法的选择依赖于具体任务和模型的需求,但其核心思想始终是限制模型的复杂性,提升模型的稳定性和泛化能力。

Regularization: The Stabilizer of Machine Learning Models


1. What is Regularization?

Regularization is a set of techniques used in machine learning to constrain model complexity and prevent overfitting.
The primary goal of regularization is to ensure that the model performs well not only on the training data but also generalizes effectively to unseen test data.


2. Why Does Regularization Work?

2.1 The Nature of Overfitting

Overfitting happens when a model learns noise and irrelevant patterns in the training data, leading to poor generalization on new data. This is more common in cases with:

  • Insufficient training data
  • High model complexity
  • Noisy datasets
2.2 How Regularization Works

Regularization works by imposing constraints on the model’s complexity. This discourages it from fitting noise and forces it to focus on learning the underlying patterns in the data.

Mathematical Insight:
By adding a regularization term to the loss function, we effectively change the optimization objective, which restricts the parameter space.

For example, in linear regression:

  • Original loss function:
    L = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \mathcal{L} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 L=n1i=1n(yiy^i)2
  • Regularized loss function:
    L reg = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 + λ R ( θ ) \mathcal{L}_{\text{reg}} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 + \lambda R(\theta) Lreg=n1i=1n(yiy^i)2+λR(θ)

Where:

  • ( R ( θ ) R(\theta) R(θ) ) is the regularization term that penalizes complex models.
  • ( λ \lambda λ ) controls the trade-off between fitting the data and regularization strength.

3. Common Regularization Techniques

3.1 Parameter Regularization: L1 and L2 Regularization
  • L1 Regularization (Lasso)
    Adds the ( L 1 L1 L1 )-norm of the parameters to the loss function:
    R ( θ ) = ∥ θ ∥ 1 = ∑ j = 1 p ∣ θ j ∣ R(\theta) = \|\theta\|_1 = \sum_{j=1}^p |\theta_j| R(θ)=θ1=j=1pθj

    • Advantages: Encourages sparsity, making some parameters zero. Useful for feature selection.
    • Disadvantages: May lose some information in high-dimensional data.
  • L2 Regularization (Ridge)
    Adds the ( L 2 L2 L2 )-norm of the parameters to the loss function:
    R ( θ ) = ∥ θ ∥ 2 2 = ∑ j = 1 p θ j 2 R(\theta) = \|\theta\|_2^2 = \sum_{j=1}^p \theta_j^2 R(θ)=θ22=j=1pθj2

    • Advantages: Shrinks large parameter values, reducing model complexity.
    • Disadvantages: Does not produce sparse parameters; retains all features.

Code Example (Linear Regression with L1 and L2):

import numpy as np
from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# Generate synthetic data
np.random.seed(42)
X = np.random.rand(100, 5)
y = 3 * X[:, 0] + 2 * X[:, 1] + np.random.randn(100)# Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Ridge (L2) Regularization
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)# Lasso (L1) Regularization
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)
y_pred_lasso = lasso.predict(X_test)print("Ridge MSE:", mean_squared_error(y_test, y_pred_ridge))
print("Lasso MSE:", mean_squared_error(y_test, y_pred_lasso))

3.2 Data Augmentation

Data augmentation expands the training dataset by applying transformations (e.g., flips, rotations, cropping) to existing data, increasing model robustness and improving generalization.

Example (Image Augmentation in PyTorch):

import torchvision.transforms as transforms
from torchvision.datasets import CIFAR10
from torch.utils.data import DataLoader# Define data augmentation
transform = transforms.Compose([transforms.RandomHorizontalFlip(),transforms.RandomCrop(32, padding=4),transforms.ToTensor(),
])# Load dataset with augmentation
train_dataset = CIFAR10(root='./data', train=True, transform=transform, download=True)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)# Print augmented image shape
for images, labels in train_loader:print(images.shape)  # Example: (64, 3, 32, 32)break

3.3 Dropout

Dropout randomly deactivates a subset of neurons during training, reducing reliance on specific neurons and preventing co-adaptation.

Mathematical Insight:
For a dropout rate ( p p p ), each neuron’s output is retained with probability ( 1 − p 1-p 1p ). During inference, the full network is used but scaled by ( 1 − p 1-p 1p ).

Code Example:

import torch
import torch.nn as nnclass SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(784, 256)self.dropout = nn.Dropout(p=0.5)  # 50% dropoutself.fc2 = nn.Linear(256, 10)def forward(self, x):x = torch.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return xmodel = SimpleNN()
print(model)

3.4 Advanced Regularization Techniques for Large Models

With the advent of large-scale models (2022-2023), new regularization techniques have been widely adopted:

  1. LayerNorm and WeightNorm

    • LayerNorm normalizes activations across features within a layer.
    • WeightNorm separates weight vectors into magnitude and direction, improving optimization stability.
  2. Label Smoothing
    Prevents overconfidence in predictions by softening the target distribution:
    y ~ = ( 1 − ϵ ) ⋅ y + ϵ / K \tilde{y} = (1 - \epsilon) \cdot y + \epsilon / K y~=(1ϵ)y+ϵ/K

  3. Gradient Clipping
    Limits the magnitude of gradients to prevent exploding gradients:

    torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
    
  4. AdamW Optimizer
    Combines the Adam optimizer with weight decay for improved regularization.


4. Regularization in Large Model Training

For models like GPT-3 and BERT, regularization involves combining multiple techniques:

  • LayerNorm and Dropout to stabilize training and reduce overfitting.
  • AdamW with appropriate weight decay settings.
  • Label Smoothing for classification tasks to prevent overconfidence.
  • Gradient Clipping to handle gradient explosion in deep networks.

5. Conclusion

Regularization is crucial for building robust machine learning models. The right choice of technique depends on the specific task and model requirements. Below is a summary of common regularization techniques:

ScenarioRegularization Methods
Traditional ML (linear models)L1, L2 regularization
Neural Network TrainingDropout, Data Augmentation
Large Model TrainingLayerNorm, AdamW, Label Smoothing

By constraining model complexity, regularization ensures models are stable, generalizable, and less prone to overfitting.

后记

2024年12月14日15点55分于上海,在GPT4o大模型辅助下完成。

相关文章:

什么是正则化?Regularization: The Stabilizer of Machine Learning Models(中英双语)

正则化:机器学习模型的稳定器 1. 什么是正则化? 正则化(Regularization)是一种在机器学习模型训练中,通过约束模型复杂性以防止过拟合的技术。 它的核心目标是让模型不仅在训练集上表现良好,还能在测试集上…...

【西门子PLC.博途】——面向对象编程及输入输出映射FC块

当我们做面向对象编程的时候,需要用到输入输出的映射。这样建立的变量就能够被复用,从而最大化利用了我们建立的udt对象。 下面就来讲讲映射是什么。 从本质上来说,映射就是拿实际物理对象对应程序虚拟对象,假设程序对象是I0.0&…...

CS61a.1 textbook1.2 编程要素

1.structure and interpretation of computer programs Python 内置了对各种常见编程活动的支持, 例如,操作文本、显示图形以及通过 互联网。Python 代码行 >>> from urllib.request import urlopen是一个 import 语句,用于加载用…...

计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

使用国内镜像网站在线下载安装Qt(解决官网慢的问题)——Qt

国内镜像网站 中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/北京理工大学:http://mirror.bit.edu.cn/qtproject/ 南京大学:https://mirror.nju.edu.cn/qt腾讯镜像&…...

乳腺癌多模态诊断解释框架:CNN + 可解释 AI 可视化

乳腺癌多模态诊断解释框架:CNN 可解释 AI 可视化 论文大纲理解1. 确认目标2. 分析过程(目标-手段分析)3. 实现步骤4. 效果展示 结构分析1. 层级结构分析叠加形态(从基础到高级)构成形态(部分到整体&#x…...

MySQL篇之对MySQL进行参数优化,提高MySQL性能

1. MySQL参数优化说明 MySQL 参数调优是提高数据库性能的重要手段之一。通过调整 MySQL 的配置参数,可以优化查询速度、提升并发处理能力、减少资源消耗等。 MySQL 的性能优化涉及到多个方面,包括内存管理、磁盘 I/O、查询优化、连接管理、复制配置等。…...

Scratch节日 | 快乐圣诞节——用编程传递节日祝福! ✨

今天为大家推荐一款充满节日气氛的Scratch项目——《快乐圣诞节》!这款圣诞主题动画贺卡项目不仅让小朋友们学习编程知识,还提供了一种用创意传递祝福的方式。通过编程打造星星闪烁的圣诞树,播放经典圣诞音乐,制作一张属于自己的节…...

android studio更改应用图片,和应用名字。

更改应用图标,和名字 先打开AndroidManifest.xml文件。 更改图片文件名字( 右键-->构建-->重命名(R))...

PHP8.4下webman直接使用topthink/think-orm

环境信息 操作系统win11php 8.4.1webman-framework ^1.6.8MySQL 8.4.3topthink/think-orm ^3.0 说明 PHP8.3以下版本 直接使用webman提供的webman/think-orm更方便。 PHP 环境换为 8.4 使用webman/think-orm 报了个错;所以换topthink/think-orm,根据文…...

uniapp 微信小程序 功能入口

单行单独展示 效果图 html <view class"shopchoose flex jsb ac" click"routerTo(要跳转的页面)"><view class"flex ac"><image src"/static/dyd.png" mode"aspectFit" class"shopchooseimg"&g…...

Halcon 机器视觉案例 之 连接件测量

第一篇 机器视觉案例 之 连接件测量 文章目录 第一篇 机器视觉案例 之 连接件测量1.案例要求2.实现思路2.1 读取单张图片并创建图像模板2.2 画出圆和直线2.3 创建测量模型2.4 循环读取多张图片并查找图像中连接件位置2.5 根据偏移量补偿使得测量模型移动至指定位置 3.实现效果4…...

druid与pgsql结合踩坑记

最近项目里面突然出现一个怪问题&#xff0c;数据库是pgsql&#xff0c;jdbc连接池是alibaba开源的druid&#xff0c;idea里面直接启动没问题&#xff0c;打完包放在centos上和windows上cmd窗口都能直接用java -jar命令启动&#xff0c;但是放到国产信创系统上就是报错&#xf…...

Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例

一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ&#xff0c;贴近Linux的线上环境&#xff1b; 2 RabbitMQ用erlang语言编写的&#xff0c;先安装erlang的运行环境&#xff1b; 2 用Linux的apt-get命令安装&#xff0c;解决软件依赖…...

RabbitMQ的核心组件有哪些?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ的核心组件有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理&#xff08;Messag…...

mysql免安装版配置教程

一、将压缩包解压至你想要放置的文件夹中&#xff0c;注意&#xff1a;绝对路径中要避免出现中文 二、在解压目录下新建my.ini文件&#xff0c;已经有的就直接覆盖 my.ini文件内容 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\tools\\mysql-8.1.0-win…...

ubuntu+ros新手笔记(三):21讲没讲到的MoveIt2

1 安装MoveIt2 安装参照在ROS2中&#xff0c;通过MoveIt2控制Gazebo中的自定义机械手 安装 MoveIt2可以选择自己编译源码安装&#xff0c;或者直接从二进制安装。 个人建议直接二进制安装&#xff0c;可以省很多事。 sudo apt install ros-humble-moveitmoveit-setup-assistan…...

Charles简单压力测试

01、接口请求次数&#xff0c;并发量&#xff0c;请求延迟时间均可配置 选中需要进行测试的接口&#xff0c;鼠标右键选中【repeat advance】 02、设置并发参数 下面的图中&#xff0c;选择了1个接口&#xff0c;每次迭代中1个接口同时请求&#xff0c;迭代1000次&#xff08…...

决策树的生成与剪枝

决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述&#xff0c;我们对上节课中的训练样本进行编号&#xff0c;每个样本加一个ID值&#xff0c;如图所示…...

对象克隆与单例模式的实现

一、引言 在 C 编程中&#xff0c;对象克隆和单例模式是两个非常重要的概念。对象克隆可以帮助我们快速创建具有相同状态的对象副本&#xff0c;而单例模式则可以确保一个类只有一个实例&#xff0c;并提供全局访问点。本文将详细介绍 C 中如何实现对象的克隆以及单例模式。 …...

在 Linux 系统中,让 apt 使用 HTTP 代理

在 Linux 系统中&#xff0c;要让 apt 使用 HTTP 代理&#xff0c;有几种方法可以实现&#xff1a; ### 1. 临时设置代理 你可以通过设置环境变量来临时为 apt 命令设置代理。这种方法不需要修改任何配置文件&#xff0c;只需在命令行中设置环境变量即可。例如&#xff1a; …...

中国气象局:2024年第二批“气象数据要素×”典型案例(附下载)

11月25日&#xff0c;中国气象局通报2024年第二批“气象数据要素”典型案例。此次遴选充分结合首届“数据要素”大赛获奖案例&#xff0c;旨在进一步号召各级气象部门充分学习借鉴先进经验和做法&#xff0c;持续推动高价值气象数据产品开发利用&#xff0c;挖掘气象数据要素应…...

Android绘图Path基于LinearGradient线性渐变,Kotlin(1)

Android绘图Path基于LinearGradient线性渐变&#xff0c;Kotlin&#xff08;1&#xff09; import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.LinearGradient import android.graphics.Paint import and…...

基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点

知识点&#xff1a; 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用&#xff1a; 1、反编译-得到源码-源码提取资产&#xff08;泄漏的配置信息&#xff09;-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…...

vue+ts提交数据时不提交(剔除)某项数据

关键代码 // 假设这是原始要提交的数据数组 const dataArray [{areaConfId: ,areaName: ,cityInfo: [],provinceList: [],cityList: []} ];// 使用map方法遍历数组中的每个对象&#xff0c;通过解构赋值和对象展开运算符去除cityInfo字段 const newDataArray dataArray.map…...

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…...

Jenkins搭建并与Harbor集成上传镜像

Jenkins介绍 Jenkins 是一个开源的自动化服务器&#xff0c;广泛用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;的实践中。它帮助开发人员自动化构建、测试和部署过程&#xff0c;从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持…...

FutureCompletableFuture实战

1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程&#xff0c;但是这两种方法都有一个问题就是&#xff1a;没有返回值&#xff0c;也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景&#xff0c;而Fu…...

Amazon与Shopee平台对比:跨境卖家如何选对平台打开市场?

在跨境电商领域&#xff0c;选择合适的平台对卖家能否成功打开市场至关重要。如今&#xff0c;Amazon和Shopee成为了众多卖家的热门选择。一个以全球化布局和高端市场著称&#xff0c;一个则专注东南亚新兴市场的潜力。两者各有优势&#xff0c;但也需要根据卖家的业务模式、目…...

【项目实战】redis实现websocket分布式消息推送服务

由于redis并非专业的MQ中间件&#xff0c;消息的防丢失策略并不完整&#xff0c;存在丢失消息的可能。该方案为在再pc web管理平台的右下角弹出&#xff0c;显示新接收到的消息数&#xff0c;哪怕没有收到这个通知&#xff0c;也可以自己在消息中心看看。所以对可靠性要求不高。…...

(自用)配置文件优先级、SpringBoot原理、Maven私服

配置优先级 之前介绍过SpringBoot中支持三类配置文件.properties、.yml和.yaml&#xff0c;他们三者之间也是有着优先级顺序的&#xff0c;为.properties➡.yml➡.yaml。 同时SpringBoot为了增强程序的拓展性&#xff0c;除了支持配置文件属性配置&#xff0c;还支持Java系统属…...

在windows系统中使用labelimg对图片进行标注之工具安装及简单使用

一.背景 还是之前的主题&#xff0c;使用开源软件为公司搭建安全管理平台&#xff0c;从视觉模型识别安全帽开始。我是从运行、训练、标注倒过来学习的。本次主要是学习标注工具labelimg的安装及简单使用。 二.下载 LabelImg是一款广受欢迎的开源图像标注工具&#xff0c;为计…...

数字图像处理技术期末复习

1. 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&#xff1f; 题目&#xff1a; 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&a…...

点云空洞的边界识别提取 pso-bp 神经网络的模型来修复点云空洞 附python代码

代码是一个Python程序,用于处理3D点云数据,特别是检测和修复点云中的孔洞区域。 1. **导入库**: - `numpy`:用于数学运算。 - `open3d`:用于处理3D数据和可视化。 - `torch`:PyTorch库,用于深度学习。 - `torch.nn`和`torch.optim`:PyTorch的神经网络和优…...

【AutoDL】通过【SSH远程连接】【vscode】

小帅碎碎念 0. 起因1. SSH信息获取2. 给你的vscode安装支持SSH远程连接的插件3. SSH远程连接入口4. 输入密码登陆5. 总结 0. 起因 之前使用AutoDL和Jupyter进行代码编辑和执行确实很方便&#xff0c;尤其是对于交互式数据分析项目。然而&#xff0c;也存在一些限制和不便之处&…...

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...

短链接服务

一 功能描述 1.短链接是将长连接转化为短连接使得链接变得美观清爽&#xff0c;让用户点击率更高&#xff0c;同时规避原始链接中一些关键词、域名屏蔽等问题&#xff0c;最终利用短链每次跳转都需要经过后端的特性&#xff0c;在跳转过程中做异步埋点&#xff0c;用于效果数据…...

【Vue3学习】setup语法糖中的ref,reactive,toRef,toRefs

在 Vue 3 的组合式 API&#xff08;Composition API&#xff09;中&#xff0c;ref、reactive、toRef 和 toRefs 是四个非常重要的工具函数&#xff0c;用于创建和管理响应式数据。 一、ref 用ref()包裹数据,返回的响应式引用对象&#xff0c;包含一个 .value 属性&#xff0…...

Halcon中dots_image(Operator)算子原理及应用详解

在HALCON中&#xff0c;dots_image算子是一个用于增强图像中圆点效果的强大工具&#xff0c;特别适合于点的分割&#xff0c;以及OCR&#xff08;光学字符识别&#xff09;应用程序中增强点状印刷字体。以下是对dots_image (ImageResult, DotImage, 5, ‘dark’, 2)算子原理及应…...

【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[5]--memchr

C语言中的memchr函数用于在内存块中搜索一个特定的字符(实际上是unsigned char类型的值),并返回该字符第一次出现的指针。虽然这个函数在内存搜索中非常有用,但它也存在一些陷阱。 一、功能与用法 功能:memchr函数在指定的内存块中搜索第一次出现的特定字符,并返回一个…...

【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试

服务器端 udpserver/main.go package mainimport ("fmt""net""sync""sync/atomic" )var (clientCounter uint64 0 // 客户端连接计数器mu sync.Mutex )func main() {addr, err : net.ResolveUDPAddr("udp", &q…...

【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容

背景 在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时&#xff0c;发现引入了一个 wallpaper 库&#xff0c;这个库的入口文件是 index.js&#xff0c;但是 package.json 文件下的 type:"module"&#xff0c;这样造成了无论你使用 import from 还是 require&…...

【SpringBoot 调度任务】

在 Spring Boot 中实现调度任务&#xff08;Scheduled Tasks&#xff09;&#xff0c;通过使用 EnableScheduling 和 Scheduled 注解来完成。 添加依赖启用调度任务支持创建调度任务运行应用程序 添加依赖 pom.xml 文件中有以下依赖项&#xff1a; <dependency><gro…...

Android v4和v7冲突

android.useAndroidXtrue android.enableJetifiertruev4转成AndroidX...

【HarmonyOS之旅】HarmonyOS开发基础知识(一)

目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...

【排序算法】——插入排序

目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作&#xff0c;它的功能是将一个数据元素&#xff08;或记录&#xff09;的任意序列&…...

Vue todoList小项目记录

最初代码 简单搭一个vue2的小项目 App.vue <template><div id"app"><!-- 容器 --><div class"todo-container"><div class"todo-wrap"><!-- 头部 --><MyHeader :addTodo"addTodo"></…...

SQL题目笔记

一、根据需求创建表&#xff08;设计合理的数据类型、长度)...

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行&#xff0c;但今天启动时却显示“Error loading operating system”&#xff08;加载操作系统错误&#xff09;。我已经仔细检查了硬盘、接线、内存、CPU和电源&#xff0c;确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用&#xff0c;说明不是硬…...

Nginx 在不同操作系统下的安装指南

Nginx 在不同操作系统下的安装指南 一、Linux 系统下 Nginx 的安装 &#xff08;一&#xff09;基于 Ubuntu 系统 更新软件包列表 打开终端&#xff0c;首先执行sudo apt-get update命令。这一步是为了确保系统的软件包列表是最新的&#xff0c;能够获取到最新版本的 Nginx 及…...