【问题标题】:Build LSTM model for one inupt and two outputs为一个输入和两个输出构建 LSTM 模型
【发布时间】:2020-10-09 01:55:05
【问题描述】:

我想构建一个具有一个输入和两个输出的 LSTM 模型。 我的数据和图一样。 我的模型如下。 但它只预测一个输出。

你能帮我设计两个输出的模型吗?谢谢

s1 = MinMaxScaler(feature_range=(-1,1))
Xs = s1.fit_transform(train[['y1','y2','x']])

s2 = MinMaxScaler(feature_range=(-1,1))
Ys = s2.fit_transform(train[['y1', 'y2']])

window = 70
X = []
Y = []
for i in range(window,len(Xs)):
    X.append(Xs[i-window:i,:])
    Y.append(Ys[i])

X, Y = np.array(X), np.array(Y)


model = Sequential()
model.add(LSTM(units=50, return_sequences=True,input_shape=(X.shape[1],X.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(units=50, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=50))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.compile(optimizer = 'adam', loss = 'mean_squared_error',metrics = ['MAE'])

es = EarlyStopping(monitor='loss',mode='min',verbose=1,patience=10)
history = model.fit(X, Y, epochs = 10, batch_size = 250, callbacks=[es], verbose=1)

【问题讨论】:

    标签: python python-3.x tensorflow lstm lstm-stateful


    【解决方案1】:

    模型最后一层的output_shape 应该与 Y 数据的形状相匹配。

    由于您有 2 个 Y 数据,您可以将最后一个 Dense 层更改为具有 2 个单位:

    model.add(密集(units=1))

    model.add(Dense(units=2))
    

    【讨论】:

      【解决方案2】:

      您应该使用函数式 API

      例如:

      input = Input(shape=(shape, ))
      
      out1 = Dense(1,  activation='linear')(input)
      out2 = Dense(1,  activation='linear')(input)
      out3 = Dense(1,  activation='linear')(input)
      
      model = Model(inputs=input, outputs=[out1,out2,out3])
      

      【讨论】:

      • 谢谢莫特萨。你知道如何设计并行 LSTM 吗?
      猜你喜欢
      • 2019-04-19
      • 1970-01-01
      • 2017-03-03
      • 2020-04-14
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多