代码之家  ›  专栏  ›  技术社区  ›  E.G. Cortes

LSTM模型考虑的数据序列是什么维度?

  •  2
  • E.G. Cortes  · 技术社区  · 8 年前

    阅读一些网站,我知道这是时间步骤,所以我试图创建一个简单的问题来测试。 在这个问题中,LSTM模型需要对timesteps维度中的值求和。然后,假设模型将考虑timestep的前一个值,那么它应该将这些值的和作为输出返回。

    import numpy as np
    from keras.models import Sequential
    from keras.layers import Dense, LSTM
    
    X = np.array([
            [5.,0.,-4.,3.,2.],
            [2.,-12.,1.,0.,0.],
            [0.,0.,13.,0.,-13.],
            [87.,-40.,2.,1.,0.]
        ])
    X = X.reshape(4, 5, 1)
    y = np.array([[6.],[-9.],[0.],[50.]])
    
    model = Sequential()
    model.add(LSTM(5, input_shape=(5, 1)))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    model.fit(X, y, epochs=1000, batch_size=4, verbose=0)
    
    print(model.predict(np.array([[[0.],[0.],[0.],[0.],[0.]]])))
    print(model.predict(np.array([[[10.],[-10.],[10.],[-10.],[0.]]])))
    print(model.predict(np.array([[[10.],[20.],[30.],[40.],[50.]]])))
    

    输出:

    [[-2.2417212]]
    [[7.384143]]
    [[0.17088854]]
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   betelgeuse    8 年前

    首先,是的,你说得对 timestep 是作为数据序列的维度。

    下一步,我想你对这句话的意思有些困惑

    “假设模型将考虑

    在任何情况下,LSTM都不取时间步的前一个值,而是取最后一个时间步的输出激活函数。

    enter image description here

    here .