LSTM(长短期记忆) Bi-LSTM(双向长短时记忆)

LSTM是RNN的变形,也就是循环神经网络的形式之一,主要解决传统RNN记忆问题,距离较远的文本信息无法得到利用、距离较近但语义上关联不大的文本信息造成了太大的干扰。(像是一个容易遗忘的老人,记不住太久远之前的信息,所以就出现了LSTM,让他只记住有用的信息)
在这里插入图片描述
传统RNN的问题分析:比如输入文本是我今天要做红烧排骨,首先要准备排骨,然后…,最后一道美味的菜就出锅了.这个时候我们要让RNN来判断我们到底做了什么菜,RNN可能给出辣子鸡这个答案,然后就反向的去推导误差,在循环神经网络中,由于模型每个时刻的状态都是由之前的状态的乘积得来的,那么根据链式法则,如果每一层神经元对上一层的输出的偏
导乘上权重结果都小于 1,则在经过足够多的传播之后,误差对输入层的梯度会趋近于 0,即梯度消失;反之,则梯度会随着反向传播层数的增加而呈指数增长,导致梯度爆炸(梯度爆炸可以用剪裁来解决)
梯度消失:
,
梯度爆炸:
在这里插入图片描述
为了解决上面出现的梯度消失的问题,就出现了LSTM(长短期记忆)

具体LSTM模型是怎么实现的呢?

相对于传统的RNN,LSTM的输入由x(t)[输入数据],a(t-1)[隐藏层信息]两个数据变成了x(t)[输入数据],a(t-1)[隐藏信息],c(t-1)[记忆单元]

  • 9
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Bi-LSTM双向长短期记忆网络)是一种循环神经网络(RNN)的变体,它在处理序列数据时能够同时考虑过去和未来的信息。与传统的单向LSTM不同,Bi-LSTM包含两个LSTM结构:一个正向LSTM和一个反向LSTM。正向LSTM按照时间顺序处理输入序列,而反向LSTM按照时间逆序处理输入序列。两个LSTM的输出被连接起来,形成Bi-LSTM的最终输出。 Bi-LSTM的网络结构如下图所示: ``` 正向LSTM ↓ 输入 → Bi-LSTM → 输出 ↓ 反向LSTM ``` Bi-LSTM的计算过程与单个LSTM类似,但它能够捕捉输入数据双向的依赖信息,从而提高了模型对输入数据的特征表达能力。在需求预测等回归问题中,Bi-LSTM可以根据过去的记录预测未来的需求。 以下是一个使用Bi-LSTM进行需求预测的示例代码: ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense, Bidirectional # 构建Bi-LSTM模型 model = Sequential() model.add(Bidirectional(LSTM(64, activation='relu'), input_shape=(timesteps, input_dim))) model.add(Dense(1)) # 编译模型 model.compile(optimizer='adam', loss='mse') # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=32) # 预测未来需求 predictions = model.predict(X_test) ``` 在上述代码中,我们使用了TensorFlow和Keras库来构建Bi-LSTM模型。首先,我们定义了一个Sequential模型,并添加了一个Bidirectional层,其中包含一个LSTM层。输入数据的形状为(timesteps, input_dim),其中timesteps表示过去记录的数量,input_dim表示每个记录的特征数量。然后,我们添加了一个Dense层作为输出层。模型使用均方误差(MSE)作为损失函数,并使用Adam优化器进行训练。最后,我们使用训练好的模型对未来的需求进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值