【Python · PyTorch】循环神经网络 RNN(基础概念)
【Python · PyTorch】循环神经网络 RNN(基础概念)
- 0. 生物学相似性
- 1. 概念
- 2. 延时神经网络(TDNN)
- 3. 简单循环神经网络(Simple RNN)
- 3.1 BiRNN 双向循环神经网络
- 3.2 特点
- 记忆性
- 参数共享
- 图灵完备
- 3.3 网络结构
- 3.4 随时间反向传播
- 4. 基于门控的循环神经网络
- 4.1 长短期记忆网络(Long Short-Term Memory, LSTM)
- 4.1.1 LSTM 基本组合方式
- 4.1.2 LSTM 门控机制理解
- ① 输入门
- ② 遗忘门
- ③ 输出门
- 4.1.3 BiLSTM 双向长短期记忆网络
- 4.2 门控循环单元网络(Gated Recurrent Units, GRU)
- 4.2.1 GRU 基本组合方式
- 4.2.2 GRU 门控机制理解
- ① 更新门
- ② 重置门
- 4.2.3 BiGRU 双向门控循环单元网络
- 5. 其他循环神经网络
- 5.1 回声状态网络(Echo State Network, ESN)
- 5.2 霍普菲尔德网络(Hopfield Network)
0. 生物学相似性
1933年,西班牙神经生物学家Rafael Lorente de Nó发现大脑皮层 (cerebral cortex) 的解剖结构允许刺激在神经回路中循环传递,并由此提出反响回路假设 (reverberating circuit hypothesis)。该假说在同时期的一系列研究中得到认可,被认为是生物拥有短期记忆的原因。随后神经生物学的进一步研究发现,反响回路的兴奋和抑制受大脑阿尔法节律 (α-rhythm) 调控,并在α-运动神经 (α-motoneurones) 中形成循环反馈系统 (recurrent feedback system)。在二十世纪70-80年代,为模拟循环反馈系统而建立的一些数学模型为RNN带来了启发。
1. 概念
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。
应用领域
- 自然语言处理:文本生成、情感分析、机器翻译
- 音频处理:声学模型构建、语音识别
- 时间序列预测:预测股价、气象数据、交通流量
2. 延时神经网络(TDNN)
延时神经网络 (Time Delay Neural Network, TDNN):在ANN的 非输出层 添加 延时器 → 记录最近几次活性值
第 t t t 时刻,第 l l l 层神经元 活性值 取决于 第 l − 1 l-1 l−1 层神经网络 最近 K K K 个时刻的活性值:
h t ( l ) = f ( h t ( l − 1 ) , h t − 1 ( l − 1 ) , ⋯ , h t − K ( l − 1 ) ) \boldsymbol{h}^{(l)}_{t}=f(\boldsymbol{h}^{(l-1)}_{t},\boldsymbol{h}^{(l-1)}_{t-1},\cdots,\boldsymbol{h}^{(l-1)}_{t-K}) ht(l)=f(ht(l−1),ht−1(l−1),⋯,ht−K(l−1))
其中: h t ( l ) ∈ R M l \boldsymbol{h}^{(l)}_{t} \in \mathbb{R}^{M_l} ht(l)∈RMl 表示第 l l l 层神经网络在时刻 t t t 的活性值, M l M_l Ml 为第 l l l 层神经元的数量。
通过延时器,前馈神经网络具有了短期记忆的能力。
3. 简单循环神经网络(Simple RNN)
简单循环神经网络 (Simple Recurrent Neural Network, SRNN):一种简单的循环神经网络,仅有一个隐藏层夹在浅层ANN中,负责连接相邻的层与层。
令向量 x t ∈ R M \boldsymbol{x}_t \in \mathbb{R}^{M} xt∈RM 表示在时刻 t t t 网络的输入, h t ∈ R D \boldsymbol{h}_t\in\mathbb{R}^D ht∈RD 表示隐藏层状态 (即隐藏层神经元活性值),则 h t \boldsymbol{h}_t ht 不仅和当前时刻的输入 x t \boldsymbol{x}_t xt相关,也和上一个时刻的隐藏层状态 h t − 1 h_{t-1} ht−1相关。
简单循环神经网络的两种表现形式(未展开 & 展开):
简单循环神经网络 时刻 t t t 更新公式为:
z t = U h t − 1 + w x t + b h t = f ( z t ) \boldsymbol{z}_t=Uh_{t-1} + wx_t+b \\ h_t=f(z_t) zt=Uht−1+wxt+bht=f(zt)
3.1 BiRNN 双向循环神经网络
双向循环神经网络 (BiRNN):一种特殊的RNN,能够同时处理输入序列的前后文信息,从而提高模型的表达能力和准确度。
优点:
- 捕捉前后文信息:BiRNN能够同时利用输入序列的前后文信息,这在理解自然语言时非常重要。
- 提高精度:在处理某些序列数据时,BiRNN能够更全面地捕捉整个序列中的重要信息,从而提高模型的表达能力和准确度。
缺点:
- 计算成本较高:由于需要同时处理前后文信息,BiRNN的计算成本比单向RNN更高。
- 梯度消失问题:在长序列处理中,BiRNN也可能遇到梯度消失问题,影响模型性能。
3.2 特点
记忆性
TDNN SRNN LSTM GRU ESN Hopfield - 记忆功能:
网络类型 | 记忆期限 | 实现方式 | 特性 |
---|---|---|---|
延时神经网络 (TDNN) | 短期 | 延时器 | |
普通循环神经网络 (SRNN) | 短期 | 延时器 / 隐状态 / 细胞雏形 | |
长短期记忆网络 (LSTM) | 长短期 | 隐状态 / 细胞结构 | |
门控循环单元网络 (GRU) | 长短期 | 隐状态 / 细胞结构 | |
回声状态网络 (ESN) | 动态 | 储备池 | 动态 |
霍普菲尔德网络 (Hopfield) | 大约单元数15%左右 | 统计力学特性 / 热力学特性 | 联想 |
参数共享
RNN 参数共享:在每个时间步中,使用的权重矩阵是共享的。
图灵完备
图灵机 (Turing Machine):一种抽象的信息处理装置,具有无限存储能力,可以用来解决所有可计算问题。
图灵完备 (Turing Completeness):一种数据操作规则,比如一种计算机编程语言,可以实现图灵机所有功能,解决所有可计算问题。
不严谨的理解:只要顺序想好 啥可计算的问题都能计算,只要存储空间给够 啥五花八门结构的用于计算的信息/数据都能存储。
与 RNN 的关系:所有图灵机都可被一个有Sigmoid型激活函数的神经元构成的全连接循环神经网络组成。
3.3 网络结构
① 一对一(One to One)
- 输入:单变量
- 输出:单变量
② 一对多(One to Many)
- 输入:单变量
- 输出:序列
③ 多对一(Many to One)
- 输入:序列
- 输出:单变量
④ 多对多(Many to Many)
- 输入:序列
- 输出:序列
⑤ 同步多对多
- 输入:序列(与输出对应)
- 输出:序列(与输入对应)
3.4 随时间反向传播
RNN的训练采用时间反向传播(Backpropagation Through Time, BPTT),该算法通过在时间序列的每个时间步上计算梯度,逐步更新网络的参数。BPTT的核心思想是在展开的时间图上对整个序列进行梯度计算,并逐时间步向前反向传播梯度。
4. 基于门控的循环神经网络
门控循环神经网络 (Gated Recurrent Neural Network):为更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动
4.1 长短期记忆网络(Long Short-Term Memory, LSTM)
长短期记忆网络 (LSTM,Long Short-Term Memory):一种特殊的循环神经网络,用于处理和建模具有时间依赖性的序列数据。与传统RNN相比,LSTM引入了一种称为"门控机制"的结构,有效地解决了传统RNN在长序列训练中容易出现的 梯度消失 和 梯度爆炸 问题。
标志:为RNN设计细胞 → 解决 无法捕捉“长期”关联/依赖关系 的问题
LSTM可解决RNN在处理长序列数据时的 梯度消失 和 梯度爆炸 问题。
LSTM可捕捉序列中的长期依赖关系,因此适合时序处理、自然语言处理、音频处理等领域的序列数据。
关键思想:通过门控机制控制信息的流动,使网络能够更好地捕捉和记忆长期依赖关系,从而适用于处理时间序列数据,如语音识别、文本生成、机器翻译等任务。通过引入LSTM结构,模型能够更好地处理长期依赖关系,避免了传统RNN中信息衰减或失去的问题,提高了模型对序列数据的建模能力。
相较于RNN优势:
- 缓解RNN ”梯度消失“ 问题
- 缓解RNN ”长期“ 依赖问题
LSTM 单元/细胞 基本结构:
LSTM 门控机制 (Gating Mechanism) 公式及其作用:
输入门𝒊𝑡:控制当前时刻的候选状态𝒄̃𝑡 有多少信息需要保存.
i t = σ ( W i x t + U i h t − 1 + b i ) \boldsymbol{i}_t=\sigma(\boldsymbol{W}_i\boldsymbol{x}_t+\boldsymbol{U}_i\boldsymbol{h}_{t-1}+\boldsymbol{b}_i) it=σ(Wixt+Uiht−1+bi)
遗忘门𝒇𝑡 :控制上一个时刻的内部状态𝒄𝑡−1 需要遗忘多少信息.
f t = σ ( W f x t + U f h t − 1 + b f ) \boldsymbol{f}_t=\sigma(\boldsymbol{W}_f\boldsymbol{x}_t+\boldsymbol{U}_f\boldsymbol{h}_{t-1}+\boldsymbol{b}_f) ft=σ(Wfxt+Ufht−1+bf)
输出门 𝒐𝑡:控制当前时刻的内部状态 𝒄𝑡 有多少信息需要输出给外部状态𝒉𝑡.
o t = σ ( W o x t + U o h t − 1 + b o ) \boldsymbol{o}_t=\sigma(\boldsymbol{W}_o\boldsymbol{x}_t+\boldsymbol{U}_o\boldsymbol{h}_{t-1}+\boldsymbol{b}_o) ot=σ(Woxt+Uoht−1+bo)
4.1.1 LSTM 基本组合方式
前后串行相继关系
在PyTorch中的体现:torch.nn.LSTM()
的hidden_size
参数。
两层并行层叠关系
在PyTorch中的体现:torch.nn.LSTM()
的num_layers
参数。
4.1.2 LSTM 门控机制理解
LSTM通过以下步骤在每个时间步处理输入序列:
- 输入序列的当前时间步 t 的输入与上一个时间步 t-1的隐藏状态传递给LSTM单元。
- 遗忘门决定哪些信息应该从单元状态中遗忘,输入门决定哪些新信息应该存储在单元状态中。
- 更新单元状态,将遗忘门的输出与输入门的输出相乘,然后加上一个候选值,以更新单元的状态。
- 输出门决定了当前时间步的隐藏状态。
- 新的隐藏状态和单元状态传递到下一个时间步,同时输出用于预测或其他任务。
① 输入门
输入门 (Input Gate):帮助模型确定需要将多少过去的信息 (来自之前的时间步骤) 传递到未来,取值介于0~1。
② 遗忘门
遗忘门 (Forget Gate):对于上一时刻LSTM中的单元状态来说,一些“信息”可能会随着时间的流逝而“过时”。为了不让过多记忆影响神经网络对现在输入的处理,我们应该选择性遗忘一些在之前单元状态中的分量这个工作就交给了“遗忘门”,取值介于0~1。
③ 输出门
输出门 (Output Gate):包含一个Sigmoid激活函数和一个点乘运算。Sigmoid函数的输出在0到1之间,它可以决定哪些信息需要保留,哪些信息需要丢弃,取值介于0~1。
4.1.3 BiLSTM 双向长短期记忆网络
双向长短期记忆网络 (LSTM):一种改进LSTM,专门设计用于处理序列数据。BiLSTM通过结合前向和后向两个LSTM网络的输出来捕捉序列中的双向依赖关系,从而能够同时考虑序列的前后文信息。
BiLSTM由前向LSTM和后向LSTM组成。前向LSTM处理输入序列从开始到结束,而后向LSTM则从结束到开始处理。
两向LSTM的输出结合在一起,形成最终的输出结果。
每个时刻的输出是前向与后向LSTM的隐状态的连接,亦可使用其他方式连接。
优势:
- 捕捉双向依赖关系:BiLSTM能够同时考虑到序列的前后文信息,对于需要了解全局上下文的任务 (如命名实体识别、机器翻译等) 非常有利。
- 改善性能:在许多自然语言处理 (NLP) 任务中,BiLSTM通常比LSTM具有更好的表现。
应用场景:
- 情感分析:通过获取文本的上下文信息,判断情感倾向。
- 机器翻译:在翻译过程中,考虑上下文的双向信息,提高翻译质量。
- 语音识别:处理语音信号时,利用双向信息提高识别准确率3。
4.2 门控循环单元网络(Gated Recurrent Units, GRU)
门控循环单元(gated recurrentunit,GRU):一种循环神经网络,可解决一般的RNN存在的长期依赖问题,且相较于LSTM具有更少的计算量。
标志:简化LSTM细胞结构 + 保持其基本效能 → 减时提速
GRU相较于LSTM结构更简单 (参数较少),即在训练过程中 GRU需要的 计算资源和训练时间更少。
在特定情况下,GRU可能会比LSTM更有效率,尤其是在对训练速度有较高要求的应用场景中。
相较于LSTM优势:
- 缓解LSTM 计算训练速度慢的问题
- 降低过拟合风险
GRU 单元/细胞 基本结构:
4.2.1 GRU 基本组合方式
基本组合方式与LSTM类似:前后串行相继关系、两层并行层叠关系
在PyTorch中torch.nn.GRU()
的体现参数也与torch.nn.LSTM()
类似。
GRU 门控机制 (Gating Mechanism) 公式及其作用:
更新门𝒛𝑡:权衡新旧信息保留与遗忘。
z t = σ ( W z x t + U z h t − 1 + b z ) \boldsymbol{z}_t=\sigma(\boldsymbol{W}_z\boldsymbol{x}_t+\boldsymbol{U}_z\boldsymbol{h}_{t-1}+\boldsymbol{b}_z) zt=σ(Wzxt+Uzht−1+bz)
重置门𝒓𝑡:确定过去信息的遗忘比例。
r t = σ ( W r x t + U r h t − 1 + b r ) \boldsymbol{r}_t=\sigma(\boldsymbol{W}_r\boldsymbol{x}_t+\boldsymbol{U}_r\boldsymbol{h}_{t-1}+\boldsymbol{b}_r) rt=σ(Wrxt+Urht−1+br)
4.2.2 GRU 门控机制理解
① 更新门
更新门:帮助模型确定当前单元新信息与上个单元传递旧信息的考虑比例,取值介于0~1。
② 重置门
重置门:帮助模型确定过去信息的遗忘比例,取值介于0~1。
4.2.3 BiGRU 双向门控循环单元网络
双向门控循环单元网络 (BiGRU):一种改进GRU,专门设计用于处理序列数据。BiGRU通过结合前向和后向两个GRU网络的输出来捕捉序列中的双向依赖关系,从而能够同时考虑序列的前后文信息。
5. 其他循环神经网络
由于篇幅有限,这里对ESN和Hopfield网络仅作简单描述,后续章节可能会补齐相关内容。
5.1 回声状态网络(Echo State Network, ESN)
回声状态网络 (ESN):一种循环神经网络。ESN 训练方式与传统 RNN 不同。
矩阵谱半径 (Matrix Spectral Radius):矩阵绝对值最大的特征值。
设矩阵 A ∈ C n × n A \in C^{n \times n} A∈Cn×n,其特征值为 λ 1 , λ 2 , ⋯ , λ n \lambda_1, \lambda_2, \cdots, \lambda_n λ1,λ2,⋯,λn,则矩阵 A A A 的谱半径 ρ ( A ) \rho(A) ρ(A) 定义为:
ρ ( A ) = max 1 ≤ i ≤ n ∣ λ i ∣ \rho(A)=\max_{1 \le i \le n}|\lambda_i| ρ(A)=1≤i≤nmax∣λi∣
网络结构及特点:
- 储层 (Reservoir):中文翻译有叫储备池、储层、储蓄池等等各种名称。ESN 中的储层是互连神经元的集合,其中连接及其权重是随机初始化和固定的。该储层充当动态储层,其目的是将输入数据转换到更高维的空间,它充当动态存储器,捕获输入数据中的时间依赖性。储层中的神经元可以表现出复杂的动力学,包括振荡和混沌,这可以帮助捕获输入数据中的时间模式。
- 输出层:经过储层后,转换后的数据仅用于训练输出层。这通常是使用线性回归方法完成的,使得训练过程相对快速和高效。
- 回声状态属性:为了使ESN有效工作,它必须具有“回声状态属性”。这意味着网络的内部状态应该是最近输入历史的函数,并且应该淡出或“回显”旧的输入。此属性确保网络对先前的输入有一定的记忆,但不会陷入重复它们的循环中。调整储层权重矩阵的谱半径是确保这一特性的一种方法。
- 储层计算: 储层计算是一个包含 Echo State Networks 的框架。在 ESN 中,储层是随机初始化的循环神经元的动态存储器,用于捕获顺序数据中的时间模式。
优点:
- 时间序列预测: ESN 擅长预测时间序列中的未来值。在处理具有复杂模式和依赖性的数据序列时,它们特别有效。
- 训练高效: ESN 拥有独特的训练方法。虽然存储库是随机生成和固定的,但仅训练输出权重。与传统的循环神经网络 (RNN) 相比,训练计算效率更高,并且允许 ESN 在较小的数据集上进行训练。
- 非线性映射:ESN 中的储层给模型带来了非线性。这有助于捕获和建模线性模型可能难以处理的数据中的复杂关系。
- 对噪声的鲁棒性:ESN 对输入数据中的噪声具有鲁棒性。储层的动态特性使其能够过滤掉不相关的信息并专注于基本模式。
- 易于实施:与训练传统RNN相比, ESN实现更简单。固定随机库和输出权重的直接训练使 ESN 更易于实际使用。
- 记忆 & 学习: ESN 中的存储库充当存储器,从输入序列中捕获相关信息。这种记忆使网络能够根据学习的模式进行概括并做出准确的预测。
缺点:
- 对储层动力学的有限控制:储层是随机初始化的,这种缺乏对其动力学的直接控制。虽然这种随机性可能是有益的,针对特定任务精确定制网络比较困难。
- 超参数灵敏度:ESN 通常依赖于调整超参数(储层大小、谱半径、激活函数和输入缩放)。
- 缺乏理论理解:与其他一些神经网络架构相比,ESN 的理论理解并不完善。对于一些情况难以解释。
- 表达能力有限:在某些任务下会不如更复杂的循环神经网络。难以完成需要捕获非常复杂的模式的任务。
- 过度拟合的可能性:根据任务的复杂性和存储库的大小,ESN 可能容易过拟合,尤其是训练数据有限的情况下。
5.2 霍普菲尔德网络(Hopfield Network)
Hopfield神经网络:一种递归神经网络,由约翰·霍普菲尔德在1982年发明。
Hopfield网络是一种结合存储系统和二元系统的神经网络。它保证了向局部极小的收敛,但收敛到错误的局部极小值(local minimum),而非全局极小(global minimum)的情况也可能发生。Hopfield网络也提供了模拟人类记忆的模型。
离散Hopfield网络:一个单层网络,有n个神经元节点,每个神经元的输出均接到其它神经元的输入。各节点没有自反馈。每个节点都可处于一种可能的状态(1 或-1),即当该神经元所受的刺激超过其阀值时,神经元就处于一种状态(比如1),否则神经元就始终处于另一状态(比如-1)。 整个网络有两种工作方式:即异步方式和同步方式。
联想记忆功能是离散Hopfield网络的一个重要应用范围。要想实现联想记忆,反馈网络必须具有两个基本条件:
- 网络能收敛到稳定的平衡状态,并以其作为样本的记忆信息;
- 具有回忆能力,能够从某一残缺的信息回忆起所属的完整的记忆信息。 离散Hopfield网络实现联想记忆的过程分为两个阶段:学习记忆阶段和联想回忆阶段。在学习记忆阶段中,设计者通过某一设计方法确定一组合适的权值,使网络记忆期望的稳定平衡点。联想回忆阶段则是网络的工作过程。
离散Hopfield网络用于联想记忆有两个突出的特点:即记忆是分布式的,而联想是动态的。
离散Hopfield网络局限性,主要表现在以下几点:
- 记忆容量的有限性;
- 伪稳定点的联想与记忆;
- 当记忆样本较接近时,网络不能始终回忆出正确的记忆等。另外网络的平衡稳定点并不可以任意设置的,也没有一个通用的方式来事先知道平衡稳定点。
相关文章:
【Python · PyTorch】循环神经网络 RNN(基础概念)
【Python PyTorch】循环神经网络 RNN(基础概念) 0. 生物学相似性1. 概念2. 延时神经网络(TDNN)3. 简单循环神经网络(Simple RNN)3.1 BiRNN 双向循环神经网络3.2 特点记忆性参数共享图灵完备 3.3 网络结构3…...
在Ubuntu系统中制作系统启动u盘
2024-11:用Ubuntu系统一段时间后,编程体验很好,命令行尤其好用。时间一长,考虑到Windows系统里面丰富的软件生态,还是颇为割舍不下,本来想着再买个主机,但是考虑到成本问题,还是给笔…...
性能监控利器:Ubuntu 22.04 上的 Zabbix 安装与配置指南
简介 今天我们来聊聊如何在 Ubuntu 22.04 上安装和配置 Zabbix。我们会用到 PostgreSQL 作为数据库后端,Nginx 作为 Web 服务器,并用 Let’s Encrypt SSL 证书来保驾护航。 什么是 Zabbix? Zabbix 是一个开源的网络监控和管理解决方案&…...
【C语言篇】从字符海洋到整数大陆——atoi 的探险之旅
文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗࿱…...
字符三角形
字符三角形 C语言代码C语言代码Java语言代码Python语言代码 💐The Begin💐点点关注,收藏不迷路💐 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 输入只有一行, …...
3.12MayBeSomeLinearAlgebra
X是M*(D1),XT为(D1)*M Ω是一行D1列,X乘以欧米噶是M行D1列 行是说样本个数,列是特征数量 如果是小样本,那么可能会出现特征数量大于样本个数 如果MD*DM就是M*M,...
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
在当今数字化、网络化的时代背景下,视频监控技术已广泛应用于各行各业,成为保障安全、提升效率的重要工具。然而,面对复杂多变的监控需求和跨区域、网络化的管理挑战,传统的视频监控解决方案往往显得力不从心。 EasyCVR视频融合云…...
小程序24-滚动效果:scroll-view组件详解
在微信小程序中如果想实现内容滚动,需要使用 scroll-view 组件 scroll-view:可滚动视图区域,适用于需要滚动展示内容的场景,用户可以通过手指滑动或者点击滚动条滚动内容。 scroll-x允许横向滚动scroll-y允许纵向滚动 实现横向…...
概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?
随着容器技术的日渐成熟,不少企业用户都对应用系统开展了容器化改造。而在容器基础架构层面,很多运维人员都更熟悉虚拟化环境,对“容器圈”的各种概念容易混淆:容器就是 Kubernetes 吗?容器云又是什么?容器…...
分层架构 IM 系统之架构演进
在电商业务日活几百万的情况下,IM 系统采用分层架构方式,如下图。 分层架构的 IM 系统,整体上包含了【终端层】、【入口层】、【业务逻辑层】、【路由层】、【数据访问层】和【存储层】,我们在上篇文章(分层架构 IM 系…...
公司金融期末考试题目
公司金融期末考试题 选择题 1.现金折扣和信用条件(教材P253) 题目类似: 下列不属于信用条件的是()。 现金折扣 数量折扣信用期限 折扣期限 给定的信用条件为"1/10,n/40",则其含义…...
Dev C++ 配置C99标准
这里写自定义目录标题 Dev C 配置C99标准 Dev C 配置C99标准 选择工具-编译选项-编译器-编译时加入以下命令-确定即可 -stdc99...
ubuntu安装Eclipse
版本 ubuntu16.04 64bitEclipse 2019-12 (太高容易崩溃)下载:wget https://archive.eclipse.org/technology/epp/downloads/release/2019-12/R/eclipse-java-2019-12-R-linux-gtk-x86_64.tar.gzjdk安装 将jdk1.8.0_211-linux-x64.tar.gz解压到…...
Android 网络请求(一)初识HTTP网络通信
学习笔记 代码样例 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class HttpURLConnectionExample {public String getDataFromServer() {String result ""; // 存储请求返…...
AIOps案例剖析 | 告警收敛增强:相似告警由千化一
业务规模的指数级增长、稳敏双态共存以及云上云下架构复杂化是近几年企业客户运维部门的最大头疼点,其中告警风暴这一现象在传统AIOps的工作形式下尤难处理。 一、案例背景 某大型企业在过去一年中,业务规模实现了翻倍增长,伴随着业务的迅速…...
压缩感知理论
一、概念理解 压缩感知是什么 压缩感知(Compressed Sensing,CS)是一种基于稀疏表示的采样理论,是一种革命性的信号处理方法,它通过利用信号的稀疏性,在远低于传统采样要求的速率下捕获和重构信号。 信号的稀疏性和压缩感知的关系 信号的稀疏…...
深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验
目录 一、模型构建 1.1残差单元 1.2 残差网络的整体结构 二、统计模型的参数量和计算量 三、数据预处理 四、没有残差连接的ResNet18 五、带残差连接的ResNet18 附:完整的可运行代码 实验大体步骤: 先前说明: 上次LeNet实验用到的那…...
关于SpringBoot集成Kafka
关于Kafka Apache Kafka 是一个分布式流处理平台,广泛用于构建实时数据管道和流应用。它能够处理大量的数据流,具有高吞吐量、可持久化存储、容错性和扩展性等特性。 Kafka一般用作实时数据流处理、消息队列、事件架构驱动等 Kafka的整体架构 ZooKeeper:…...
windows C#-取消任务列表(上)
如果不想等待异步控制台应用程序完成,可以取消该应用程序。 通过遵循本文的示例,可将取消添加到下载网站内容的应用程序。 可通过将 CancellationTokenSource 实例与每个任务进行关联来取消多个任务。 如果选择 Enter 键,则将取消所有尚未完成…...
RabbitMQ4:work模型
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
《筑牢安全防线:培养 C++安全编程思维习惯之道》
在当今数字化飞速发展的时代,软件安全的重要性已提升到前所未有的高度。C作为一种广泛应用于系统开发、游戏制作、高性能计算等众多领域的编程语言,其程序的安全性更是关乎重大。培养 C安全编程的思维习惯,不仅是开发者个人能力提升的关键&am…...
Python Flask中集成SQLAlchemy和Flask-Login
在现代Web应用开发中,数据库和用户认证是两个非常重要的功能。Flask作为一个轻量级的Python Web框架,本身只提供了最基本的Web功能。但是,它可以通过集成各种优秀的扩展库来增强功能。本文将介绍如何在Flask应用中集成SQLAlchemy(数据库)和Flask-Login(用户认证),并提供一个完整…...
Kafka 生产者优化与数据处理经验
Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析:…...
web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)
判断注入类型 a OR 1 1# 发现没有报错 ,说明单引号不是闭合类型 测试别的注入条件 a) OR 1 1# a)) OR 1 1# a" OR 11 发现可以用双引号闭合 发现是")闭合 之后的流程还是与11关一样 爆破显示位 先抓包 是post传参,用hackbar来传参 unam…...
Spring |(二)IoC相关内容 | bean
文章目录 📚bean基础配置🐇bean的id和class🐇bean的name属性🐇bean作用范围scope配置🐇bean基础配置小结 📚bean实例化🐇构造方法实例化(常用)🐇静态工厂实例…...
flux的版本
1.flux1-dev.safetensors https://huggingface.co/black-forest-labs/FLUX.1-devhttps://huggingface.co/black-forest-labs/FLUX.1-dev原生的23.8G的模型。原生12B的模型,float16的。需要配合ae.safetensors,flux1-dev.safetensors以及clip-l和T5的权重使用,注意ae.sft和f…...
基于Springboot+Vue的房屋系统 (含源码数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...
【Bluedroid】A2DP SINK播放流程源码分析
在Bluedroid协议栈中,A2DP(Advanced Audio Distribution Profile)SINK播放流程是一个复杂但有序的过程,它涉及多个层次和组件的交互。 一、概述 1.1. 初始化流程 在A2DP SINK播放之前,系统需要进行一系列初始化操作,以确保A2DP SINK服务能够正确运行。这些操作包括启动…...
【什么是Redis?】
Redis:高性能内存数据库的深度探索 在当今这个数据驱动的世界里,数据库的选择直接关系到应用程序的性能、可扩展性和可靠性。在众多数据库解决方案中,Redis以其卓越的性能、丰富的数据结构和灵活的使用场景脱颖而出,成为众多开发…...
TCL大数据面试题及参考答案
Mysql 索引失效的场景 对索引列进行运算或使用函数:当在索引列上进行数学运算、函数操作等,索引可能失效。例如,在存储年龄的列上建立了索引,若查询语句是 “SELECT * FROM table WHERE age + 1 = 20”,这里对索引列 age 进行了加法运算,数据库会放弃使用索引而进行全表扫…...
提高总线数据传输率
提高总线数据传输率是一个涉及多个方面的技术问题,以下是一些有效的方法: 一、提高总线时钟频率 总线时钟频率是影响总线传输速率的重要因素之一。通过提高总线时钟频率,可以缩短每个时钟周期的时间,从而在相同的时间内传输更多…...
_FYAW智能显示控制仪表的简单使用_串口通信
一、简介 该仪表可以实时显示位移传感器的测量值,并可设定阈值等。先谈谈简单的使用方法,通过说明书,我们可以知道长按SET键可以进入参数选择状态,按“↑”“↓”可以选择该组参数的上一个或者下一个参数。 从参数一览中可以看到有…...
图的遍历。
图的遍历这一部分,离不开广度优先和深度优先,如果大家已经学过搜索算法的话,这部分将是易如反掌。 万能搜索算法-CSDN博客 文章中不会提太多离散数学中图的专有名词,因为本篇博客只涉及最简单的图的遍历,故以练习题为主…...
Methode Electronics EDI 需求分析
Methode Electronics 是一家总部位于美国的全球性技术公司,专注于设计和制造用于多个行业的电子和电气组件,产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域,提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…...
IT资产管理工具-NetBox
IT资产管理工具-NetBox 推荐一款IT资产管理工具 了解推荐阅读官方中文文档 https://docs.wangluohe.com/introduction/ 硬件要求 - 建议4Core 8G以上,100G存储空间 这里我使用的Linux镜像为 CentOS8-Stream 提前关闭Selinux和防火墙 部署NetBox 一&#…...
uniapp接入BMapGL百度地图
下面代码兼容安卓APP和H5 百度地图官网:控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...
AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)
HarmonyOS是全球第三大移动操作系统,有巨大的市场潜力,在国产替代的背景下,机会多多,AWTK支持HarmonyOS,让AWTK开发者也能享受HarmonyOS生态的红利。 AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C…...
React基础知识一
写的东西太多了,照成csdn文档编辑器都开始卡顿了,所以分篇写。 1.安装React 需要安装下面三个包。 react:react核心包 react-dom:渲染需要用到的核心包 babel:将jsx语法转换成React代码的工具。(没使用jsx可以不装)1.1 在html中…...
Oracle热备过程中对数据库崩溃的处理方法
引言 在热备过程中如果发生数据库崩溃、断电等情况该如何处理? 如果正在备份 users 表空间的数据文件过程中,此时的数据文件表头 SCN 会被锁定,此时正在复制数据文件时数据库崩溃,系统断电。 从而导致数据文件表头与控制文件中的不一致,导致数据库无法打开,会要求介质恢…...
身份证实名认证API接口助力电商购物安全
亲爱的网购达人们,你们是否曾经因为网络上的虚假信息和诈骗而感到困扰?在享受便捷的网购乐趣时,如何确保交易安全成为了我们共同关注的话题。今天,一起来了解一下翔云身份证实名认证接口如何为电子商务保驾护航,让您的…...
win10 禁止更新
一、winR 输入 regedit 二、输入注册列表路径: (1)计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings (2)按照格式,创建文件命名: FlightSettingsMaxPauseDays (3&…...
运维百科:网络性能20大关键指标
网络性能评估是确保网络服务质量和用户体验的关键环节。在网络、运维领域中,存在着一系列关键的性能指标,共同构成了衡量网络性能的基础。以下是网络性能的20大关键指标,每个指标都承载着特定的意义和重要性。 1.速率(Rate&#…...
java编程开发基础,正则表达式的使用案例Demo
java编程开发基础,正则表达式的使用案例Demo!实际开发中,经常遇到一些字符串,信息的裁剪和提取操作,正则表达式是经常使用的,下面的案例,可以帮助大家快速的了解和熟悉,正则表达式的使用技巧。 package com…...
结构控制
目录 1.顺序结构 2.分支结构 2.1.单分支结构 2.2.二分支结构 2.3.多分支结构 2.4.嵌套分支结构 3.循环结构 3.1.while 循环结构 3.2.while...else 循环结构 PS:break 关键字 PS:pass 关键字 3.3.for 循环结构 PS:…...
Go语言中的内存分配与初始化:new与make函数详解
在Go语言中,内存分配和初始化是编程的基础操作。Go提供了两个内置函数new和make,用于不同场景下的内存分配和初始化。理解这两个函数的区别和适用场景对于编写高效、安全的Go代码至关重要。本文将详细介绍new和make函数,并提供示例说明它们的…...
The 2024 ICPC Kunming Invitational Contest
VP链接:https://codeforces.com/gym/105386 B. Gold Medal 签到题。对每一个读入的数 a,先记录已有奖牌数量,即 ,再将 a 对 k 取模。然后将 a 数组从大到小排序,将每个不足 k 的数补到 k。如果 m 有剩余,…...
对原jar包解压后修改原class文件后重新打包为jar
文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…...
【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究
ReadFile 函数概述 ReadFile 是 Windows API 函数,用于从文件或设备(如串口、硬盘等)中读取数据。它是同步和异步 I/O 操作的基础函数。 函数原型 BOOL ReadFile(_In_ HANDLE hFile, // 文件或设备句柄_Out_write…...
WebGL进阶(十一)层次模型
理论基础: 效果: 源码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...
Django:从入门到精通
一、Django背景 Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发…...