zoukankan      html  css  js  c++  java
  • LSTM(Long Short Term Memory)

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

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

     

  • 相关阅读:
    浅谈Semaphore类
    Python浅谈requests三方库
    191104
    191103
    191102
    191101
    191031
    191030
    191029
    191028
  • 原文地址:https://www.cnblogs.com/ylHe/p/10655793.html
Copyright © 2011-2022 走看看