不同类型的循环神经网络

输入 x和y有很多情况,输入Tx输出Ty的数量不一定相等。

大致有多对多、多对一、一对一、一对多等情况。

多对多序列:

多对一序列:

情感分类时,输入可能是一个句子,输出是1-5的数字代表不同的情感或者星星数。

一对一结构(少见小型标准网络):

一对多:(音乐生成,输入一个数字生成一段音乐)

这里每个输出y当作下一段预测的输入

多对多序列例子:机器翻译

把法语翻译成英语:多对多结构,输入输出长度不等


左边是输入部分,编码器,右边是输出部分,解码器。

不同结构RNN标准网络图形:







### 不同类型循环神经网络及其特点 #### 1. 基本循环神经网络 (Basic RNN) 基本的RNN是最简单的循环神经网络形式。这种网络可以处理序列数据,在每一个时间步接收当前时刻的数据以及来自前一时间步的状态信息,并输出相应的结果。 然而,由于梯度消失等问题的存在,普通的RNN难以有效地记住长时间间隔的信息[^3]。 ```python import tensorflow as tf from tensorflow.keras.layers import SimpleRNN model = tf.keras.Sequential([ SimpleRNN(units=64, activation='tanh', input_shape=(None, vocab_size)) ]) ``` #### 2. 长短期记忆网络 (LSTM) 为了克服标准RNN中的长期依赖问题,Hochreiter & Schmidhuber提出了长短期记忆单元(LSTM),这是一种特殊的RNN架构。LSTM引入了细胞状态的概念来保存重要信息,并利用门控机制控制信息流,从而更好地捕捉远距离的时间依赖关系[^2]。 ```python from tensorflow.keras.layers import LSTM model.add(LSTM(64, return_sequences=True)) ``` #### 3. 门控循环单元 (GRU) 门控循环单元(GRU)是由Cho等人提出的另一种改进型RNN变体。相比于LSTM,GRU简化了内部结构并减少了参数数量,同时保持了良好的性能表现。GRU将遗忘门和输入门合二为一成为更新门,并且取消了单独的记忆细胞概念。 ```python from tensorflow.keras.layers import GRU model.add(GRU(64, return_sequences=True)) ``` #### 4. 双向循环神经网络 (Bi-directional RNNs) 双向RNN允许模型不仅考虑过去的历史信息,还可以访问未来上下文。具体来说就是对于同一个时间序列,分别从前到后和从后往前训练两个独立的方向相反的标准RNN或者其变种(比如BLSTM),最后再将两者的结果组合起来得到最终预测值[^1]。 ```python from tensorflow.keras.layers import Bidirectional model.add(Bidirectional(LSTM(64))) ``` #### 5. 深度循环神经网络 (Deep RNN) 当堆叠多个层次的RNN时就构成了所谓的深度RNN。每一层都可以视为对原始输入进行了更高阶抽象表示的学习过程。这样的多层结构有助于提高表达能力,但也增加了计算复杂性和过拟合风险。 ```python for _ in range(num_layers): model.add(SimpleRNN(64, return_sequences=True)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值