LSTM简介
长短期记忆人工神经网络(Long-Short Term Memory, LSTM)是一种时间递归神经网络(RNN),论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。
LSTM(Long short-term memory)是一种RNN模型是对simple rnn的一种改进,可以避免梯度消失的问题,可以有更长的记忆。LSTM是一种循环神经网络!
每当读取一个新的输入x,就会更新状态h。
LSTM的核心思想
理解LSTM的关键就是下面的矩形方框,被称为memory block(记忆块),主要包含了三个门(forget gate、input gate、output gate)与一个记忆单元(cell)。方框内上方的那条水平线,被称为cell state(单元状态),它就像一个传送带,可以控制信息传递给下一时刻。
LSTM就是通过传输带来防止梯度消失。
遗忘门(forget gate)
遗忘门由Sigmoid函数和Elementwise multiplication两个部分组成,输入sigmoid是一个向量a,Sigmoid作用在向量a的每一个元素上,把每个元素都加到0~1之间。
例如:向量a :[1,3,0,-2] 通过Sigmoid函数—>输出同维向量
f:[0.73,0.95,0.5,0.12],然后通过c。(multiplication)f算出输出 output,遗忘门有选择让传送带c通过。
输入门(input gate)
输入门(input gate)通过sigmoid来决定哪些值用来更新,tanh层用来生成新的候选值相加,得到了候选值。
输出门(output gate)
首先是通过sigmoid层来得到一个初始输出,然后使用tanh将
值缩放到-1到1间,再与sigmoid得到的输出逐对相乘,从而得到模型的输出。
通过tensorflow跑一段文字预测
import numpy
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM
from keras.callbacks import ModelCheckpoint
from keras.utils import np_utils
# 读取txt文件
filename = 'comments.txt'
with open