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

前馈神经网络回归(ANN Regression)从原理到实战

前馈神经网络回归(ANN Regression)从原理到实战

一、回归问题与前馈神经网络的适配性分析

在机器学习领域,回归任务旨在建立输入特征与连续型输出变量之间的映射关系。前馈神经网络(Feedforward Neural Network)作为最基础的神经网络架构,通过多层非线性变换,能够有效捕捉复杂的非线性映射关系,尤其适合处理传统线性模型难以建模的高维、非线性回归问题。

1.1 回归任务核心特征

  • 输出空间连续性:区别于分类任务的离散标签,回归输出是连续实数域(如房价预测、温度预测)
  • 误差度量方式:常用均方误差(MSE)、平均绝对误差(MAE)作为损失函数,其中MSE因可导性强成为梯度下降的首选

1.2 网络架构设计要点

  • 输出层配置:取消分类任务中的Softmax激活函数,直接使用线性激活(即恒等映射)
  • 隐藏层激活:常用ReLU/Swish激活函数解决梯度消失问题,输出范围特性对比:
    # 常见激活函数输出范围
    activation_comparison = {'ReLU': '(0, +∞)','Swish': '(0, +∞)',  # 自门控激活函数'Tanh': '(-1, 1)',    # 双曲正切'Sigmoid': '(0, 1)'   # 逻辑斯蒂
    }
    
  • 网络深度选择:浅层网络(1-2隐藏层)适合中小规模数据集,深层网络需配合批量归一化(BN)、残差连接等技术

二、数学原理与算法实现

2.1 网络结构形式化定义

设输入层维度为 n i n n_{in} nin,隐藏层维度为 [ n 1 , n 2 , . . . , n L ] [n_1, n_2, ..., n_L] [n1,n2,...,nL],输出层维度 n o u t = 1 n_{out}=1 nout=1(单变量回归),则第 l l l层输出:
z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) a ( l ) = f ( l ) ( z ( l ) ) z^{(l)} = W^{(l)}a^{(l-1)} + b^{(l)} \\ a^{(l)} = f^{(l)}(z^{(l)}) z(l)=W(l)a(l1)+b(l)a(l)=f(l)(z(l))
其中 f ( l ) f^{(l)} f(l)为第 l l l层激活函数,输出层 a ( L ) = z ( L ) a^{(L)} = z^{(L)} a(L)=z(L)(线性激活)

2.2 损失函数与优化目标

采用均方误差(MSE)作为损失函数:
L = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 = 1 m ∥ y − y ^ ∥ 2 2 \mathcal{L} = \frac{1}{m}\sum_{i=1}^m (y_i - \hat{y}_i)^2 = \frac{1}{m}\|\mathbf{y} - \hat{\mathbf{y}}\|_2^2 L=m1i=1m(yiy^i)2=m1yy^22
优化目标为最小化 L \mathcal{L} L,通过反向传播算法计算梯度:
∂ L ∂ W ( l ) = 1 m δ ( l ) ( a ( l − 1 ) ) T ∂ L ∂ b ( l ) = 1 m δ ( l ) \frac{\partial \mathcal{L}}{\partial W^{(l)}} = \frac{1}{m} \delta^{(l)} (a^{(l-1)})^T \\ \frac{\partial \mathcal{L}}{\partial b^{(l)}} = \frac{1}{m} \delta^{(l)} W(l)L=m1δ(l)(a(l1))Tb(l)L=m1δ(l)
其中 δ ( l ) \delta^{(l)} δ(l)为第 l l l层误差项,满足递推关系:
δ ( L ) = a ( L ) − y δ ( l ) = ( W ( l + 1 ) ) T δ ( l + 1 ) ⊙ f ′ ( l ) ( z ( l ) ) \delta^{(L)} = a^{(L)} - \mathbf{y} \\ \delta^{(l)} = (W^{(l+1)})^T \delta^{(l+1)} \odot f'^{(l)}(z^{(l)}) δ(L)=a(L)yδ(l)=(W(l+1))Tδ(l+1)f(l)(z(l))

2.3 TensorFlow/Keras实现范式

import tensorflow as tf
from tensorflow.keras import layers# 1. 数据预处理(以波士顿房价为例)
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScalerdata = load_boston()
X, y = data.data, data.target.reshape(-1, 1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 2. 模型构建(含正则化的3层网络)
model = tf.keras.Sequential([layers.Dense(64, activation='swish', kernel_regularizer='l2', input_shape=(13,)),layers.BatchNormalization(),layers.Dropout(0.2),layers.Dense(32, activation='swish', kernel_regularizer='l2'),layers.BatchNormalization(),layers.Dropout(0.1),layers.Dense(1)  # 输出层无激活函数
])# 3. 编译与训练
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss='mean_squared_error',metrics=[tf.keras.metrics.RootMeanSquaredError(name='rmse')]
)history = model.fit(X_train, y_train,epochs=100,batch_size=32,validation_split=0.1,verbose=1
)# 4. 模型评估
test_loss = model.evaluate(X_test, y_test, verbose=0)
print(f"Test RMSE: {np.sqrt(test_loss):.2f}")

三、关键技术点解析

3.1 激活函数选择策略

激活函数优势场景注意事项
ReLU通用隐藏层需关注Dead ReLU问题(建议使用Leaky ReLU变种)
Swish深层网络计算开销略高,需开启混合精度训练
Tanh输出需对称场景梯度消失较严重,仅推荐浅层网络

3.2 正则化技术组合方案

  1. 权重衰减:通过L2正则化约束参数空间(如kernel_regularizer=regularizers.l2(0.01)
  2. Dropout层:在全连接层后添加,推荐率0.1-0.5(避免过度正则化)
  3. 早停法:监控验证集损失,连续5-10轮无下降则终止训练
# Keras早停回调配置
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss',patience=5,restore_best_weights=True
)

3.3 数据预处理最佳实践

  • 标准化:输入特征缩放至N(0,1)分布,提升梯度下降效率
  • 异常值处理:通过IQR方法检测并修正异常样本(回归任务对异常值更敏感)
  • 数据增强:针对图像回归任务可使用旋转、缩放等变换,数值型数据建议生成合成样本

四、进阶优化与性能调优

4.1 优化器选择对比

优化器适用场景超参数建议
SGD大规模数据配合动量(0.9)或Nesterov加速
Adam通用场景初始学习率1e-3,衰减策略(每50epoch乘以0.1)
RMSprop稀疏特征衰减率0.9,ε=1e-8

4.2 网络结构搜索技巧

  1. 隐藏层维度:采用指数增长模式(如64→128→256)或贝叶斯优化
  2. 激活函数组合:尝试混合激活(前两层Swish+最后一层ReLU)
  3. 残差连接:当网络深度≥4层时,添加跨层连接防止梯度消失

4.3 可视化诊断工具

# 训练过程可视化
import matplotlib.pyplot as pltplt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(history.history['loss'], label='Train Loss')
plt.plot(history.history['val_loss'], label='Val Loss')
plt.xlabel('Epochs')
plt.ylabel('MSE')
plt.legend()plt.subplot(1, 2, 2)
y_pred = model.predict(X_test)
plt.scatter(y_test, y_pred, alpha=0.6)
plt.plot([0, 50], [0, 50], 'r--', lw=2)
plt.xlabel('True Value')
plt.ylabel('Prediction')
plt.show()

五、行业应用案例解析

5.1 金融市场波动率预测

  • 数据特征:包含MACD、RSI等12个技术指标,时间序列窗口长度30
  • 模型架构:3层全连接网络(64→32→16),配合时间序列拆分策略
  • 性能指标:年化预测误差率降低至8.7%,优于传统GARCH模型

5.2 工业设备剩余寿命预测

  • 关键技术
    1. 基于注意力机制的特征加权(非前馈网络扩展,但可结合)
    2. 生存分析损失函数(如Cox比例风险模型与神经网络结合)
  • 实施效果:预测精度提升40%,维修成本降低25%

5.3 医疗影像密度值回归

  • 数据处理:DICOM图像预处理为128x128灰度图,提取1024维特征向量
  • 模型优化:使用混合精度训练,推理速度提升3倍(RTX 3090上达200FPS)
  • 临床价值:骨密度预测误差≤0.05g/cm²,达到临床诊断标准

六、常见问题与解决方案

6.1 过拟合解决方案对比

问题表现验证集损失远高于训练集
轻量方案增加Dropout层(0.3比率)
进阶方案标签平滑+权重衰减组合
终极方案集成学习(Stacking多个网络)

6.2 梯度消失应对策略

  1. 激活函数调整:ReLU替代Sigmoid,或使用带泄露的变体
  2. 归一化技术:在每层激活后添加Batch Normalization
  3. 初始化改进:使用He Normal(ReLU适用)或Xavier初始化

6.3 训练不收敛处理流程

  1. 检查学习率:尝试1e-4、1e-3、5e-4等不同初始值
  2. 验证数据质量:排查是否存在特征-标签不匹配样本
  3. 简化模型:先训练单层网络确认数据通路正确性

七、发展趋势与技术前沿

7.1 与其他技术的融合方向

  1. 迁移学习:在预训练模型基础上微调,减少小样本场景下的训练成本
  2. 神经架构搜索(NAS):自动化网络结构设计,典型案例:谷歌AutoML回归模型
  3. 混合模型:前馈网络与传统回归模型(如随机森林)的Stacking集成

7.2 轻量化部署技术

  1. 模型量化:FP32→FP16→INT8,移动端推理速度提升5-10倍
  2. 知识蒸馏:将复杂网络知识迁移至轻量模型,保持精度同时降低参数量
  3. 边缘计算适配:针对ARM架构优化,如TensorFlow Lite部署方案

7.3 可解释性研究进展

  1. 特征归因方法:SHAP值、LIME算法解析各输入特征的贡献度
  2. 可视化工具:TensorFlow Model Visualization工具包,支持层激活可视化
  3. 结构可解释性:使用稀疏连接网络(如MoE混合专家模型),增强决策路径透明度

结语

前馈神经网络回归作为解决非线性映射问题的核心技术,在保持模型简洁性的同时具备强大的拟合能力。通过合理的网络架构设计、正则化策略和优化技巧,能够有效应对实际工程中的复杂回归任务。建议开发者从基础案例入手,逐步尝试不同的激活函数、正则化组合和优化器配置,结合具体业务场景进行针对性调优。随着边缘计算和自动化机器学习技术的发展,前馈神经网络回归在工业智能、医疗诊断等领域将释放更大的应用潜力。

相关文章:

前馈神经网络回归(ANN Regression)从原理到实战

前馈神经网络回归(ANN Regression)从原理到实战 一、回归问题与前馈神经网络的适配性分析 在机器学习领域,回归任务旨在建立输入特征与连续型输出变量之间的映射关系。前馈神经网络(Feedforward Neural Network)作为最基础的神经网络架构&a…...

RNN/LSTM原理与 PyTorch 时间序列预测实战

🕰️ RNN / LSTM 原理与 PyTorch 时间序列预测实战 在处理时间序列数据、语音信号、文本序列等连续性强的问题时,循环神经网络(RNN)及其改进版本 LSTM(长短期记忆网络)是最常见也最有效的模型之一。本文将深入讲解 RNN 和 LSTM 的核心原理,并通过 PyTorch 实现一个时间…...

Docker容器镜像与容器常用操作指南

一、镜像基础操作 搜索镜像 docker search <镜像名>在Docker Hub中查找公开镜像&#xff0c;例如&#xff1a; docker search nginx拉取镜像 docker pull <镜像名>:<标签>从仓库拉取镜像到本地&#xff0c;标签默认为latest&#xff1a; docker pull nginx:a…...

1:OpenCV—图像基础

OpenCV教程 头文件 您只需要在程序中包含 opencv2/opencv.hpp 头文件。该头文件将包含应用程序的所有其他必需头文件。因此&#xff0c;您不再需要费心考虑程序应包含哪些头文件。 例如 - #include <opencv2/opencv.hpp>命名空间 所有 OpenCV 类和函数都在 cv 命名空…...

测试--BUG(软件测试⽣命周期 bug的⽣命周期 与开发产⽣争执怎么办)

1. 软件测试的⽣命周期 软件测试贯穿于软件的整个⽣命周期&#xff0c;针对这句话我们⼀起来看⼀下软件测试是如何贯穿软件的整个⽣命周期。 软件测试的⽣命周期是指测试流程&#xff0c;这个流程是按照⼀定顺序执⾏的⼀系列特定的步骤&#xff0c;去保证产品质量符合需求。在软…...

基于大模型预测围术期麻醉苏醒时间的技术方案

目录 一、数据收集与处理(一)数据来源(二)数据预处理二、大模型构建与训练(一)模型选择(二)模型训练三、围术期麻醉苏醒时间预测(一)术前预测(二)术中动态预测四、并发症风险预测(一)风险因素分析(二)风险预测模型五、基于预测制定手术方案(一)个性化手术规划…...

QT6 源(101)阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试

&#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09;属性学习与测试 &#xff1a; &#xff08;4&#xff09; &#xff08;5&#xff09; 谢谢...

电池组PACK自动化生产线:多领域电池生产的“智能引擎”

在电池产业蓬勃发展的当下&#xff0c;电池组PACK自动化生产线凭借其高效、精准、智能的优势&#xff0c;成为众多电池生产领域的核心装备。它广泛适用于数码电池、工具电池、储能电池、电动车电池以及动力电池的生产&#xff0c;有力推动了相关产业的升级与发展。 数码电池领…...

生成式AI在编程中的应用场景:从代码生成到安全检测

引言 生成式AI正在深刻改变软件开发的方式&#xff0c;从代码编写到测试、文档和维护&#xff0c;AI技术正在为每个环节带来革命性的变革。本文将深入探讨生成式AI在编程中的主要应用场景&#xff0c;分析其优势与局限性&#xff0c;并展望未来发展趋势。 主要应用场景 1. 代…...

安全牛报告解读《低空经济发展白皮书(3.0)安全体系》

一、概述 《低空经济发展白皮书&#xff08;3.0&#xff09;安全体系》由粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;发布&#xff0c;旨在构建低空经济安全发展的系统性框架&#xff0c;解决规模化低空飞行中的安全挑战。核心目标是明确安全体系需覆盖的飞…...

“2W2H”分析方法

“2W2H”是一种常用的分析方法&#xff0c;它通过回答**What&#xff08;是什么&#xff09;、Why&#xff08;为什么&#xff09;、How&#xff08;怎么做&#xff09;、How much&#xff08;多少&#xff09;**这四个问题来全面了解和分析一个事物或问题。这种方法可以帮助你…...

【数据挖掘笔记】兴趣度度量Interest of an association rule

在数据挖掘中&#xff0c;关联规则挖掘是一个重要的任务。兴趣度度量是评估关联规则的重要指标&#xff0c;以下是三个常用的兴趣度度量&#xff1a;支持度、置信度和提升度。 支持度&#xff08;Support&#xff09; 计算方法 支持度表示包含项集的事务占总事务的比例&…...

ArcGIS Pro调用多期历史影像

一、访问World Imagery Wayback&#xff0c;基本在我国范围 如下图&#xff1a; 二、 放大到您感兴趣的区域 三、 查看影像版本信息 点击第二步的按钮后&#xff0c;便可跳转至World Imagery (Wayback 2025-04-24)的相关信息。 四 、点击上图影像版本信息&#xff0c;页面跳转…...

Web3.0:互联网的去中心化未来

随着互联网技术的不断发展&#xff0c;我们正站在一个新时代的门槛上——Web3.0时代。Web3.0不仅仅是一个技术升级&#xff0c;它更是一种全新的互联网理念&#xff0c;旨在通过去中心化技术重塑网络世界。本文将深入探讨Web3.0的核心概念、技术基础、应用场景以及它对未来的深…...

java17

1.常见API之BigDecimal 底层存储方式&#xff1a; 2.如何分辨过时代码&#xff1a; 有横线的代码表示该代码已过时 3.正则表达式之字符串匹配 注意&#xff1a;如果X不是单一字符&#xff0c;需要加[]中括号 注意&#xff1a;1.想要表达正则表达式里面的.需要\\. 2.想要表…...

游戏引擎学习第283天:“让‘Standing-on’成为一个更严谨的概念

如果同时使用多个OpenGL上下文&#xff0c;并且它们都有工作负载&#xff0c;GPU或GPU驱动程序如何决定调度这些工作&#xff1f;我注意到Windows似乎优先处理活动窗口的OpenGL上下文&#xff08;即活动窗口表现更好&#xff09;&#xff0c;挺有意思的…… 当多个OpenGL上下文…...

小白上手RPM包制作

目录 rpm常用命令 安装环境-Ruby 安装环境-fpm 关于服务器 打包-打包二进制工程 .fpm配置文件 打包-打没有文件的包 RPM 包微调 命令行参数 fpm --help RPM 签名 打包-制作NGINX的RPM包 关于rpmbuild 简单使用 打包之前的准备工作 rpmbuild 打包 - sniproxy …...

电商热销榜的5种实现方案

文章目录 1. MySQL 聚合查询&#xff1a;传统统计法2. Redis Sorted Set&#xff1a;内存排行榜3. Elasticsearch 实时聚合&#xff1a;搜索专家4. 缓存异步更新&#xff1a;榜单的幕后推手5. 大数据离线批处理&#xff1a;夜间魔法师 博主介绍&#xff1a;全网粉丝10w、CSDN合…...

车载诊断进阶篇 --- 车载诊断概念

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

AD 多层线路及装配图PDF的输出

装配图的输出&#xff1a; 1.点开‘智能PDF’ 2. 设置显示顶层&#xff1a; 设置显示底层&#xff1a; 多层线路的输出 同样使用‘智能PDF’...

FramePack - 开源 AI 视频生成工具

&#x1f3ac; 项目简介 由开发者 lllyasviel 创建的一个轻量级动画帧处理工具库&#xff0c;专门用于游戏开发、动画制作和视频处理中的帧序列打包与管理。该项目采用高效的算法实现&#xff0c;能够显著提升动画资源的处理效率。 此 AI 视频生成项目&#xff0c;旨在通过低显…...

“this”这个关键字

一、什么是“this”&#xff1f; 简单来说&#xff0c;“this”是每个非静态成员函数隐含的指针&#xff0c;它指向调用该成员函数的那个对象本身。 换句话说&#xff0c;当你调用对象的方法时&#xff0c;编译器会自动传入一个指针&#xff0c;指向你调用的“那个对象”&…...

问题处理——在ROS2(humble)+Gazebo+rqt下,无法显示仿真无人机的相机图像

文章目录 前言一、问题展示二、解决方法&#xff1a;1.下载对应版本的PX42.下载对应版本的Gazebo3.启动 总结 前言 在ROS2的环境下&#xff0c;进行无人机仿真的过程中&#xff0c;有时需要调取无人机的相机图像信息&#xff0c;但是使用rqt&#xff0c;却发现相机图像无法显示…...

广度和深度优先搜索(BFS和DFS)

1. 广度和深度优先搜索&#xff08;BFS和DFS&#xff09; 1.1. Python实现BFS和DFS from collections import dequeclass Graph:"""无向图类&#xff0c;支持添加边&#xff0c;并实现了 BFS&#xff08;广度优先搜索&#xff09;和 DFS&#xff08;深度优先搜…...

React和Vue在前端开发中, 通常选择哪一个

React和Vue的选择需结合具体需求&#xff1a; 选React的场景 大型企业级应用&#xff0c;需处理复杂状态&#xff08;如电商、社交平台&#xff09;团队熟悉JavaScript&#xff0c;已有React技术栈积累需要高度灵活的架构&#xff08;React仅专注视图层&#xff0c;可自由搭配…...

Vue3学习(组合式API——reactive()和ref()函数详解)

目录 一、reactive()函数。 &#xff08;1&#xff09;介绍与使用。 &#xff08;2&#xff09;简单案例演示。 二、ref()函数。 &#xff08;1&#xff09;介绍与使用。 &#xff08;2&#xff09;简单案例演示。 <1>ref()函数获取响应式对象的本质与底层。 <2>基…...

数据结构 -- 树形查找(一)二叉排序树

二叉排序树 二叉排序树的定义 二叉排序树&#xff0c;又称二叉查找树 一棵二叉树或者是空二叉树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 左子树上所有结点的关键字均小于根结点的关键字 右子树上所有结点的关键字均大于根结点的关键字 左子树和右子树又各是…...

【实战教程】从零实现DeepSeek AI多专家协作系统 - Spring Boot+React打造AI专家团队协作平台

&#x1f680; 本项目是DeepSeek大模型应用系列的V3版本&#xff0c;基于V1和V2版本的功能进行全面升级&#xff0c;引入了多智能体协作机制&#xff01; 系列教程推荐阅读顺序&#xff1a; 【V1版本】零基础搭建DeepSeek大模型聊天系统 - Spring BootReact完整开发指南【V2版本…...

React事件机制

React事件机制 React 的事件机制是其实现高效、跨浏览器交互的核心系统&#xff0c;它通过 合成事件&#xff08;SyntheticEvent&#xff09;、事件委托&#xff08;Event Delegation&#xff09;、事件冒泡&#xff08;Bubbling&#xff09; 和 事件派发&#xff08;Dispatch…...

LeetCode 45. 跳跃游戏 II(中等)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…...

LeetCode 热题 100 437. 路径总和 III

LeetCode 热题 100 | 437. 路径总和 III 大家好&#xff0c;今天我们来解决一道经典的二叉树问题——路径总和 III。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求计算二叉树中节点值之和等于给定目标值 targetSum 的路径数目。 问题描述 给定一个二叉树的根节点 ro…...

力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙​编辑力扣300.最长递增子序列

目录 力扣.1471数组的k个最强值 力扣1576.替换所有的问号 力扣1419.数青蛙​编辑 力扣300.最长递增子序列 力扣.1471数组的k个最强值 class Solution {public static int[] getStrongest(int[] arr,int k) {if(karr.length){return arr;}int []retnew int[k];int narr.lengt…...

使用itextsharp5.0版本来合并多个pdf文件并保留书签目录结构

using System; using System.Collections.Generic; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf;public class PdfMergeUtility {/// <summary>/// 合并多个PDF文件并保留书签目录结构/// </summary>/// <param name"inputFiles&q…...

2025-5-15Vue3快速上手

1、setup和选项式API之间的关系 (1)vue2中的data,methods可以与vue3的setup共存 &#xff08;2&#xff09;vue2中的data可以用this读取setup中的数据&#xff0c;但是反过来不行&#xff0c;因为setup中的this是undefined &#xff08;3&#xff09;不建议vue2和vue3的语法混用…...

Kafka消费者分组机制深度解析

一、集群协调者 1.1 GroupCoordinator的元数据管理 每个Broker内置的GroupCoordinator实例通过哈希算法确定消费者组的归属权。其内存模型维护三个核心数据结构&#xff1a; 成员注册表&#xff1a;采用跳表结构存储消费者ID与心跳时间戳&#xff0c;支持快速查询和过期检测…...

Python 类变量与实例变量完全指南:区别、使用场景及常见陷阱

类变量与实例变量的区别总结 代码示例 class Example:class_var "我是类变量&#xff0c;所有实例共享我" # 类变量def __init__(self, name):self.name name # 实例变量&#xff0c;每个实例独有def modify_class_var(self, new_value):Example.class_var ne…...

Ubuntu Linux bash的相关默认配置文件内容 .profile .bashrc, /etc/profile, /etc/bash.bashrc等

文章目录 文件的source顺序/etc/profile&#xff1a;系统级配置/etc/bash.bashrc&#xff1a;bash终端的系统级配置~/.profile&#xff1a;用户级配置~/.bashrc bash&#xff1a;终端的主要配置~/.bash_logout&#xff1a;bash终端登出时清理 建议的额外配置&#xff1a; 安装 …...

redis解决常见的秒杀问题

title: redis解决常见的秒杀问题 date: 2025-03-07 14:24:13 tags: redis categories: redis的应用 秒杀问题 每个店铺都可以发布优惠券&#xff0c;保存到 tb_voucher 表中&#xff1b;当用户抢购时&#xff0c;生成订单并保存到 tb_voucher_order 表中。 订单表如果使用数据…...

Springboot3自定义starter笔记

场景&#xff1a;抽取聊天机器人场景&#xff0c;它可以打招呼。 效果&#xff1a;任何项目导入此 starter 都具有打招呼功能&#xff0c;并且问候语中的人名需要可以在配置文件中修改。 创建自定义 starter 项目&#xff0c;引入 spring-boot-starter 基础依赖。 <dependen…...

Modern C++(一)基本概念

1、基本概念 1.1、注释 注释在翻译阶段3会被替换为单个空白字符从程序中移除 1.2、名字与标识符 标识符是一个由数字、下划线、大小写字符组成的任意长度序列。有效的标识符首个字符必须是以A-Z、a-z、下划线开头&#xff0c;。有效的标识符其他字符可以是0-9、A-Z、a-z、下…...

Apache HttpClient 5 用法-Java调用http服务

Apache HttpClient 5 核心用法详解 Apache HttpClient 5 是 Apache 基金会推出的新一代 HTTP 客户端库&#xff0c;相比 4.x 版本在性能、模块化和易用性上有显著提升。以下是其核心用法及最佳实践&#xff1a; 一、添加依赖 Maven 项目&#xff1a; <dependency><…...

Python中plotext 库详细使用(命令行界面中直接绘制各种图形)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 plotext概述1.1 plotext介绍1.2 安装二、基本用法2.1 简单绘图2.2 散点图2.3 折线图2.4 条形图2.5 直方图2.6 标题和坐标轴标签2.7 网格和坐标轴2.8 颜色和样式2.9 多图叠加三、高级功能3.1 多图绘制3.2 对数坐标3.3…...

【Java Web】速通JSON

参考笔记&#xff1a;JavaWeb 速通JSON_java webapi调用传json与head-CSDN博客 目录 1.JSON基本介绍 2.JSON串的格式 3.JSON在客户端/浏览器的使用 3.1 JavaScript对象和JSON串的相互转换 3.2 案例演示 4.JSON在服务端的使用 4.1 基本说明 4.2 应用场景 4.2.1 JSON字…...

Ubuntu 20.04 LTS 中部署 网页 + Node.js 应用 + Nginx 跨域配置 的详细步骤

Ubuntu 20.04 LTS 中部署 网页 Node.js 应用 Nginx 跨域配置 的详细步骤 一、准备工作1、连接服务器2、更新系统 二、安装 Node.js 环境1、安装 Node.js 官方 PPA&#xff08;用于获取最新稳定版&#xff09;&#xff1a;2、安装 Node.js 和 npm&#xff08;LTS 长期支持版本…...

java中XML的使用

文章目录 什么是XML特点XML作用XML的编写语法基本语法特殊字符编写 约束XML的书写格式DTD文档schema文档属性命名空间XML命名空间的作用 解析XML的方法​​DOM解析XMLDOM介绍DOM解析包&#xff1a;org.w3c.dom常用接口DOM解析包的使用保存XML文件添加DOM节点修改/删除DOM节点 S…...

Spark SQL 之 Analyzer

Spark SQL 之 Analyzer // Special case for Project as it supports lateral column alias.case p: Project =>val resolvedNoOuter = p.projectList.map(resolveExpressionByPlanChildren(_, p...

Java - Junit框架

单元测试&#xff1a;针对最小的功能单元(方法)&#xff0c;编写测试代码对该功能进行正确性测试。 Junit&#xff1a;Java语言实现的单元测试框架&#xff0c;很多开发工具已经集成了Junit框架&#xff0c;如IDEA。 优点 编写的测试代码很灵活&#xff0c;可以指某个测试方法…...

麒麟系统ARM64架构部署mysql、jdk和java项目

麒麟系统ARM64架构部署mysql、jdk和java项目 一、mysql8的安装 操作步骤&#xff1a; 先下载mysql安装包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 由于官网里&#xff0c;mysql5.7以及更低版本不支持arm版本的&#xff0c;只能安装mysql8。…...

修复“ImportError: DLL load failed while importing lib: 找不到指定的程序”笔记

#工作记录 一、问题描述 在运行CosyVoice_For_Windows项目时&#xff0c;出现以下报错&#xff1a; Traceback (most recent call last): File "D:\ProgramData\anaconda3\envs\CosyVoice\Lib\pydoc.py", line 457, in safeimport module __import__(path) …...

vllm量化03—INT4 W4A16

本系列基于Qwen2.5-7B&#xff0c;学习如何使用vllm量化&#xff0c;并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为&#xff1a; OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第3篇——INT4 W4A16 一、量化 f…...