模型训练基本概念-赛博炼丹

文章目录

    • 拓展知识
    • 基础名词解释(语义库更新)
    • 机器学习任务流程
    • 模型训练基本流程
    • 模型训练详细流程
    • 正向传播与反向传播
      • 正向传播-求误差值
      • 反向传播-求参数值
    • 学习率
    • 激活函数
      • 激活函数-为什么希望激活函数输出均值为0?
      • 激活函数 — softmax & tanh
      • 激活函数 — ReLU(MVP:简单粗暴)
      • 激活函数 — Swish(ReLU进阶版,用的最多)
    • 损失函数
      • 损失函数 — MSE & MAE
      • 损失函数 — 交叉熵损失
    • 输出函数
    • 优化器
  • 初步总结

拓展知识

理想情况下,我们希望模型能够学习到数据的内在规律和结构,以便在未见过的数据上进行准确的预测或分类。

  • 模型训练最终获得的产出就是模型结构+一批权重参数和阈值集合
  • 模型训练和应用都需要计算-算力
  • 模型最终训练效果无法被解释推理过程和推理依据。

实际上大多数情况是黑盒训练,配置好激活函数,损失函数等参数,扔进去数据,模型自动根据配置调权重参数和阈值等。
通俗理解
自监督学习-暴力出奇迹:自监督硬找文本规律,基于庞大的数据量实现的”过拟合“行为,互联网全部数据都是训练集那么拟合训练集就变成正确的事情了。
硬找文本规律训练语言理解能力,文本挖坑硬填训练语言生成能力。

相当于背过全网知识,基于存量知识再拼接总结生成
AIGC技术的核心思想是利用人工智能算法生成具有一定创意和质量的内容。通过训练模型和大量数据的学习,AIGC可以根据输入的条件或指导,生成与之相关的内容。例如,通过输入关键词、描述或样本,AIGC可以生成与之相匹配的文章、图像、音频等。

发展障碍
硬件和能源决定大模型发展上限。
实际上核心问题:显卡-算力
理论上最终上限是能源上限,目前是算力限制(伪垄断导致,沙子有的是显卡随便造,算力应该是没有上限的)。
硬件架构:能源(电能)+内存(大模型架构)+显卡(算力)

在这里插入图片描述
通用模型的局限性
ChatGPT数据来源都是公网,因此只能解决通用公众问题,要想建立解决业务问题模型需要用公司内部数据训练专用模型
因此若公司想建立专用模型,需要各自搭建训练专属模型。

基础名词解释(语义库更新)

在这里插入图片描述

样本:一条数据例子;
特征:被观测对象的可测量特性,例如西瓜的颜色、瓜蒂、纹路、敲击声等;
特征向量:用一个 d 维向量表征一个样本的所有或部分特征;(ax,by,cz,…,zn);

1、 一个维度就是一个特征,维度越多,变量越多,未知参数越多,事物特征被分析的越彻底。
2、将具体的事物拆分为d维特征向量就是数据标注。

标签(label)/真实值:样本特征对应的真实类型或者真实取值,即正确答案;
数据集(dataset):多条样本组成的集合;
训练集(train):用于训练模型的数据集合;
评估集(eval):用于在训练过程中周期性评估模型效果的数据集合;
测试集(test):用于在训练完成后评估最终模型效果的数据集合;

训练集和评估集是训练模型时用的数据集,分别起学习和验证的作用。

模型:可以从数据中学习到的,可以实现特定功能/映射的函数;
误差/损失:样本真实值与预测值之间的误差.;
预测值:样本输入模型后输出的结果;
模型训练:使用训练数据集对模型参数进行迭代更新的过程;
模型收敛:任意输入样本对应的预测结果与真实标签之间的误差稳定;
模型评估:使用测试数据和评估指标对训练完成的模型的效果进行评估的过程;
模型推理/预测:使用训练好的模型对数据进行预测的过程;
模型部署:使用服务加载训练好的模型,对外提供推理服务;

机器学习任务流程

注意事项:

  • 数据集分类是随机分配
  • ChatGPT的出现极大的释放了数据标注的人工量。

在这里插入图片描述

模型训练基本流程

1、数据标注
简单来说:数据标注就是将具体事物拆分为多维度变量值(瓜茎卷曲程度:0.8,瓜皮颜色:0.6,瓜尺寸:0.9),代入模型(ax+by+cz=甜|酸)中能够求解出参数值(各个维度的权重值对于正确答案的影响)。

特征:被观测对象的可测量特性,例如西瓜的颜色、瓜蒂、纹路、敲击声等;
特征向量:用一个 d 维向量表征一个样本的所有或部分特征;(ax,by,cz,…,zn);

总结
1、一个维度就是一个特征,维度越多,未知参数越多,事物特征被分析的越彻底。
2、将具体的事物拆分为d维特征向量就是数据标注。

2、总训练集分为多个Batch size。
3、求和(权重参数*特征变量值)=预测值。
4、训练完之后根据真实值和预测值的Loss函数评估,不断调试不断更新参数。
模型参数一开始是随机生成的或者用已有可参考参数值。

Loss函数:衡量真实值和预测值误差到底是多少损失值(量化)
在这里插入图片描述
在这里插入图片描述

模型训练详细流程

batch_size:一次性输入到模型的样本条数(上图是batch_size=1的情况)。
batch_size大小决定GPU的消耗情况。

Batch size 是一次向模型输入的数据数量,Batch size 越大,模型一次处理的数据量越大,能够更快的运行完一个Epoch,反之运行完一个Epoch更慢。
由于模型一次是根据一个 Batch size 的数据计算 Loss,然后更新模型参数,如果Batch size 过小,单个 Batch 可能与整个数据的分布有较大差异,会带来较大的噪声,导致模型难以收敛(特例的影响)
与此同时,Batch size 越大,模型单个 Step 加载的数据量越大,对于 GPU 显存的占用也越大,当 GPU 显存不够充足的情况下,较大的 Batch size 会导致 OOM(内存溢出),因此,需要针对实际的硬件情况,设置合理的 Batch size 取值。

总结:Batch size越大越好
在合理范围内,更大的 Batch size 能够:

  • 提高内存利用率,提高并行化效率;
  • 一个 Epoch 所需的迭代次数变少,减少训练时间;
  • 梯度计算更加稳定,训练曲线更平滑,下降方向更准,能够取得更好的效果;

对于传统模型,在较多场景中,较小的 Batch size 能够取得更好的模型性能;
对于大模型,往往更大的 Batch size 能够取得更好的性能。
Batch size中样本类型比例应该尽量切合Epoch的分布比例。

在这里插入图片描述

每一层layer其实是相同结构的模型,上一层分析样本后下一层更加递进分析上一层的分析结果(特征向量)。

在这里插入图片描述

1、模型结构设置
#设置神经网络结构,各层顺序相连
model = tf.keras.models.Sequential([
#下面把每个输入的图片数据展平,从28*28变为784*1的形式tf.keras.layers.Flatten(input_shape=(28, 28)),
#下面是一个全连接层,128个节点,激活函数采用Relu tf.keras.layers.Dense(128, activation=tf.nn.relu),
# 下面让20%的节点无效,不与下一层连接tf.keras.layers.Dropout(0.2),
# 下面是一个全连接层,10个节点,激活函数采用softmax tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])2、主要训练参数
#编译模型(为模型选择优化器、目标函数和性能评价指标) 
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
#训练模型-训练集
model = model.fit(x_train, y_train, epochs=1)
#评估模型正确率-评估集
model.evaluate(x_test, y_test)

Keras中的常用层举例

  • Flatten层
    用来将输入“压平”,即把多维的输入一维化,常用在数据输入或从卷积层到全连接层的过渡。
  • Dense层(全连接层)
    对上一层的神经元进行全部连接,实现特征的非线性组合。跟下一层的神经元也是全连接的。
  • Activation层
    激活层对一个层的输出施加激活函数。 在Keras中使⽤激活对象有两种方法: ⼀是单独定义⼀个激活层;二是在前置层里面通过激活选项来定义所需的激活函数。
  • Dropout层
    为输入数据施加Dropout。Dropout在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,用于防止过拟合

Compile参数

  • loss:损失函数,或称目标函数,是神经网络中的性能函数,优化的目标是使损失函数最小化。具体取值在tf.keras.losses中
  • optimizer:优化器,主要是各种梯度下降算法,优化的目标是使loss最小,具体取值在tf.keras.optimizers中
  • metrics:评价指标,确定使用哪些指标展现模型的性能,具体取值在tf.keras.metrics中

正向传播与反向传播

正向传播-求误差值

Loss函数:衡量真实值和预测值误差到底是多少损失值(量化)
求和(权重参数*特征变量值)=预测值。

Loss函数计算得出真实值和预测值的正数误差后(平方,绝对值),接下来要做的就是将误差L降低为最小,有请梯度函数。

在这里插入图片描述

反向传播-求参数值

梯度:梯度是一个向量(矢量),函数在一点处沿着该点的梯度方向变化最快,变化率最大
换而言之,自变量沿着梯度方向变化,能够使因变量(函数值)变化最大。

实际就是求导找到本次Batch size所形成的损失函数的最小值对应的Wn参数值。

在这里插入图片描述
偏导数单独求解每个参数w的变化。
阿尔法是学习率,决定参数w更新幅度。
更新参数w的目的是使L值获得最大程度降低。在这里插入图片描述

学习率

学习率(Learning Rate,LR)决定了模型参数的更新幅度,学习率越高,模型参数更新越激进,即相同 Loss 对模型参数产生的调整幅度越大,反之越小。

在这里插入图片描述
注意
如果学习率太小,会导致网络 loss 下降非常慢;
如果学习率太大,那么参数更新的幅度就非常大,产生振荡,导致网络收敛到局部最优点,或者 loss 不降反增。
在这里插入图片描述

激活函数

线性函数一次函数的别称,则非线性函数函数图像不是一条直线的函数。非线性函数包括指数函数、幂函数、对数函数、多项式函数等等基本初等函数以及他们组成的复合函数。
激活函数是多层神经网络的基础,保证多层网络不退化成线性网络。
在这里插入图片描述

下图为激活(起点)函数为简单变量和常数的情况, 最终y表达式还是一个线性函数。

在这里插入图片描述
线性模型的表达能力不够,激活函数使得神经网络可以逼近其他的任何非线性函数, 这样可以使得神经网络应用到更多非线性模型中。
在这里插入图片描述
在这里插入图片描述
激活函数 — sigmoid

  • sigmoid函数具有软饱和特性,在正负饱和区的梯度 都接近于0,只在0附近有比较好的激活特性;
  • sigmoid导数值最大0.25,也就是反向传播过程中,
    每层至少有75%的损失,这使得当sigmoid被用在隐藏层的时候,会导致梯度消失(一般5层之内就会产生) ;
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;
  • sigmoid函数涉及指数运算,导致计算速度较慢。

在这里插入图片描述

在这里插入图片描述

激活函数-为什么希望激活函数输出均值为0?

在这里插入图片描述
均值为零说明每个激活函数节点输出值有正有负,更具备多样性,调优更加灵活有效。
在上面的参数 wi 更新公式中, 对于所有 wi 都是一样的,xi 是 i - 1 层的激活函数的输出,如果像 sigmoid 一样,输出值只有正值,那么对于第 i 层的所有 wi ,其更新方向完全一致,模型为了收敛,会走 Z 字形来逼近最优解(一会全变大,一会全变小)。
在这里插入图片描述

激活函数 — softmax & tanh

softmax
在这里插入图片描述

在这里插入图片描述

tanh
在这里插入图片描述

在这里插入图片描述

激活函数 — ReLU(MVP:简单粗暴)

在这里插入图片描述
在这里插入图片描述

  • ReLU 是一个分段线性函数,因此是非线性函数;
  • ReLU 的发明是深度学习领域最重要的突破之一;
  • ReLU 不存在梯度消失问题
  • ReLU计算成本低,收敛速度比 sigmoid 快6倍;
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;

最大问题:存在 dead ReLU 问题(输入 ReLU 有负值时,ReLU 输出为0,梯度在反向传播期间无法流动,导致权重不会更新);

激活函数 — Swish(ReLU进阶版,用的最多)

在这里插入图片描述

损失函数

损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度(损失值) 的运算函数,它是一个非负实值函数
在这里插入图片描述
损失函数仅用于模型训练阶段,得到损失值后,通过反向传播来更新参数,从而降低预 测值与真实值之间的损失值,从而提升模型性能。
整个模型训练的过程就是在通过不断更新参数,使得损失函数不断逼近全局最优点(全局最小值)
不同类型的任务会定义不同的损失函数,例如回归任务重的MAE、MSE,分类任务中的 交叉熵损失等。

损失函数 — MSE & MAE

在这里插入图片描述
均方误差(mean squared error,MSE),也叫平方损失或 L2 损失,常用在最小二乘法中,它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。
在这里插入图片描述

平均绝对误差(Mean Absolute Error,MAE)是所有单个观测值与算术平均值的绝对值的平均,也被称为 L1 loss,常用于回归问题中。

损失函数 — 交叉熵损失

log 函数是很多损失函数中的重要组成部分,对于 log 函数,默认的底数 a 是 e,也就是损失函数中使用的 log 函数默认a>1。
在这里插入图片描述
【二分类】
在这里插入图片描述
N为batch_size的样本数,求本批batch_size的误差平均值。
其中,yi 为样本 i 的真实标签,正类为 1,负类为 0;pi 表示样本 i 预测为正类的概率。
【多分类】
在这里插入图片描述
N为batch_size的样本数,求本批batch_size的误差平均值。
其中,M 为类别数量;yic 符号函数,样本 i 真实类别等于 c 则为 1,否则为 0;预测样本 i 属于类别的预测概率.。

实例解释
二分类
假设有一个二分类任务,正类为1,负类为0,存在一个正样本A,当模型输出其为正类 的概率为0.8时,交叉熵损失为:
𝑜 = − (1 ∗ 𝑜(0.8) + 0 ∗ 𝑜(0.2)) = − 𝑜(0.8) = 0.0969
当模型输出其为正类的概率为0.5时,交叉熵损失为:
𝑜 = − (1 ∗ 𝑜(0.5) + 0 ∗ 𝑜(0.5)) = − 𝑜(0.5) = 0.3010
由此可见,当模型预测的误差越大时,交叉熵损失函数计算得到的损失越大
因为:0<x<1时,log求导值大于1,放大原本误差。
0.8-0.6<|log(0.8)-log(0.6)|
多分类
在这里插入图片描述
在这里插入图片描述
有如下的交叉熵损失计算:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对所有样本loss求平均:
在这里插入图片描述

输出函数

对于不同的分类任务,交叉熵损失函数使用不同的激活函数(sigmoid/softmax)获得概率输出:
【二分类】
使用sigmoid和softmax均可,注意在二分类中,Sigmoid函数,我们可以当作成它是对 一个类别的“建模.”,另一个相对的类别就直接通过1减去得到。而softmax函数,是对两个类别建模,同样的,得到两个类别的概率之和是1。
【单标签多分类】
交叉熵损失函数使用softmax获取概率输出(互斥输出)。
【多标签多分类】
交叉熵损失函数使用sigmoid获取概率输出。

优化器

优化器就是在深度学习反向传播过程中,指引损失函数(目标函数)的各个参数往正确 的方向更新合适的大小,使得更新后的各个参数让损失函数(目标函数)值不断逼近全局最小
在这里插入图片描述

初步总结

正反向传播整体流程
在这里插入图片描述

1、模型结构设置
#设置神经网络结构,各层顺序相连
model = tf.keras.models.Sequential([
#下面把每个输入的图片数据展平,从28*28变为784*1的形式tf.keras.layers.Flatten(input_shape=(28, 28)),
#下面是一个全连接层,128个节点,激活函数采用Relu tf.keras.layers.Dense(128, activation=tf.nn.relu),
# 下面让20%的节点无效,不与下一层连接tf.keras.layers.Dropout(0.2),
# 下面是一个全连接层,10个节点,激活函数采用softmax tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])2、主要训练参数
#编译模型(为模型选择优化器、目标函数和性能评价指标) 
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
#训练模型-训练集
model = model.fit(x_train, y_train, epochs=1)
#评估模型正确率-评估集
model.evaluate(x_test, y_test)

Keras中的常用层举例

  • Flatten层
    用来将输入“压平”,即把多维的输入一维化,常用在数据输入或从卷积层到全连接层的过渡。
  • Dense层(全连接层)
    对上一层的神经元进行全部连接,实现特征的非线性组合。跟下一层的神经元也是全连接的。
  • Activation层
    激活层对一个层的输出施加激活函数。 在Keras中使⽤激活对象有两种方法: ⼀是单独定义⼀个激活层;二是在前置层里面通过激活选项来定义所需的激活函数。
  • Dropout层
    为输入数据施加Dropout。Dropout在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,用于防止过拟合

Compile参数

  • loss:损失函数,或称目标函数,是神经网络中的性能函数,优化的目标是使损失函数最小化。具体取值在tf.keras.losses中
  • optimizer:优化器,主要是各种梯度下降算法,优化的目标是使loss最小,具体取值在tf.keras.optimizers中
  • metrics:评价指标,确定使用哪些指标展现模型的性能,具体取值在tf.keras.metrics中

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

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

相关文章

机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10

Day 10 Genaral GUidance training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade off cross Validation how to split? N-fold Cross Validation mismatch 这节课总体听下来比较…

使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API

Vercel部署FreeGPT35有严重限制&#xff0c;玩玩就好&#xff0c;真用还是得docker。 限制原因: Vercel的流式响应并不是一开始写流&#xff0c;客户端就能立刻收到响应流&#xff0c;而是先写到一个缓冲区&#xff0c;当流关闭才一股脑的流式响应回来(不是实时流) 因此导致: …

VideoGPT:Video Generation using VQ-VAE and Transformers

1.introduction 对于视频展示&#xff0c;选择哪种模型比较好&#xff1f;基于似然->transformers自回归。在没有空间和时间溶于的降维潜在空间中进行自回归建模是否优于在所有空间和时间像素级别上的建模&#xff1f;选择前者&#xff1a;自然图像和视频包括了大量的空间和…

【八股】AOP

AOP(Aspect Oriented Programming)&#xff0c;面向切面编程&#xff0c;他是一种编程范式。 作用&#xff1a; 在不改变原始设计的的基础上对其进行功能增强。 几个基本概念&#xff1a; 连接点&#xff1a;所有的方法 切入点&#xff1a;追加功能的方法 通知&#xff1a;追加…

组合逻辑电路( Combinational Logic Circuit)知识点总结

目录 一、组合逻辑电路的基本设计方法 1.特点 2.逻辑功能的描述 3.组合逻辑电路的分析步骤 4.组合逻辑电路的设计方法 二、编码器的逻辑电路 1.普通编码器 2.优先编码器 三、二进制和二-十进制译码器 1.3-8译码器 2.二-十进制译码器 3.应用&#xff1a;逻辑函数发生…

基于GRU实现评论文本情感分析

一、问题建模 在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值&#xff0c;并且在互联网行业有极其广泛的应用&#xff0c;主要用于个性化推荐、智能搜索、产品反馈、业务安全等。此博文&#xff0c;共包含6大类20个细粒度要素的情感倾…

【PDF.js】PDF文件预览

【PDF.js】PDF文件预览 一、PDF.js二、PDF.js 下载1、下载PDF.js2、在项目中引入3、屏蔽跨域错误 三、项目中使用四、说明五、实现效果 使用PDFJS实现pdf文件的预览&#xff0c;支持预览指定页、关键词搜索、缩略图、页面尺寸调整等等。 一、PDF.js 官方地址 文档地址 二、PD…

FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现

导语 今天继续康奈尔大学FPGA课程ECE 5760的典型案例分享——基于DE1-SOC的String Art实现。 &#xff08;更多其他案例请参考网站&#xff1a; Final Projects ECE 5760&#xff09; 1. 项目概述 项目网址 ECE 5760 Final Project 项目说明 String Art起源于19世纪的数学…

高精度地图导航论文汇总

文章目录 2022基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 2023一种无人驾驶融合决策方案的设计与实现[M] 2022 基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 摘要&#xff1a; 随着计算机及通信技术的不断进步&#xff0c;汽车行业也得到了飞速的发展。汽车在…

InternVideo2重塑视频理解新标杆,多模态学习引领行业风向

引言&#xff1a;视频理解的新篇章——InternVideo2的介绍 随着视频内容在日常生活中的普及&#xff0c;视频理解技术的重要性日益凸显。视频不仅包含丰富的视觉信息&#xff0c;还蕴含着动态变化和多模态元素&#xff0c;如音频和文本。这些特性使得视频成为一个复杂的数据类型…

LeetCode Meditations:合并 K 排序列表

描述 合并K分类列表 状态&#xff1a; 您有一系列 k 链接-列表 lists &#xff0c;每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如&#xff1a; Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanatio…

4.5 文字绘制

PutText 函数在图像中呈现指定的文本字符串。不能使用指定字体呈现的符号将由问号替换。 void cv::putText ( cv::Mat & img,//待绘制的图像 const String & text,//待绘制的文字 Point org,//文本框的左下角 int fontFace,//字体类型 double fontScale,//尺寸因…

虹科Pico汽车示波器 | 免拆诊断案例 | 2011款东风悦达起亚K5车发动机偶尔起动困难

一、故障现象 一辆2011款东风悦达起亚K5车&#xff0c;搭载G4KD发动机&#xff0c;累计行驶里程约为24.5万km。车主反映&#xff0c;第1次起动发动机时偶尔无法起动着机&#xff0c;第2次能够正常起动着机&#xff0c;但发动机故障灯异常点亮。为此在其他维修厂维修过&#xf…

网站HTTP升级成为HTTPS的方法

将网站从HTTP免费升级为HTTPS&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; - 为了免费升级&#xff0c;您可以选择使用JoySSL这样的公益项目。JoySSL提供免费、自动化的SSL/TLS证书颁发服务&#xff0c;适用于各…

【linux】yum 和 vim

yum 和 vim 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 查看软件包1.3 如何安装软件1.4 如何卸载软件1.5 关于 rzsz 2. Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 vim命令模式命令集2.4 vim底行模式命令集2.5 vim操作总结补充&#xff1a;vim下批量化注释…

FFmpeg: 简易ijkplayer播放器实现--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发&#xff0c;实现基本的功能&#xff0c;开发软件为Qt 项目优势&#xff1a; 参考ijkplayer播放器&#xff0c;实现UI界面和播放器核心进行解耦&#xff0c;容易添加其他功能…

ELK企业日志分析系统介绍

前言 随着企业级应用系统日益复杂&#xff0c;随之产生的海量日志数据。传统的日志管理和分析手段&#xff0c;难以做到高效检索、实时监控以及深度挖掘潜在价值。在此背景下&#xff0c;ELK日志分析系统应运而生。本文将从ELK 日志分析系统的原理、架构及其在实践中的应用做相…

Centos7下docker的jenkins下载并配置jdk与maven【图文教程】

个人记录 进入目录 cd /usr/local/JDK下载与配置 OpenJDK官网 下载安装 wget https://download.java.net/openjdk/jdk18/ri/openjdk-1836_linux-x64_bin.tar.gz解压 tar -zxvf openjdk-1836_linux-x64_bin.tar.gz ls ls jdk-18/编辑配置文件 vim /etc/profile配置环境变…

elementui树形组件自定义高亮颜色

1、需求描述&#xff1a;点击按钮切换树形的章节&#xff0c;同时高亮 2、代码实现 1&#xff09;style样式添加 <style> .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {background-color: #81d3f8 !important; //高亮颜色colo…

【C++题解】1005 - 已知一个圆的半径,求解该圆的面积和周长

问题&#xff1a;1005 - 已知一个圆的半径&#xff0c;求解该圆的面积和周长 类型&#xff1a;基础问题、小数运算 题目描述&#xff1a; 已知一个圆的半径&#xff0c;求解该圆的面积和周长。 输入&#xff1a; 输入只有一行&#xff0c;只有 1 个整数。 输出&#xff1a…