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中的监督学习问题

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

     

  • 相关阅读:
    filter 在CSS用的效果
    Safari的CSS HACK方法
    HTML5网页如何让所有的浏览器都能识别语义元素标签样式
    Android/IOS APP界面设计之尺寸规范
    四、添加路由的两种方式
    三、配置
    二、注册登录状态维持(template和session)
    一、最小的Flask应用
    django之图形验证码生成
    django之环境配置
  • 原文地址:https://www.cnblogs.com/ylHe/p/10655793.html
Copyright © 2011-2022 走看看