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

深度学习基础之一:机器学习

文章目录

  • 深度学习基本概念(Basic concepts of deep learning)
    • 机器学习
      • 典型任务
      • 机器学习分类
    • 模型训练的基本概念
      • 基本名词
      • 机器学习任务流程
      • 模型训练详细流程
        • 正、反向传播
        • 学习率
        • Batch size
        • 激活函数
        • 激活函数 sigmoid
      • 损失函数
        • MSE & M
        • 交叉熵损失
      • 优化器
        • 优化器 — 梯度下降
        • 优化器 — Momentum
          • 优化器 — AdaGrad
        • 优化器 — RMSprop
        • 优化器 — Adam
    • 模型评估指标
      • 回归模型

深度学习基本概念(Basic concepts of deep learning)

机器学习

  • 深度学习基于机器学习,是人工智能的一部分,而LM又是深度学习的一部分。
    在这里插入图片描述

  • 机器学习模拟人的学习过程,通过历史数据进行训练,然后利用积累的经验解决新的问题。
    在这里插入图片描述
    在这里插入图片描述

  • 模型:一个包含大量未知参数的函数,所谓训练,就是通过大量的数据去迭代逼近这些未知参数的最优解

  • 机器学习:是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。简单说,就是“从样本中学习的智能程序”。

  • 深度学习:深度学习的概念源于人工神经网络的研究,是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

  • 不论是机器学习还是深度学习,都是通过对大量数据的学习,掌握数据背后的分布规律,进而对符合该分布的其他数据进行准确预测


  • 人体神经元结构和机器学习结构对比,
    在这里插入图片描述

典型任务

  • 机器学习中的典型任务类型可以分为分类任务(Classification)和回归任务(Regression)
    在这里插入图片描述

  • 分类任务是对离散值进行预测,根据每个样本的值/特征预测该样本属于类型A、类型B 还是类型C,相当于学习一个分类边界(决策边界),用分类边界把不同类别的数据区分开来。

  • 回归任务是对连续值进行预测,根据每个样本的值/特征预测该样本的具体数值,例如房价预测,股票预测等,相当于学习这组数据背后的分布,能够根据数据的输入预测该数据的取值。

  • 分类与回归的根本区别在于输出空间是否为一个度量空间。
    f ( x ) → y , x ∈ A , y ∈ B f(x) \rightarrow y,x \in A,y \in B f(x)y,xA,yB

  • 对于分类问题,目的是寻找决策边界,其输出空间B不是度量空间,即“定性”。也就是说,在分类问题中,只有分类“正确”与“错误”之分,至于分类到类别A还是类别B,没有分别,都是错误数量+1。

  • **对于回归问题,目的是寻找最优拟合,其输出空间B是一个度量空间,即“定量”,通过度量空间衡量预测值与真实值之间的“误差大小”。**当真实值为10,预测值为5时,误差为5,预测值为8时,误差为2
    在这里插入图片描述

机器学习分类

  • 有监督学习:监督学习利用大量的标注数据来训练模型,对模型的预测值和数据的真实标签计算损失,然后将误差进行反向传播(计算梯度、更新参数),通过不断的学习,最终可以获得识别新样本的能力。
  • 每条数据都有正确答案,通过模型预测结果与正确答案的误差不断优化模型参数
  • 无监督学习:无监督学习不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。
  • 只有数据没有答案,常见的是聚类算法,通过衡量样本之间的距离来划分类别
  • 有监督和无监督最主要的区别在于模型在训练时是否需要人工标注的标签信息。

  • 半监督学习:利用有标签数据和无标签数据来训练模型。一般假设无标签数据远多于有标签数据。例如使用有标签数据训练模型,然后对无标签数据进行分类,再使用正确分类的无标签数据训练模型

  • 利用大量的无标注数据和少量有标注数据进行模型训练
  • 自监督学习:机器学习的标注数据源于数据本身,而不是由人工标注。目前主流大模型的预训练过程都是采用自监督学习,将数据构建成完型填空形式,让模型预测对应内容,实现自监督学习。
  • 通过对数据进行处理,让数据的一部分成为标签,由此构成大规模数据进行模型训练
  • 远程监督学习:主要用于关系抽取任务,采用bootstrap的思想通过已知三元组在文本中寻找共现句,自动构成有标签数据,进行有监督学习。
  • 基于现有的三元组收集训练数据,进行有监督学习
  • 强化学习:强化学习是智能体根据已有的经验,采取系统或随机的方式,去尝试各种可能答案的方式进行学习,并且智能体会通过环境反馈的奖赏来决定下一步的行为,并为了获得更好的奖赏来进一步强化学习。
  • 以获取更高的环境奖励为目标优化模型

模型训练的基本概念

基本名词

在这里插入图片描述

  • 样本:一条数据
  • 特征:被观测对象的可测量特性,例如西瓜的颜色、纹路、敲击声等
  • 特征向量:用一个 d 维向量表征一个样本的所有或部分特征
  • 标签(label)/真实值:样本特征对应的真实类型或者真实取值,即正确答案
  • 数据集(dataset):多条样本组成的集合
  • 训练集(train):用于训练模型的数据集合
  • 评估集(eval):用于在训练过程中周期性评估模型效果的数据集合
  • 测试集(test):用于在训练完成后评估最终模型效果的数据集合

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

机器学习任务流程

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

模型训练详细流程

在这里插入图片描述


正、反向传播

在这里插入图片描述

  • 梯度:梯度是一个向量(矢量),函数在一点处沿着该点的梯度方向变化最快,变化率最大。换而言之,自变量沿着梯度方向变化,能够使因变量(函数值)变化最大。
    在这里插入图片描述
    在这里插入图片描述
学习率
  • 学习率(Learning Rate,LR)决定模型参数的更新幅度,学习率越高,模型参数更新越激进,即相同 Loss 对模型参数产生的调整幅度越大,反之越越小。
    在这里插入图片描述
  • 如果学习率太小,会导致网络 loss 下降非常慢;如果学习率太大,那么参数更新的幅度就非常大,产生振荡,导致网络收敛到局部最优点,或者 loss 不降反增。
    在这里插入图片描述
Batch size

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

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

在合理范围内,更大的 Batch size 能够:

  • 提高内存利用率,提高并行化效率
  • 一个 Epoch 所需的迭代次数变少,减少训练时间
  • 梯度计算更加稳定,训练曲线更平滑,下降方向更准,能够取得更好的效果
    对于传统模型,在较多场景中,较小的 Batch size 能够取得更好的模型性能;对于大模型,往往更大的 Batch size 能够取得更好的性能。
激活函数

在这里插入图片描述

  • 线性函数是一次函数的别称,非线性函数即函数图像不是一条直线的函数非线性函数包括指数函数、幂函数、对数函数、多项式函数等等基本初等函数以及他们组成的复合函数。
  • 激活函数是多层神经网络的基础,保证多层网络不退化成线性网络
    在这里插入图片描述
  • 为什么需要使用激活函数?
    • 线性模型的表达能力不够,激活函数使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中
      在这里插入图片描述
激活函数 sigmoid

在这里插入图片描述

  • sigmoid函数具有软饱和特性,在正负饱和区的梯度都接近于0,只在0附近有比较好的激活特性
  • sigmoid导数值最大0.25,也就是反向传播过程中,每层至少有75%的损失,这使得当sigmoid被用在隐藏层的时候,会导致梯度消失(一般5层之内就会产生)
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;
  • sigmoid函数涉及指数运算,导致计算速度较慢。
    在这里插入图片描述
  • 为什么希望激活函数输出均值为0?
    在这里插入图片描述
  • 在上面的参数 w i w_i wi 更新公式中,对于所有 w i w_i wi 都是一样的, x i x_i xi i − 1 i - 1 i1 层的激活函数的输出,如果像 sigmoid 一样,输出值只有正值,那么对于第 i i i 层的所有 w i w_i wi ,其更新方向完全一致,模型为了收敛,会走 Z 字形来逼近最优解

在这里插入图片描述


在这里插入图片描述

  • eLU 是一个分段线性函数,因此是非线性函数;
  • ReLU 的发明是深度学习领域最重要的突破之一;
  • ReLU 不存在梯度消失问题
  • ReLU 计算成本低,收敛速度比 sigmoid 快6倍;
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;
  • 存在 dead ReLU 问题(输入 ReLU 有负值时,ReLU输出为0,梯度在反向传播期间无法流动,导致权重不会更新)

在这里插入图片描述


在这里插入图片描述

  • 参数不变情况下,将模型中ReLU替换为Swish,模型性能提升;
  • Swish 无上界,不会出现梯度饱和;
  • Swish 有下界,不会出现 dead ReLU 问题;
  • Swish 处处连续可导

损失函数

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

在这里插入图片描述

  • 均方误差(mean squared error,MSE),也叫平方损失或 L2 损失,常用在最小二乘法中,它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)
    在这里插入图片描述
  • 平均绝对误差(Mean Absolute Error,MAE)是所有单个观测值与算术平均值的绝对值的平均,也被称为 L1 loss,常用于回归问题中
交叉熵损失

在这里插入图片描述

  • 【二分类】
    在这里插入图片描述

    • y i y_i yi 为样本 i i i 的真实标签,正类为 1,负类为 0; p i p_i pi 表示样本 i i i 预测为正类的概率
  • 【多分类】
    在这里插入图片描述

    • M 为类别数量; y i c y_{ic} yic 符号函数,样本 i i i 真实类别等于 c 则为 1,否则为 0;预测样本 i i i属于类别 c 的预测概率
  • 假设有一个二分类任务,正类为1,负类为0,存在一个正样本A,当模型输出其为正类的概率为0.8时,交叉熵损失为:
    l o s s = − ( 1 × l o g ( 0.8 ) + 0 × l o g ( 0.2 ) ) = − l o g ( 0.8 ) = 0.0969 loss=-(1\times log(0.8)+0 \times log(0.2))=-log(0.8)=0.0969 loss=(1×log(0.8)+0×log(0.2))=log(0.8)=0.0969
    当模型输出其为正类的概率为0.5时,交叉熵损失为:
    l o s s = − ( 1 × l o g ( 0.5 ) + 0 × l o g ( 0.5 ) ) = − l o g ( 0.5 ) = 0.3010 loss=-(1\times log(0.5)+0 \times log(0.5))=-log(0.5)=0.3010 loss=(1×log(0.5)+0×log(0.5))=log(0.5)=0.3010

  • 由此可见,当模型预测的误差越大时,交叉熵损失函数计算得到的损失越大

  • 假设分类任务有3种类别A,B,C,有三个样本,其中 sample 1类型为C,smaple 2类型为B,sample 3类型为A,对于 sample 1,当模型预测概率不同时:
    在这里插入图片描述

  • 假设模型对这三个样本的预测概率为:

样本名称类别A概率类别B概率类别C概率
sample 10.30.30.4
sample 20.30.40.3
sample 30.10.20.7
  • 交叉熵损失计算
    在这里插入图片描述

对于不同的分类任务,交叉熵损失函数使用不同的激活函数(sigmoid/softmax)获得概率输出:

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

优化器

  • 优化器就是在深度学习反向传播过程中,指引损失函数(目标函数)的各个参数往正确的方向更新合适的大小,使得更新后的各个参数损失函数(目标函数)值不断逼近全局最小。
    在这里插入图片描述
  • 如果损失函数是一座山峰,优化器会通过梯度下降,帮助我们以最快的方式,从高山下降到谷底
    在这里插入图片描述
  • 梯度是一个向量,它的每一个分量都是对一个特定变量的偏导数,每个元素都指示了函数里每个变量的最陡上升方向(梯度指向函数增长最多的方向。)
    在这里插入图片描述
优化器 — 梯度下降

在这里插入图片描述

  • BGD:批量梯度下降法在全部训练集上计算精确的梯度。

  • SGD:随机梯度下降法则采样单个样本来估计的当前梯度。

  • mini-batch GD:mini-batch梯度下降法使用batch的一个子集来计算梯度。

  • 为获取准确的梯度,批量梯度下降法的每一步都把整个训练集载入进来进行计算时间花费和内存开销都非常大,无法应用于大数据集、大模型的场景。

  • 随机梯度下降法则放弃了对梯度准确性的追求,每步仅仅随机采样一个样本来估计当前梯度,计算速度快,内存开销小。但由于每步接受的信息量有限,随机梯度下降法对梯度的估计常常出现偏差,造成目标函数曲线收敛得很不稳定,伴有剧烈波动,有时甚至出现不收敛的情况。

在这里插入图片描述

  • 鉴于 BGD 和 SGD 各自的局限性,目前的训练采用 Mini-Batch GD,每次对batch_size的数据进行梯度计算,更新参数
优化器 — Momentum

在这里插入图片描述
v t vt vt 由两部分组成:一是学习速率 η η η 乘以当前估计的梯度 g t g_t gt ;二是带衰减的前一次步伐 v t − 1 v_{t−1} vt1 g t g_t gt, 而不仅仅是 g t g_t gt。另外,衰减系数 γ γ γ 扮演了阻力的作用

优化器 — AdaGrad

在这里插入图片描述

  • 引入自适应思想,训练过程中,学习速率逐渐衰减,经常更新的参数其学习速率衰减更快
  • AdaGrad方法采用所有历史梯度平方和的平方根做分母,分母随时间单调递增,产生的自适应学习速率随时间衰减的速度过于激进
优化器 — RMSprop
  • RMSprop 是 Hinton 在课程中提到的一种方法,是对 Adagrad 算法的改进,主要是解决学习速率过快衰减的问题
    在这里插入图片描述
  • 采用梯度平方的指数加权移动平均值,其中一般取值0.9,有助于避免学习速率很快下降的问题,学习率建议取值为0.001
优化器 — Adam
  • Adam方法将惯性保持(动量)和自适应这两个优点集于一身
  • Adam记录梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,这体现了惯性保持:
    在这里插入图片描述
  • Adam还记录梯度的二阶矩(second moment),即过往梯度平方与当前梯度平方的平均,这类似AdaGrad方法,体现了自适应能力,为不同参数产生自适应的学习速率:
    在这里插入图片描述
  • 一阶矩和二阶矩采用类似于滑动窗口内求平均的思想进行融合,即当前梯度和近一段时间内梯度的平均值,时间久远的梯度对当前平均值的贡献呈指数衰减。
    在这里插入图片描述
  • 其中,β1,β2 为衰减系数,β1通常取值0.9,β2通常取值0.999, m t m_t mt 是一阶矩, v t v_t vt 是二阶矩阵。其中, m t ^ \hat{m_t} mt^
    v t ^ \hat{v_t} vt^ m t m_t mt v t v_t vt 偏差矫正之后的结果
    在这里插入图片描述

模型评估指标

回归模型

  • 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总
    在这里插入图片描述
  • True Positive(TP):真正类。正类被预测为正类。
  • False Negative(FN):假负类。正类被预测为负类。
  • False Positive(FP):假正类。负类被预测为正类。
  • True Negative(TN):真负类。负类被预测为负类。
    在这里插入图片描述
  • Precision:精准率,表示预测结果中,预测为正样本的样本中,正确预测的概率
    T P T P + F P \dfrac{TP}{TP+FP} TP+FPTP
  • Recall:召回率,表示在原始样本的正样本中,被正确预测为正样本的概率
    T P T P + F N \dfrac{TP}{TP+FN} TP+FNTP
  • Precision值和Recall值是既矛盾又统一的两个指标,为提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低
  • F1:F1-score是Precision和Recall两者的综合,是一个综合性的评估指标
    F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1=\dfrac{2 \times Precision \times Recall}{Precision + Recall} F1=Precision+Recall2×Precision×Recall
  • Micro-F1:不区分类别,直接使用总体样本的准召计算f1 score。
  • Macro-F1:先计算出每一个类别的准召及其f1 score,然后通过求均值得到在整个样本上的f1 score。
  • 数据均衡,两者均可;样本不均衡,相差很大,使用Macro-F1;样本不均衡,相差不大,优先选择Micro-F1。

  • MSE:均方误差, y i − y i ^ y_i - \hat{y_i} yiyi^ 为真实值-预测值。MSE中有平方计算,会导致量纲与数据不一致
    在这里插入图片描述

  • RMSE:均方根误差, y i − y i ^ y_i - \hat{y_i} yiyi^ 为真实值-预测值。解决量纲不一致的问题。
    在这里插入图片描述

  • MAE:平均绝对误差, y i − y i ^ y_i - \hat{y_i} yiyi^ 为真实值-预测值。
    在这里插入图片描述

  • RMSE 与 MAE 的量纲相同,但求出结果后我们会发现RMSE比MAE的要大一些。
    这是因为RMSE是先对误差进行平方的累加后再开方,它其实是放大较大误差之间的差距。而MAE反应的是真实误差。因此在衡量中使RMSE的值越小其意义越大,因为它的值能反映其最大误差也是比较小的。

  • R 2 R^2 R2
    在这里插入图片描述

  • 决定系数,分子部分表示真实值与预测值的平方差之和,类似于均方差 MSE;分母部分表示真实值与均值的平方差之和,类似于方差 Var。

  • 根据 R 2 R^2 R2 的取值,来判断模型的好坏,其取值范围为 [ 0 , 1 ] [0,1] [0,1]

  • R 2 R^2 R2 越大,表示模型拟合效果越好。 R 2 R^2 R2 反映的是大概的准确性,因为随着样本数量的增加, R 2 R^2 R2 必然增加,无法真正定量说明准确程度,只能大概定量。

  • GSB:通常用于两个模型之间的对比, 而非单个模型的评测,可以用GSB指标评估两个模型在某类数据中的性能差异
    在这里插入图片描述

相关文章:

深度学习基础之一:机器学习

文章目录 深度学习基本概念(Basic concepts of deep learning)机器学习典型任务机器学习分类 模型训练的基本概念基本名词机器学习任务流程模型训练详细流程正、反向传播学习率Batch size激活函数激活函数 sigmoid 损失函数MSE & M交叉熵损失 优化器优化器 — 梯度下降优化…...

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果 一、简单介绍 二、简单指定视频某片段重复播放…...

ARXML处理 - C#的解析代码(二)

参数类 参数容器&#xff08;ECUCPARAMCONFCONTAINERDEF&#xff09;的PARAMETERS集合类由以下参数类实例构成。 枚举参数&#xff08;ECUCENUMERATIONPARAMDEF &#xff09; 配置一个下拉选项&#xff0c;如PORT中一个pin可以配置SPI, CAN, PWM /// <remarks/>[Syste…...

关于华为即将举行的鸿蒙春季沟通会的新闻报道

华为计划在4月11日举办此次活动&#xff0c;届时将推出与车和PC类相关的新产品。尽管备受期待的华为P70系列设备的发布尚未得到官方确认&#xff0c;但已有多家媒体对此进行了报道。 文章中还提到了智界S7的新款可能在4月11日上市&#xff0c;并进行多项新功能升级。智界S7是去…...

MySQL视图及如何导入导出

1.视图 MySQL 视图&#xff08;View&#xff09;是一种虚拟存在的表&#xff0c;同真实表一样&#xff0c;视图也由列和行构成&#xff0c;但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表&#xff0c;并且还是在使用视图时动态生成的&#xff0…...

文心一言上线声音定制功能;通义千问开源模型;openAI又侵权?

文心一言上线定制专属声音功能 百度旗下 AI 聊天机器人文心一言上线新功能&#xff0c;用户录音一句话&#xff0c;即可定制声音。 使用这项功能需要使用文心一言 App。在创建智能体中&#xff0c;点击创建自己的声音&#xff0c;朗读系统提示的一句话&#xff0c;等候几秒钟时…...

课时89:流程控制_函数进阶_函数变量

2.1.4 综合案例 这一节&#xff0c;我们从 信息采集、环境部署、小结 三个方面来学习。 信息采集 脚本实践-采集系统负载信息 查看脚本内容 [rootlocalhost ~]# cat function_systemctl_load.sh #!/bin/bash # 功能&#xff1a;采集系统负载信息 # 版本&#xff1a;v0.3 # …...

Linux命令-dpkg-preconfigure命令(Debian Linux中软件包安装之前询问问题)

说明 dpkg-preconfigure命令 用于在Debian Linux中软件包安装之前询问问题。 语法 dpkg-preconfigure(选项)(参数)选项 -f&#xff1a;选择使用的前端&#xff1b; -p&#xff1a;感兴趣的最低的优先级问题&#xff1b; --apt&#xff1a;在apt模式下运行。参数 软件包&am…...

SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读

SEO&#xff08;搜索引擎优化&#xff0c;Search Engine Optimization&#xff09;是一种网络营销策略&#xff0c;旨在通过改进网站内外的各项元素&#xff0c;提升网站在搜索引擎自然搜索结果中的排名&#xff0c;从而吸引更多目标用户访问网站&#xff0c;增加流量&#xff…...

《springcloud alibaba》 四 seata安装以及使用

目录 准备调整db配置准备创建数据库 seata配置nacos配置confi.txt下载向nacos推送配置的脚本 启动seata新建项目order-seata项目 订单项目数据库脚本pom.xmlapplication.yml启动类实体类dao类service类controller类feign类mapper类 stock-seata 库存项目数据库脚本pom.xmlappli…...

-bash: cd: /etc/hadoop: 没有那个文件或目录

解决办法&#xff1a;source /etc/profile 运行 source /etc/profile 命令会重新加载 /etc/profile 文件中的配置&#xff0c;这样做的目的是使任何更改立即生效&#xff0c;而不需要注销并重新登录用户。通常&#xff0c;/etc/profile 文件包含系统范围的全局 Shell 配置&…...

JVM字节码与类加载——字节码指令集与解析

文章目录 1、概述1.1、字节码与数据类型1.2、指令分类 2、加载与存储指令2.1、局部变量入栈指令2.2、常量入栈指令2.3、出栈装入局部变量表指令 3、算术指令3.1、彻底理解i与i3.2、比较指令 4、类型转换指令4.1、宽化类型转换4.2、窄化类型转换 5、对象、数组的创建与访问指令5…...

景芯2.5GHz A72训练营dummy添加(一)

景芯A72做完布局布线之后导出GDS&#xff0c;然后进行GDS merge&#xff0c;然后用Calibre对Layout添加Dummy。在28nm以及之前的工艺中&#xff0c;Dummy metal对Timing的影响不是很大&#xff0c;当然Star RC也提供了相应的解决方案&#xff0c;可以考虑Dummy metal来抽取RC。…...

React - 请你说一说setState是同步的还是异步的

难度级别:中高级及以上 提问概率:70% 在React项目中,使用setState可以更新状态数据,而不能直接使用为this.state赋值的方式。而为了避免重复更新state数据,React首先将state添加到状态队列中,此时我们可以通过shouldComponentUpdate这个钩…...

设计模式之命令模式(下)

2&#xff09;完整解决方案 1.结构图 FBSettingWindow是“功能键设置”界面类&#xff0c;FunctionButton充当请求调用者&#xff0c;Command充当抽象命令类&#xff0c;MinimizeCommand和HelpCommand充当具体命令类&#xff0c;WindowHanlder和HelpHandler充当请求接收者。 …...

【opencv】示例-demhist.cpp 调整图像的亮度和对比度,并在GUI窗口中实时显示调整后的图像以及其直方图。...

#include "opencv2/core/utility.hpp" // 包含OpenCV核心工具库的头文件 #include "opencv2/imgproc.hpp" // 包含OpenCV图像处理的头文件 #include "opencv2/imgcodecs.hpp" // 包含OpenCV图像编码解码的头文件 #include "opencv2/highgui…...

计算机网络---第三天

OSI参考模型与TCP/IP模型 参考模型产生背景&#xff1a; 背景&#xff1a;①兼容性较差&#xff0c;接口不统一 ②不利于排错与维护 ③设备成本高 参考模型概念&#xff1a; 概念&#xff1a;OSI参考模型定义了网络中设备所遵守的层次结构 参考模型优点&#xff1a; 优点…...

怎么防止文件被拷贝,复制别人拷贝电脑文件

怎么防止文件被拷贝&#xff0c;复制别人拷贝电,脑文件 防止文件被拷贝通常是为了保护敏感数据、知识产权或商业秘密不被未经授权的人员获取或传播。以下列出了一系列技术手段和策略&#xff0c;可以帮助您有效地防止文件被拷贝。 1. 终端管理软件&#xff1a; 如安企神、域智…...

流式密集视频字幕

流式密集视频字幕 摘要1 IntroductionRelated Work3 Streaming Dense Video Captioning Streaming Dense Video Captioning 摘要 对于一个密集视频字幕生成模型&#xff0c;预测在视频中时间上定位的字幕&#xff0c;理想情况下应该能够处理长的输入视频&#xff0c;预测丰富、…...

【教程】iOS Swift应用加固

&#x1f512; 保护您的iOS应用免受恶意攻击&#xff01;在本篇博客中&#xff0c;我们将介绍如何使用HTTPCORE DES加密来加固您的应用程序&#xff0c;并优化其安全性。通过以下步骤&#xff0c;您可以确保您的应用在运行过程中不会遭受数据泄露和未授权访问的风险。 摘要 …...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...