计算机视觉与深度学习-循环神经网络与注意力机制-RNN(Recurrent Neural Network)、LSTM-【北邮鲁鹏】

news2024/10/5 14:22:06

目录

  • 举例应用
    • 槽填充(Slot Filling)
    • 解决思路
    • 方案
      • 使用前馈神经网络
        • 输入
          • 1-of-N encoding(One-hot)(独热编码)
        • 输出
    • 问题
  • 循环神经网络(Recurrent Neural Network,RNN)
    • 定义
    • 如何工作
    • 深度
    • Elman Network & Jordan Network
      • Elman Network
      • Jordan Network
    • Bidirectional RNN
  • 长短期记忆网络(Long Short-Term Memory,LSTM)
    • 数学表示
    • 怎么工作
    • 使用LSTM替换神经元
    • 学习目标
    • 怎么训练
      • BPTT代表基于时间的反向传播(Backpropagation Through Time)
      • 基于RNN的神经网络不是容易被训练
        • RNN的损失函数的坡面
        • 为什么出现这种现象?
      • LSTM能够很好的应对
    • 应用
      • 一对一
      • 多对一
      • 多对多
        • output shorter
          • CTC
            • CTC:Training
        • No Limitation
  • 门控循环单元(Gated Recurrent Unit,GRU)

举例应用

槽填充(Slot Filling)

定义这样一个场景,比如说我要做一个订票系统,当用户说了一句话,我将要在十一月二号去到北京
在这里插入图片描述
这是一个订票机器人,对于要实现订票这个功能,则需要提取目的地和到达时间
在这里插入图片描述

解决思路

就是要给输入的每一个字,需要判断出它的类别信息。就是对每个单词进行分类的问题
在这里插入图片描述

方案

使用前馈神经网络

使用全连接神经网络对单词进行分类
在这里插入图片描述

输入

对于文本来说,要想将其输入全连接神经网络,需要将每个单词转变成向量

如何将单词转换成向量

1-of-N encoding(One-hot)(独热编码)

“One-hot” 是一种编码方式,通常用于将离散的分类变量表示为二进制向量。在这种表示方法中,每个类别被表示为一个唯一的向量,其中只有一个元素为1,其他元素都为0。

例如,假设有三个类别:A、B 和 C。使用 one-hot 编码,可以将这三个类别表示为以下向量:

A: [1, 0, 0]
B: [0, 1, 0]
C: [0, 0, 1]

在这里插入图片描述

在上述表示中,向量的长度等于类别的数量。每个类别在对应的位置上具有值为1,而其他位置上的值为0。这种表示方式使得每个类别之间的距离相互独立,没有大小或顺序的关系。

输出

输入字属于槽的概率分布
在这里插入图片描述

问题

对于同一个单词“Beijing”来说,在不同的句子中。

arrive Beijing,则Beijing表示目的地
leave Beijing,则Beijing表示出发地
在这里插入图片描述
单纯的神经网络处理不了这样的问题。需要我们的网络具有一定的记忆性。就是说在网络在处理完这单词以后,在处理下一个单词的时候,需要考虑上一个单词的处理结果。

引入Memory

循环神经网络(Recurrent Neural Network,RNN)

引入memory了以后 我们的网络就变成循环神经网络RNN(Recurrent Neural Network)

memory是怎么解决这个问题?

我们需要记忆单元 ,比如arrive先进来,处理完了arrive ,我要把arrive的这个隐存信息记录到这个两个单元里 然后呢,我再给第二个单词的时候,给第二个单词北京的时候,我这个时候给北京的时候,他要把arrive这个单词的信息和北京这个单词的信息,一起拿进来到这处理,很显然我这个时候就知道这是目的地还是出发地
在这里插入图片描述
只要我们对神经网络里面引入一个记忆单元,能对我刚才处理过的事情有一定记性的话,在做下一个单词预测的时候,我把我上一个单词的信息和下一个单词一起考虑 。我就能预测正确 ,这到底是发地还是目的地 ,这个就是循环神经网络。

对比arrive和leave
在这里插入图片描述

定义

RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的神经网络模型。相比于传统的前馈神经网络,RNN 具有记忆能力,可以处理具有时序关系的输入。

RNN 的主要特点是引入了循环连接,允许信息在网络内部进行传递。这种循环结构使得 RNN 可以接受变长序列作为输入,并且在每个时间步上都可以利用之前的信息来影响当前的输出。
在这里插入图片描述

在 RNN 中,每个时间步都会接收一个输入向量和一个隐藏状态(hidden state)向量。输入向量表示当前时间步的输入数据,隐藏状态向量则用于存储之前时间步的信息。在每个时间步,RNN 会根据当前的输入和上一个时间步的隐藏状态来计算新的隐藏状态。这个过程可以通过循环神经网络的参数来实现。

RNN 的基本结构是一个简单的循环单元(Simple Recurrent Unit,SRU),也被称为 RNN Cell。它可以根据当前时间步的输入和前一个时间步的隐藏状态计算新的隐藏状态。然后,根据需要,可以在 RNN 的输出层上添加其他层,例如全连接层或 softmax 层,用于产生最终的输出。

如何工作

假设我们所有的权重都是1,然后所有的激活单元都是线性单元
在这里插入图片描述
首先 我们先输入第一个序列,假如这里面没有存东西,给定初始值1,此时store里是0,所以 1 + 1 = 2 , 2 + 2 = 4 1+1=2,2+2=4 1+1=22+2=4,最后输出结果是[4 4]
在这里插入图片描述
我们先输入第二个序列,给定初始值2,此时store里是2,则 1 + 1 + 2 + 2 = 6 , 6 + 6 = 12 1+1+2+2=6,6+6 = 12 1+1+2+2=66+6=12,最后输出结果是[12 12]
在这里插入图片描述

深度

深度循环神经网络(Deep RNN):深度循环神经网络是一种结合了时间维度和层次维度的网络结构。除了在时间维度上进行循环计算外,还在层次维度上进行信息传递。在深度 RNN 中,每个时间步上的输入不仅会传递到下一个时间步,还会在同一时间步上传递到下一层的相同时间步。这样,每个时间步上的输入都会经过多个层次的处理和传递,实现了网络的深度。
在这里插入图片描述
增加了网络的非线性能力

Elman Network & Jordan Network

Elman Network

Elman网络也被称为简单循环网络(Simple Recurrent Network,SRN)。它是一种单向连接的RNN结构,具有一个输入层、一个隐藏层和一个输出层。在Elman网络中,隐藏层和输出层之间存在一个额外的反馈连接,将隐藏层的输出作为下一个时间步的输入。

在每个时间步上,Elman网络接收当前时间步的输入和上一个时间步的隐藏层输出。它通过激活函数(通常是sigmoid函数)将输入和隐藏层的加权和进行非线性变换,然后将结果传递到输出层。隐藏层的输出也会通过反馈连接返回到下一个时间步的隐藏层输入,形成循环。

在这里插入图片描述

Elman网络适用于处理具有短期依赖关系的任务,例如语音识别、手写体识别等。但对于长期依赖关系的建模,Elman网络可能面临梯度消失或梯度爆炸的问题。

Jordan Network

Jordan网络是另一种RNN结构,与Elman网络类似,它也具有输入层、隐藏层和输出层。然而,与Elman网络不同的是,Jordan网络在隐藏层和输出层之间的反馈连接是从输出层直接反馈到隐藏层,而不是从隐藏层自身反馈。

在每个时间步上,Jordan网络接收当前时间步的输入和上一个时间步的隐藏层输出。它通过激活函数将输入和隐藏层的加权和进行非线性变换,并将结果传递到输出层。输出层的输出会通过反馈连接返回到隐藏层的输入。

在这里插入图片描述

Jordan网络相对于Elman网络更适用于处理具有长期依赖关系的任务,因为它的反馈连接是从输出层直接反馈,可以更好地捕捉到输出对隐藏状态的依赖。然而,Jordan网络也可能面临梯度消失或梯度爆炸的问题。

Bidirectional RNN

双向循环神经网络(Bidirectional Recurrent Neural Network,BiRNN)是传统循环神经网络(RNN)的扩展,能够同时处理正向和逆向的输入序列。它结合了两个RNN,一个按照正向顺序处理序列,另一个按照逆向顺序处理序列。两个方向的输出通常会被连接或以某种方式组合形成最终的输出。

在BiRNN中,输入序列的每个时间步会被处理两次:一次是正向传递,一次是逆向传递。这使得网络能够捕捉到每个时间步的过去和未来上下文信息。通过考虑未来上下文,BiRNN可以提高对输入序列的理解和表示能力。

正向的RNN按照从第一个时间步到最后一个时间步的顺序处理输入序列,而逆向的RNN则按照相反的顺序,从最后一个时间步到第一个时间步进行处理。在每个时间步,隐藏状态会根据当前输入以及相应方向上的前一个时间步的隐藏状态进行更新。

BiRNN的最终输出可以通过连接或组合正向和逆向RNN的输出来获得。这种组合表示可以捕捉到输入序列过去和未来上下文的依赖关系和模式。

BiRNN常用于需要考虑双向上下文重要性的任务,例如语音识别、命名实体识别、情感分析和机器翻译。通过利用双向信息,它们能够有效地捕捉长期依赖关系,并提高序列建模任务的性能。在这里插入图片描述
一般有些时候我们是看前面的单词来决定我这个这个当前单词是啥意思,有时候我还要看后面那个单词来决定我当前单词是啥意思。

苹果手机很好用 苹果很好吃 苹果到底什么其实要靠后面的单词来决定

好吃决定苹果是水果
好用决定苹果是手机

长短期记忆网络(Long Short-Term Memory,LSTM)

长短期记忆网络(Long Short-Term Memory,LSTM)是一种特殊的循环神经网络(RNN)架构,LSTM从被设计之初就被用于解决一般递归神经网络中普遍存在的长期依赖问题,使用LSTM可以有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略(遗忘)。与此同时,LSTM还可以解决RNN中的梯度消失/爆炸问题。

LSTM通过引入门控机制来控制信息的流动,主要包括以下几个组件:

  • 细胞状态(Cell State):LSTM通过一个细胞状态来存储并传递信息,它在整个序列过程中一直存在。它可以被看作是LSTM网络的记忆单元。

  • 输入门(Input Gate):输入门决定是否将当前输入信息纳入细胞状态的更新。它通过使用sigmoid激活函数来产生一个0到1之间的值,表示对应位置上输入的重要程度。

  • 遗忘门(Forget Gate):遗忘门决定是否将前一时刻细胞状态中的信息保留到当前时刻。它通过使用sigmoid激活函数来产生一个0到1之间的值,表示对应位置上细胞状态中信息的保留程度。

  • 输出门(Output Gate):输出门决定当前时刻细胞状态的输出。它通过使用sigmoid激活函数来产生一个0到1之间的值,表示对应位置上细胞状态的输出程度。此外,还有一个tanh激活函数用于产生一个在-1到1之间的值,表示对应位置上细胞状态的候选输出。

在这里插入图片描述

数学表示

在这里插入图片描述

怎么工作

对每一个时刻输入的 x 2 x_2 x2感兴趣。根据 x 2 x_2 x2输入的值对 x 1 x_1 x1进行操作。
x 2 = 1 x_2=1 x2=1,将 x 1 x_1 x1的值写入内存
x 2 = 0 x_2=0 x2=0,对 x 1 x_1 x1的值不感兴趣
x 2 = − 1 x_2=-1 x2=1,将 x 1 x_1 x1的值从内存抹去
同时关注 x 3 x_3 x3的值
x 3 = 1 x_3=1 x3=1时,将 x 1 x_1 x1的值进行输出
在这里插入图片描述

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

x 2 = − 1 x_2=-1 x2=1,将 x 1 x_1 x1的值从内存抹去

在这里插入图片描述

使用LSTM替换神经元

原本的神经元
在这里插入图片描述

使用LSTM替换后
在这里插入图片描述
原本一个神经元有一套参数,现在每个神经元都扩大成了原来的四倍,所以我们整个神经网络参数量是原来的四倍 而不是原来的一倍,又直接扩大了四倍,这也是它的缺陷,让普通的神经网络的探索量一下大了四倍。

但是对于循环,对于这种有时序信息的任务,我们用这个方法,性能是非常好的。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一个标准的多层的LSTM神经网络
在这里插入图片描述

学习目标

对输入的单词进行分类
在这里插入图片描述

怎么训练

和普通网络一样,使用反向传播。不过这个反向传播是基于时间的。
在这里插入图片描述

BPTT代表基于时间的反向传播(Backpropagation Through Time)

它是一种用于训练循环神经网络(RNN)的反向传播算法,用于计算和更新网络参数的梯度。
与传统的前向传播和反向传播不同,BPTT需要在时间维度上展开循环神经网络,以便计算梯度。展开过程将RNN展开为一个前馈神经网络,其中每个时间步都被视为网络的一个层。

BPTT的基本步骤如下:

  • 前向传播:从网络的初始状态开始,按照时间顺序将输入序列的每个时间步输入到网络中,并计算每个时间步的输出。

  • 损失计算:使用网络的输出和预期输出之间的差异来计算损失函数。

  • 反向传播:从最后一个时间步开始,根据损失函数计算输出层的梯度,并通过反向传播将梯度传递到前面的时间步。

  • 参数更新:根据计算得到的梯度,使用优化算法(如随机梯度下降)来更新网络的参数。

由于BPTT展开了RNN的时间步,反向传播会在每个时间步上进行一次梯度计算,因此在训练过程中,梯度信息会在时间上累积。这也是为什么BPTT在处理长序列时容易遇到梯度消失或梯度爆炸的问题。

基于RNN的神经网络不是容易被训练

在这里插入图片描述

RNN的损失函数的坡面

所以在进行调整的时候,很容出现跳上跳下
在这里插入图片描述

为什么出现这种现象?

从1-1000有1000个时间时刻的输入
在这里插入图片描述
当学习率为1.01,连乘1000后
在这里插入图片描述
循环神经网络,为什么会挂,就是因为它的连乘太多,当一直不停的连乘下去,这个权值会非常非常的大。权值的次方数会非常非常的大,我本来目前在的位置,要去优化它。
要么往左走一点,这个权值无穷大
往右走一点,权值又很小

所以我们要做一个裁剪,裁剪完了后把学习率调大点
只要大过我就裁剪 那这样训练起来不会让他能够跑起来

LSTM能够很好的应对

通过引入门控机制来更好地应对梯度爆炸和梯度消失的问题。
在这里插入图片描述
LSTM相对于传统的RNN具有以下特点,使其能够有效地处理梯度问题:

  • 长期记忆单元(Cell State):LSTM引入了一个长期记忆单元,它允许网络在一段时间内保留和传递信息,从而减少梯度在时间上的乘积效应。这样,即使梯度消失的情况下,网络也能够在长期记忆单元中存储重要的信息,避免信息的丢失。

  • 门控机制:LSTM引入了三个门控单元:输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)。这些门控单元通过使用sigmoid激活函数来控制信息的流动和保留。通过学习门控单元的参数,LSTM可以决定何时更新和遗忘信息,从而更好地控制梯度的传播。

  • 前向路径和反向路径:LSTM的结构使得梯度能够沿着前向和反向路径传递。这样,即使在反向传播过程中梯度消失,前向路径上的梯度仍然可以传递信息,避免信息的丢失和梯度的完全消失。

应用

一对一

输入和输出都是长度相同的序列

在这里插入图片描述
一个输入,一个输出,因为每个输出都要判断它是不是有用的信息,是哪个槽里的信息 。

多对一

输入是一个矢量序列,但输出只有一个矢量

句子的情感分析。比如你给了我一堆句子 我现在要分析这个句子到底是正面还是负面的。
在这里插入图片描述
我只关注循环神经网络最后一个单词的信息,因为最后一个单词是把前面单词的信息都看过了,都混合起来的信息去做一个决策,把它分成分五类,去判断这个句子,是认为这篇这个电影好看还是不好看。

多对多

output shorter

输入和输出都是序列,但输出更短

语言识别

等同类别就是输入输出一样,我每个单词都输出,每个时刻我都输出。
在这里插入图片描述
输出成这样,“好好好棒棒棒棒棒”,然后我们做一下剔除。剔除掉就可以得到好棒这个词。

但是这个东西有一种情况你是处理不了,比如“好棒棒”,“亮晶晶”,确确实后面有两个字。

CTC

CTC(Connectionist Temporal Classification)是一种用于序列数据标注和序列转录的方法。CTC的主要目标是学习将输入序列映射到目标序列的对应关系,而不需要对齐它们的具体位置。这使得CTC方法在没有对齐标签的情况下进行序列转录变得可能。

我们引入一个这种无意义的字符,它也当一个单词,我也给他一个编码,这个编码的意思就是结束了。
在这里插入图片描述

CTC:Training

在这里插入图片描述
我用一种初举的方法,“好棒”可能是这样的,也可能是这样的。把所有的可能都穷举一下,这些都,拿进去训练,预算是哪一类我都是算对,这样就解决了训练问题,也不用人为的去对齐这个里面跟这个里面的。

No Limitation

输入和输出都是具有不同长度的序列。是序列到序列学习。

机器翻译

用最后一个信息去预测下一个词,当然,最后一个信息希望是编码了所有信息的内容
在这里插入图片描述
理论上最后一个信息是编码了前面的内容,就是这样的一个结果

这里面还有个问题就是,那你这样学习的时候 什么时候结束呢?
在这里插入图片描述
所以这不是我们需要的,我们预测的时候还希望有一个结束,刚才在我们的学了一个占位符是占位,现在需要需要有个结束符。
在这里插入图片描述
所以在我们真实用的时候,我们会加一个断的结束,当我预测到结束符的时候,我就把前面的字处理出来后面就不再不断了。

这个神经神经网络的训练要先训练“machine”,再训练“learning”,得到这个以后再一个字一个字的翻译这个。这是一个时序的翻译过程,对这个过程是非常慢的。

后面的transformer,主要针对这个问题,就是针对时序问题太慢的问题。transformer可以一次并行做。

语言翻译语言&语音翻译语音
在这里插入图片描述

门控循环单元(Gated Recurrent Unit,GRU)

是另一种常用的循环神经网络(RNN)变体,类似于长短期记忆(LSTM),也具有门控机制来解决梯度爆炸和梯度消失的问题。
GRU相对于LSTM具有更简化的结构,同时保持了类似的门控机制。

它包含了以下要素:

  • 更新门(Update Gate):决定应该更新多少来自前一时刻的隐藏状态信息。更新门的值范围在0到1之间,0表示完全忽略过去的信息,1表示完全保留过去的信息。

  • 重置门(Reset Gate):决定应该忽略多少来自前一时刻的隐藏状态信息。重置门的值范围在0到1之间,0表示完全忽略过去的信息,1表示完全保留过去的信息。

  • 候选隐藏状态(Candidate Hidden State):通过结合重置门和当前输入,计算出一个候选隐藏状态。该候选隐藏状态考虑了当前输入和过去隐藏状态的相关性。

  • 隐藏状态(Hidden State):根据更新门、候选隐藏状态和前一时刻的隐藏状态,计算出当前的隐藏状态。这个隐藏状态将被传递到下一时刻,并且也可以作为输出。

GRU的门控机制允许它决定如何整合和传递信息,从而有效地解决梯度爆炸和梯度消失的问题。相比于LSTM,GRU的结构更简单,参数更少,计算效率更高,但在某些任务上可能稍微缺乏一些建模能力。

GRU通过引入更新门和重置门,以及候选隐藏状态和隐藏状态的计算,能够控制信息的流动和梯度的传播,从而解决梯度爆炸和梯度消失的问题。它是一种非常流行和有效的RNN变体,在处理序列数据和时间依赖性任务方面得到广泛应用。

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

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

相关文章

DAB-DETR

DAB-DETR(2022ICLR) DAB:Dynamic Anchor Boxes 贡献: 明确了不是由于learnable queries导致的收敛缓慢 4D anchor Anchor Update Width & Height Modulated Temperature Tuning 前半部分:Why a positional …

每日一题~将有序数组转换为二叉搜索树

原题链接:108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) 题目描述: 思路分析: 今天这道题比较简单,我们看一下数组和树之间的联系很容易就能发现规律。 通过简单观察我们发现,位于数组中…

CSDN博客去水印方法

直接在 创作中心->博客 设置这里关了好像就行了,之前方法是找图片链接?后面的一大串字符给去掉。

Java由浅入深理解线程池设计和原理

目录 1 线程1.1 什么是线程?什么是进程?1.2 java中线程的实现方式有几种?1.3 线程的生命周期是什么? 2 线程存在的问题2.1 一个线程只能执行一个任务2.2 线程执行完后销毁,无法复用2.3 线程过多,导致JVM宕机 3 初识线程池3.1 了解J.U.C3.2 线…

计网第五章(运输层)(六)(TCP可靠传输的实现)

目录 一、基本概述 二、具体实现 1.前后沿: 2.利用指针描述发送窗口的状态 3.有差错情况 之前在数据链路层时已经讨论过可靠传输(计网第三章(数据链路层)(二)(可靠传输)&#x…

电表智能管理系统-实现智能化、数字化的电力管理

随着信息技术的发展,智能电表已经成为了现代电力管理的重要组成部分。智能电表能够实时监测和记录用电量,自动控制用电,从而实现更加智能、高效的电力管理。 智能电表是一种能够自动监测和记录用电量,并能够自动控制用电的设备…

IDEA中取消双击shift全局搜索

设置如图步骤: 取消双击shift之后,如果想再次使用全局搜索,可以通过: ctrlshifA

Vue与relation-graph:高效打造关系图的秘诀

产品提需求啦,有一个需求就是实现一个功能:展现各个文件之间的调用关系,通过关系图的形式进行展示出来。 之前考虑使用antv x6实现此功能,但是考虑到只是展示的功能,也不需要进行交互,所以放弃使用antv x6&…

【操作系统笔记十二】Linux常用基础命令

Linux 常用快捷键 Tab 命令或路径等的补全键,特别常用的快捷键Ctrl insert 复制命令行内容(常用可提高效率)Shift insert 粘贴命令行内容(常用可提高效率)Ctrl C 中断当前任务(退出)Ctrl Z…

Java笔记:看清类加载过程

1 类加载的过程 1.1 加载 “加载”是“类加载”(Class Loading)过程的第一步。这个加载过程主要就是靠类器实现的,包括用户自定义类加载器。 加载的过程 在加载的过程中,JVM主要做3件事情 1)通过一个类的全限定名来获取定义此类的二进制字节…

【Linux网络编程】日志与守护进程

日志是网络服务器程序在后台以守护进程的形式运行时,处理情况的描述被打印到了日志文件里面,方便维护人员查看。 1.前台进程与后台进程 左边会话输入命令 sleep 10000 & 代表进程后台运行,右边会话输入命令 sleep 20000可以看到命令行解…

珠海建筑模板厂家-能强优品木业:为您提供优质建筑模板解决方案

在珠海这座美丽的沿海城市,建筑行业蓬勃发展,对于高质量的建筑模板需求也日益增加。在这里,有一家备受赞誉的建筑模板厂家,那就是能强优品木业。作为一家专业的建筑模板供应商,他们以优质的产品和卓越的服务在业界享有…

联合查询

1.条件 2.步骤 1.判断列数 2.判断回显 3.重要 在回显位置写 查看字段名字 使用工具 hackbar

C语言while循环嵌套-动态字母

1、题目 使用C语言实现对字母动态移动(根据用户输入的字符将字符从屏幕的坐标移动屏幕的右边)。 2、分析 字符的移动核心是在显示的字母前面补上对应的空格字符内容,配合上延时就可以实现字符从屏幕左边移动到屏幕右侧的效果,实现…

【全网最全】2023华为杯研究生数学建模B题完整思路+python代码+20页超详细启发式算法+FFT(后续会更新)

目录 点击资料获取入口 DFT在通信等领域的重要应用,以及目前采用FFT计算DFT的硬件开销大的问题。提出了将DFT矩阵分解为整数矩阵乘积逼近的方法来降低硬件复杂度。 建模目标是对给定的DFT矩阵F_N,找到一组K个矩阵A,使F_N和A的乘积在Frobenius范数意义下尽可能接近,即最小化目标…

开源负载测试神器K6

简介:K6是一个强大的开源负载和性能测试工具,用于测试软件系统的性能和可靠性。K6的使用主要是编写测试脚本并运行,这些脚本主要用JavaScript编写,可以使用HTTP,WebSocket等多种协议进行测试。并且易于安装和运行&…

Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架:学生考试Web应用程序

文章目录 什么是Java Web框架?MVC模式在Spring MVC中的应用简单的学生考试Web应用程序设置Spring MVC项目创建实体类创建考试实体类创建控制器创建服务层创建数据库创建视图配置Spring MVC实现功能运行应用程序运行应用程序 🎈个人主页:程序员…

MySQL学习笔记3

MySQL的源码编译安装: 1、参考MySQL的源码安装官方文档: 2、源码安装定制选项: 3、源码安装三部曲:配置、编译、安装。 4、软件安装包: mysql-boost-5.7.43.tar.gz 5、安装需求: 安装需求具体配置安装目…

安装gpu版本的paddle和paddleclas

安装gpu版本的paddle python -m pip install paddlepaddle-gpu2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html以上支持cuda11.1版本 其他需求可查阅文档在这里 安装paddleclas 1 在虚拟环境中安装所需的Python库: pip inst…

Cortex-M3/M4堆栈

一、Cortex-M3/M4堆栈操作 Cortex-M3/M4 使用的是“向下生长的满栈”模型。堆栈指针 SP 指向最后一个被压入堆栈的 32 位数值。在下一次压栈时, SP 先自减 4, 再存入新的数值,如图所示为堆栈的PUSH操作。 POP 操作刚好相反:先从 …