【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 l1 层神经网络 最近 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(l1),ht1(l1),,htK(l1))
其中: 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} xtRM 表示在时刻 t t t 网络的输入, h t ∈ R D \boldsymbol{h}_t\in\mathbb{R}^D htRD 表示隐藏层状态 (即隐藏层神经元活性值),则 h t \boldsymbol{h}_t ht 不仅和当前时刻的输入 x t \boldsymbol{x}_t xt相关,也和上一个时刻的隐藏层状态 h t − 1 h_{t-1} ht1相关。

简单循环神经网络的两种表现形式(未展开 & 展开):

RNN展开

简单循环神经网络 时刻 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=Uht1+wxt+bht=f(zt)

RNN结构

3.1 BiRNN 双向循环神经网络

双向循环神经网络 (‌BiRNN):一种特殊的RNN,能够同时处理输入序列的前后文信息,从而提高模型的表达能力和准确度。

BiRNN

优点‌:

  • 捕捉前后文信息‌: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结构

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+Uiht1+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+Ufht1+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+Uoht1+bo)

4.1.1 LSTM 基本组合方式

前后串行相继关系

在PyTorch中的体现:torch.nn.LSTM()hidden_size参数。

LSTM

两层并行层叠关系

在PyTorch中的体现:torch.nn.LSTM()num_layers参数。

LSTM

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

优势

  1. 捕捉双向依赖关系‌:BiLSTM能够同时考虑到序列的前后文信息,对于需要了解全局上下文的任务 (如命名实体识别、机器翻译等) 非常有利‌。
  2. 改善性能‌:在许多自然语言处理 (NLP) 任务中,BiLSTM通常比LSTM具有更好的表现‌。

应用场景‌:

  • 情感分析‌:通过获取文本的上下文信息,判断情感倾向。
  • 机器翻译‌:在翻译过程中,考虑上下文的双向信息,提高翻译质量。
  • 语音识别‌:处理语音信号时,利用双向信息提高识别准确率‌3。

4.2 门控循环单元网络(Gated Recurrent Units, GRU)

门控循环单元(gated recurrentunit,GRU):一种循环神经网络,可解决一般的RNN存在的长期依赖问题,且相较于LSTM具有更少的计算量。

标志:简化LSTM细胞结构 + 保持其基本效能 → 减时提速

GRU相较于LSTM结构更简单 (参数较少),即在训练过程中 GRU需要的 计算资源和训练时间更少

在特定情况下,GRU可能会比LSTM更有效率,尤其是在对训练速度有较高要求的应用场景中‌。

相较于LSTM优势

  • 缓解LSTM 计算训练速度慢的问题
  • 降低过拟合风险

GRU 单元/细胞 基本结构

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+Uzht1+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+Urht1+br)

4.2.2 GRU 门控机制理解

GRU

① 更新门

更新门:帮助模型确定当前单元新信息与上个单元传递旧信息的考虑比例,取值介于0~1。

② 重置门

重置门:帮助模型确定过去信息的遗忘比例,取值介于0~1。

4.2.3 BiGRU 双向门控循环单元网络

双向门控循环单元网络 (BiGRU):一种改进GRU,专门设计用于处理序列数据。BiGRU通过结合前向和后向两个GRU网络的输出来捕捉序列中的双向依赖关系,从而能够同时考虑序列的前后文信息‌。

BiGRU

5. 其他循环神经网络

由于篇幅有限,这里对ESN和Hopfield网络仅作简单描述,后续章节可能会补齐相关内容。

5.1 回声状态网络(Echo State Network, ESN)

回声状态网络 (ESN):一种循环神经网络。ESN 训练方式与传统 RNN 不同。

ESN

矩阵谱半径 (Matrix Spectral Radius):‌矩阵绝对值最大的特征值。

设矩阵 A ∈ C n × n A \in C^{n \times n} ACn×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)=1inmaxλi

网络结构及特点

  1. 储层 (Reservoir):中文翻译有叫储备池、储层、储蓄池等等各种名称。ESN 中的储层是互连神经元的集合,其中连接及其权重是随机初始化和固定的。该储层充当动态储层,其目的是将输入数据转换到更高维的空间,它充当动态存储器,捕获输入数据中的时间依赖性。储层中的神经元可以表现出复杂的动力学,包括振荡和混沌,这可以帮助捕获输入数据中的时间模式。
  2. 输出层:经过储层后,转换后的数据仅用于训练输出层。这通常是使用线性回归方法完成的,使得训练过程相对快速和高效。
  3. 回声状态属性:为了使ESN有效工作,它必须具有“回声状态属性”。这意味着网络的内部状态应该是最近输入历史的函数,并且应该淡出或“回显”旧的输入。此属性确保网络对先前的输入有一定的记忆,但不会陷入重复它们的循环中。调整储层权重矩阵的谱半径是确保这一特性的一种方法。
  4. 储层计算: 储层计算是一个包含 Echo State Networks 的框架。在 ESN 中,储层是随机初始化的循环神经元的动态存储器,用于捕获顺序数据中的时间模式。

优点

  1. 时间序列预测: ESN 擅长预测时间序列中的未来值。在处理具有复杂模式和依赖性的数据序列时,它们特别有效。
  2. 训练高效: ESN 拥有独特的训练方法。虽然存储库是随机生成和固定的,但仅训练输出权重。与传统的循环神经网络 (RNN) 相比,训练计算效率更高,并且允许 ESN 在较小的数据集上进行训练。
  3. 非线性映射:ESN 中的储层给模型带来了非线性。这有助于捕获和建模线性模型可能难以处理的数据中的复杂关系。
  4. 对噪声的鲁棒性:ESN 对输入数据中的噪声具有鲁棒性。储层的动态特性使其能够过滤掉不相关的信息并专注于基本模式。
  5. 易于实施:与训练传统RNN相比, ESN实现更简单。固定随机库和输出权重的直接训练使 ESN 更易于实际使用。
  6. 记忆 & 学习: ESN 中的存储库充当存储器,从输入序列中捕获相关信息。这种记忆使网络能够根据学习的模式进行概括并做出准确的预测。

缺点

  1. 对储层动力学的有限控制:储层是随机初始化的,这种缺乏对其动力学的直接控制。虽然这种随机性可能是有益的,针对特定任务精确定制网络比较困难。
  2. 超参数灵敏度:ESN 通常依赖于调整超参数(储层大小、谱半径、激活函数和输入缩放)。
  3. 缺乏理论理解:与其他一些神经网络架构相比,ESN 的理论理解并不完善。对于一些情况难以解释。
  4. 表达能力有限:在某些任务下会不如更复杂的循环神经网络。难以完成需要捕获非常复杂的模式的任务。
  5. 过度拟合的可能性:根据任务的复杂性和存储库的大小,ESN 可能容易过拟合,尤其是训练数据有限的情况下。

5.2 霍普菲尔德网络(Hopfield Network)

Hopfield神经网络:一种递归神经网络,由约翰·霍普菲尔德在1982年发明。

Hopfield网络是一种结合存储系统和二元系统的神经网络。它保证了向局部极小的收敛,但收敛到错误的局部极小值(local minimum),而非全局极小(global minimum)的情况也可能发生。Hopfield网络也提供了模拟人类记忆的模型。

离散Hopfield网络:一个单层网络,有n个神经元节点,每个神经元的输出均接到其它神经元的输入。各节点没有自反馈。每个节点都可处于一种可能的状态(1 或-1),即当该神经元所受的刺激超过其阀值时,神经元就处于一种状态(比如1),否则神经元就始终处于另一状态(比如-1)。 整个网络有两种工作方式:即异步方式和同步方式。


联想记忆功能是离散Hopfield网络的一个重要应用范围。要想实现联想记忆,反馈网络必须具有两个基本条件:

  1. 网络能收敛到稳定的平衡状态,并以其作为样本的记忆信息;
  2. 具有回忆能力,能够从某一残缺的信息回忆起所属的完整的记忆信息。 离散Hopfield网络实现联想记忆的过程分为两个阶段:学习记忆阶段和联想回忆阶段。在学习记忆阶段中,设计者通过某一设计方法确定一组合适的权值,使网络记忆期望的稳定平衡点。联想回忆阶段则是网络的工作过程。

离散Hopfield网络用于联想记忆有两个突出的特点:即记忆是分布式的,而联想是动态的。

离散Hopfield网络局限性,主要表现在以下几点:

  1. 记忆容量的有限性;
  2. 伪稳定点的联想与记忆;
  3. 当记忆样本较接近时,网络不能始终回忆出正确的记忆等。另外网络的平衡稳定点并不可以任意设置的,也没有一个通用的方式来事先知道平衡稳定点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Isaac Sim】相关问题汇总

目录 一、安装点击Install时报错二、启动时报 Failed to create any GPU devices三、加载Isaac Sim自带模型或示例时报 Isaac Sim is not responding 一、安装点击Install时报错 报错: request to https://asset.launcher.omniverse.nvidia.com/… failed, reason:…

接口上传视频和oss直传视频到阿里云组件

接口视频上传 <template><div class"component-upload-video"><el-uploadclass"avatar-uploader":action"uploadImgUrl":on-progress"uploadVideoProcess":on-success"handleUploadSuccess":limit"lim…

DataWorks快速入门

DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎&#xff0c;为数据仓库、数据湖、湖仓一体等解决方案提供统一的全链路大数据开发治理平台。本文以DataWorks的部分核心功能为例&#xff0c;指导您使用DataWorks接入数据并进行业务处理、周期调度以及数据…

项目学习:仿b站的视频网站项目03-注册功能

概括 通过上一期&#xff0c;完成了项目和数据库的基础结构的搭建&#xff0c;接下来主要是完成项目的注册功能。该功能模块主要分为有两个接口&#xff0c;一个是验证码接口&#xff0c;一个是注册接口。 让我们开始吧&#xff01; 验证码接口 验证码的生成主要配合下面这…

20.100ASK_T113-PRO 开发板开机自动QT程序简单的方法一

本文详细介绍了在嵌入式系统中实现程序开机自启动的多种方法&#xff0c;包括通过修改/etc/profile、/etc/rc.local文件&#xff0c;以及在/etc/init.d目录下创建启动脚本等方式。文章还解释了不同配置文件的作用及它们之间的区别。 开机自动启动QT应用程序 用户模式下的启动 …

【Java】Linux、Mac、Windows 安装 Oracle JDK

一、Linux 环境安装JDK 1、下载 根据实际需求&#xff0c;在 Oracle 官网 上下载某版本JDK&#xff08;如 jdk-8u341-linux-x64.tar.gz&#xff09;&#xff0c;再通过文件传输工具&#xff08;如 Finalshell、FileZilla 等&#xff09;丢到服务器上。 2、安装 # 查看是否安…

Web3与智能合约:区块链技术下的数字信任体系

随着互联网的不断发展&#xff0c;Web3代表着我们迈入了一个去中心化、更加安全和智能的网络时代。作为Web3的核心组成部分&#xff0c;区块链技术为智能合约的出现和发展提供了强有力的基础。智能合约不仅仅是自动化的代码&#xff0c;它们正逐步成为重塑数字世界信任体系的关…

怎么把湖南平江1000吨黄金开采出来?开采露天金矿的实用公式与方案——露天矿山爆破设计施工方案

在露天矿山爆破设计中&#xff0c;面对多溶洞、多破碎带和多断层的复杂地质条件&#xff0c;需要制定一套科学、合理的爆破方案。以下是一份详细的爆破设计施工方案&#xff0c;包括爆破参数与计算公式&#xff1a; 一、爆破设计原则 1.安全性&#xff1a;确保爆破作业过程中的…

电子应用设计方案-20:智能电冰箱系统方案设计

智能电冰箱系统方案设计 一、系统概述 本智能电冰箱系统旨在提供更便捷、高效、智能化的食品存储和管理解决方案&#xff0c;通过集成多种传感器、智能控制技术和联网功能&#xff0c;实现对冰箱内部环境的精确监测和控制&#xff0c;以及与用户的互动和远程管理。 二、系统组成…

栈的应用,力扣394.字符串解码力扣946.验证栈序列力扣429.N叉树的层序遍历力扣103.二叉树的锯齿形层序遍历

目录 力扣394.字符串解码 力扣946.验证栈序列 力扣429.N叉树的层序遍历 力扣103.二叉树的锯齿形层序遍历 力扣394.字符串解码 看见括号&#xff0c;由内而外&#xff0c;转向用栈解决。使用两个栈处理&#xff0c;一个用String,一个用Integer 遇到数字:提取数字放入到数字栈…

pandas与open读取csv/txt文件速度比较

pandas与open读取csv/txt文件速度比较 由于在工作中经常需要读取txt或csv文件&#xff0c;使用pandas与open均可以读取并操作文件内容&#xff0c;但不知道那个速度更快一些&#xff0c;所以写了一个脚本去比较在文件大小不同的情况下读取数据的速度 测试结果: 大小pandas速度…

039_SettingsGroup_in_Matlab图形界面的设置选项

只要你知道你自己正在做什么&#xff0c;那么你怎么做都行。—— C.J. DateMatlab的界面与设置 Matlab的界面 Matlab的界面是GUI设计中非常值得讨论的一个议题。先来看&#xff0c;默认的Matlab界面。 这里的界面从上到下分为了四个部分&#xff0c;分别是&#xff1a; 工具…

Flink-Source的使用

Data Sources 是什么呢&#xff1f;就字面意思其实就可以知道&#xff1a;数据来源。 Flink 做为一款流式计算框架&#xff0c;它可用来做批处理&#xff0c;也可以用来做流处理&#xff0c;这个 Data Sources 就是数据的来源地。 flink在批/流处理中常见的source主要有两大类…

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明&#xff0c; 将Form的属性Opacity&#xff0c;由默认的100% 调整到 80%(尽量别低于50%)&#xff0c;这个数字越小越透明&#xff01; 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&#xff0c;窗体出现在屏幕…

分布式系统稳定性建设-性能优化篇

分布式系统稳定性建设-性能优化篇 系统稳定性建设是系统工程的核心内容之一。以下是一些重要的方面: 架构设计: 采用模块化、松耦合的架构设计,以提高系统的可扩展性和可维护性。合理划分系统功能模块,降低单个模块的复杂度。定义清晰的接口和数据交换标准,确保各模块之间协调…

【bug】使用transformers训练二分类任务时,训练损失异常大

使用transformers训练二分类任务时&#xff0c;训练损失异常大 问题分析 问题 training_loss异常大&#xff0c;在二分类损失中&#xff0c;收敛在1~2附近&#xff0c;而eval_loss却正常&#xff08;小于0.5&#xff09; 分析 参考&#xff1a; Bug in gradient accumulation…

电容测试流程

一、外观检测 1. 目的&#xff1a;检验电容样品外观是否与规格书一致&#xff0c;制程工艺是否良好&#xff0c;确保部品的品质。 2. 仪器&#xff1a;放大镜 3. 测试说明&#xff1a; &#xff08;1&#xff09;样品上丝印与规格书中相符&#xff0c;丝印信息&#xff08;…

C++设计模式行为模式———中介者模式

文章目录 一、引言二、中介者模式三、总结 一、引言 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 中介者模式可以减少对象之间混乱无序的依赖关系&…

一篇保姆式centos/ubuntu安装docker

前言&#xff1a; 本章节分别演示centos虚拟机&#xff0c;ubuntu虚拟机进行安装docker。 上一篇介绍&#xff1a;docker一键部署springboot项目 一&#xff1a;centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…

EasyAnimate:基于Transformer架构的高性能长视频生成方法

这里主要是对EasyAnimate的论文阅读记录&#xff0c;感兴趣的话可以参考一下&#xff0c;如果想要直接阅读原英文论文的话地址在这里&#xff0c;如下所示&#xff1a; 摘要 本文介绍了EasyAnimate&#xff0c;一种利用Transformer架构实现高性能视频生成的高级方法。我们将原…