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

目录

  • 举例应用
    • 槽填充(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这个单词的信息和“beijing”这个单词的信息,一起拿进来处理,很显然这个时候就知道这是目的地还是出发地
在这里插入图片描述
只要我们对神经网络里面引入一个记忆单元,能对我刚才处理过的事情有一定记性的话,在做下一个单词预测的时候,我把我上一个单词的信息和下一个单词一起考虑 。我就能预测正确 ,这到底是发地还是目的地 ,这个就是循环神经网络。

对比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]
在这里插入图片描述

学习目标

在这里插入图片描述

存在 序列依赖性限制

RNN 存在一种称为短期记忆(short-term memory)的问题,即它们往往只能捕捉到相对短距离的序列依赖性。这意味着如果一个序列非常长,RNN 可能无法有效地捕捉到序列中的长期依赖关系,因为梯度消失问题会使得远距离的信息很难传递到网络的较早层。

当序列很长的时候,处理的第一百个单词的时候,第一个单词对处理这个单词很有帮助,但是由于RNN的特征,第一个单词再第二个单词处理的时候,信息就已经衰减了。所以对处理这第一百个单词的时候用处不大。

深度

深度循环神经网络(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可以一次并行做。

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

存在的问题

编码有效性

LSTM 的编码有效性指的是它如何捕捉和表示输入序列中的关键信息。尽管 LSTM 的设计旨在解决传统 RNN 中的梯度消失和梯度爆炸问题,但在处理非常长的序列时,LSTM 仍然可能难以有效地捕捉长期依赖关系。这可能导致模型对于先前的输入信息过于依赖,而无法有效地利用更远处的上下文。

比如在翻译“机器学习”的时候,会将所有的字都进行编码,但是在翻译的时候,比如翻译“machine”的时候,只有机器两个的字的编码对翻译是有用的。我们此时用不到学习这两个字的编码。

训练效率

LSTM 的训练效率问题主要涉及其在大规模数据集上的训练时间和计算成本。由于 LSTM 是一种顺序模型,它需要按照序列的顺序逐步计算和更新隐藏状态。这导致 LSTM 的训练速度相对较慢,并且在处理长序列时尤为明显。此外,LSTM 的参数量通常较大,这也增加了训练过程的计算成本。

训练过程中,一个单词一个单词顺序生成的。后面单词的生成依赖于之前单词的生成。

门控循环单元(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.rhkb.cn/news/144278.html

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

相关文章

Vue中自定义实现类似el-table的表格效果实现行颜色根据数据去变化展示

主要使用div布局实现表格效果&#xff0c;并使用渐变实现行背景渐变的效果 页面布局 <div class"table-wrap"><div class"table-title"><divv-for"(item, index) in tableColumn":key"index":prop"item.prop&qu…

Windows11安装MySQL8.1

安装过程中遇到任何问题均可以参考(这个博客只是单纯升级个版本和简化流程) Windows安装MySQL8教程-CSDN博客 到官网下载mysql8数据库软件 MySQL :: Download MySQL Community Server 下载完后,解压到你需要安装的文件夹 其中的配置文件内容了如下 [mysqld]# 设置3306端口po…

使用applescript自动化trilium的数学公式环境

众所周知&#xff0c;trilium什么都好&#xff0c;就是对数学公式的支持以及markdown格式的导入导出功能太拉了&#xff0c;而最拉的时刻当属把这两个功能结合起来的时候&#xff1a;导入markdown文件之后&#xff0c;原来的数学公式全没了&#xff0c;需要一个一个手动用ctrlm…

python安装第三方模块方法

正常情况下安装python第三方模块没啥说的&#xff0c;但是由于python安装模块默认是在外网下载安装&#xff0c;牵扯外网网速问题&#xff0c;所以可以配置下使用国内某镜像源来下载模块 python -m pip install xxxxxxxxxxx 和 pip install xxxxxxxxxx 的命令都可下载安装第三…

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类...

原文链接&#xff1a;http://tecdat.cn/?p21379 本文我们对逻辑回归和样条曲线进行介绍&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 logistic回归基于以下假设&#xff1a;给定协变量x&#xff0c;Y具有伯努利分布&#xff0c; 目的是估计参数β。 回想一…

一篇博客学会系列(1) —— C语言中所有字符串函数以及内存函数的使用和注意事项

目录 1、求字符串长度函数 1.1、strlen 2、字符串拷贝(cpy)、拼接(cat)、比较(cmp)函数 2.1、长度不受限制的字符串函数 2.1.1、strcpy 2.1.2、strcat 2.1.3、strcmp 2.2、长度受限制的字符串函数 2.2.1、strncpy 2.2.2、strncat 2.2.3、strncmp 3、字符串查找函数…

正态分布的概率密度函数|正态分布检验|Q-Q图

正态分布的概率密度函数&#xff08;Probability Density Function&#xff0c;简称PDF&#xff09;的函数取值是指在给定的正态分布参数&#xff08;均值 μ 和标准差 σ&#xff09;下&#xff0c;对于特定的随机变量取值 x&#xff0c;计算得到的概率密度值 f(x)。这个值表示…

借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案

背景介绍 在过去的数月中&#xff0c;亚马逊云科技已经推出了多篇博文&#xff0c;来介绍如何在亚马逊云科技上部署 Stable Diffusion&#xff0c;或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。 为了帮助客户快速、安全地在亚马逊云科技上构建、…

快速将iPhone大量照片快速传输到电脑的办法!

很多使用iPhone 的朋友要将照片传到电脑时&#xff0c;第一时间都只想到用iTunes 或iCloud&#xff0c;但这2个工具真的都非常难用&#xff0c;今天小编分享牛学长苹果数据管理工具的照片传输功能&#xff0c;他可以快速的将iPhone照片传输到电脑上&#xff0c;并且支持最新的i…

【Linux】JumpServer 堡垒机远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Docker 容器跨主机通信 - Flannel

Author&#xff1a;rab 目录 前言一、架构及环境二、服务部署2.1 Etcd 部署2.2 Flannel 部署2.3 Docker 网络配置 三、容器通信验证及路由分析3.1 通信验证3.2 路由转发分析3.3 数据分发分析 总结 前言 今天是中秋佳节&#xff0c;首先在此祝大家“中秋快乐&#xff0c;阖家团…

RDMA技术(解决主从数据库数据不一致问题)

优质博文&#xff1a;IT-BLOG-CN 一、简介 RDMA(remote direct memory access)即远端直接内存访问&#xff0c;是一种高性能网络通信技术&#xff0c;具有高带宽、低延迟、无CPU消耗等优点。 主要解决网络传输中服务器端数据处理的延迟问题。 Remote&#xff1a;数据通过网络…

机器人过程自动化(RPA)入门 3. 顺序、流程图和控制流程

到目前为止&#xff0c;我们已经了解了RPA是什么&#xff0c;并且我们已经看到了通过记录任务的活动并运行它来训练UiPath机器人是多么简单。使用记录器的UiPath可以很容易地自动化日常任务。在我们开始自动化复杂的任务之前&#xff0c;让我们学习如何控制从一个到另一个的活动…

传统遗产与技术相遇,古彝文的数字化与保护

古彝文是中国彝族的传统文字&#xff0c;具有悠久的历史和文化价值。然而&#xff0c;由于古彝文的形状复杂且没有标准化的字符集&#xff0c;对其进行文字识别一直是一项具有挑战性的任务。本文介绍了古彝文合合信息的文字识别技术&#xff0c;旨在提高古彝文的自动识别准确性…

分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结…

Pikachu靶场——XXE 漏洞

文章目录 1. XXE1.1 查看系统文件内容1.2 查看PHP源代码1.3 查看开放端口1.4 探测内网主机 1. XXE 漏洞描述 XXE&#xff08;XML External Entity&#xff09;攻击是一种利用XML解析器漏洞的攻击。在这种攻击中&#xff0c;攻击者通过在XML文件中插入恶意实体来触发解析器加载…

直播软件开发技巧:7个实时视频传输和弹幕功能的关键步骤

近年来&#xff0c;随着直播行业的快速崛起&#xff0c;直播软件的开发变得越来越重要。直播软件的成功不仅依赖于稳定的实时视频传输&#xff0c;还需要强大的弹幕功能来提升用户体验。作为直播软件开发领域的专家&#xff0c;我将与您分享七个关键步骤&#xff0c;帮助您掌握…

用友移动管理系统任意文件上传漏洞

一、漏洞描述 用友移动管理系统 uploadApk.do 文件存在任意文件上传 二、fofa查询 body"../js/jslib/jquery.blockUI.js" 三、漏洞利用 poc POST /maportal/appmanager/uploadApk.dopk_obj HTTP/1.1 Host: ip:port Cache-Control: max-age0 Upgrade-Insecure-Req…

Android 使用kotlin+注解+反射+泛型实现MVP架构

一&#xff0c;MVP模式的定义 ①Model&#xff1a;用于存储数据。它负责处理领域逻辑以及与数据库或网络层的通信。 ②View&#xff1a;UI层&#xff0c;提供数据可视化界面&#xff0c;并跟踪用户的操作&#xff0c;以便通知presenter。 ③Presenter&#xff1a;从Model层获…

HTML - input type=file 允许用户选择多个文件

效果 示例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><!-- When the multiple Boolean attribute is specified, the file input allows the user to select more than o…