首页 > 技术文章 > LSTM(Long Short Term Memory)

ylHe 2019-04-04 16:53 原文

长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息。例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“。理论上,递归神经网络是可以处理这样的问题的,但是实际上,常规的递归神经网络并不能很好地解决长时依赖,好的是LSTMs可以很好地解决这个问题。

 

原理不再介绍。

 

keras.layers.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0, implementation=1, return_sequences=False, return_state=False, go_backwards=False, stateful=False, unroll=False)

units:表示输出的维度

 

LSTM输入层:

LSTM输入层是由神经网络第一个隐藏层上的“ input_shape ”参数指定的。

每个LSTM层的输入必须是三维的。这输入的三个维度是:

样品。一个序列是一个样本。批次由一个或多个样本组成。

时间步。一个时间步代表样本中的一个观察点。

特征。一个特征是在一个时间步长的观察得到的。

这意味着输入层在拟合模型时以及在做出预测时,对数据的要求必须是3D数组,即使数组的特定维度仅包含单个值。

下面的模型定义了包含一个或多个样本,50个时间步长和2个特征的输入层。

model = Sequential()
model.add(LSTM(32, input_shape=(50, 2)))
model.add(Dense(1))

 

LSTM输入提示

接下来我列出了在为LSTM准备输入数据时可以帮助你的一些提示。

1.LSTM输入层必须是3D。

2.3个输入尺寸的含义是:样本,时间步长和特征。

3.LSTM输入层由第一个隐藏层上的input_shape参数定义。

4.所述input_shape参数是限定的时间的步骤和特征数量的两个值的元组。

5.样本数默认假定为大于1。

6.NumPy数组中的reshape()函数可用于将你的1D或2D数据重塑为3D。

7.reshape()函数会将一个元组作为新定义的形状的参数。

 

进一步阅读

如果你进一步了解,本部分将提供有关该主题的更多资源。

Recurrent Layers Keras API

Numpy reshape()函数API

如何将时间序列转换为Python中的监督学习问题

 

时间序列预测作为监督学习

 

推荐阅读