Keras lstm多输出模型预测两个功能(时间序列)

时间:2018-05-25 13:14:31

标签: python tensorflow keras lstm

我需要问一下keras功能api如何使用keras预测。 我需要编写具有多输出的多变量LSTM模型。 我写过这样的模型:

class CurrencyInputFormatter extends TextInputFormatter {

  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {

if(newValue.selection.baseOffset == 0){
  print(true);
  return newValue;
}

double value = double.parse(newValue.text);

final formatter = new NumberFormat("###,###.###", "pt-br");

String newText = formatter.format(value/100);

return newValue.copyWith(
    text: newText,
    selection: new TextSelection.collapsed(offset: newText.length));
  }
}

我想要的(期待)是ypred返回两个时间序列,但它给了我错误:

inp = Input((train_X.shape[1],train_X.shape[2]))
x = LSTM(192,return_sequences=True)(inp)
x = Dropout(0.5)(x)
x = Flatten()(x)
out1 = Dense(1,activation='softsign')(x)
out2 = Dense(1,activation='softsign')(x)
model = Model(inputs =inp,outputs= (out1,out2))
model.compile(optimizer='rmsprop',
          loss='binary_crossentropy',
          metrics=['accuracy'])

history = model.fit(train_X,[y1,y2])
ypred = model.predict([pred_X,pred_Y])

期望一个数组作为预测参数,但只有一个数组,它将返回一个预测的时间序列。

我需要纠正什么来预测两个特征?

我的数据有6列,前两个我试图预测,其他是功能。我的数据的维度是:

ValueError: Error when checking model : the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 2 arrays: 

1 个答案:

答案 0 :(得分:1)

您输入的数量令人困惑。让我们来看看这一行:

ypred = model.predict(pred_X)
# equally
out1, out2 = model.predict(pred_X)

现在ypred将是一个输出列表,即2.因此,预测将返回同一输入的两个输出,因为这正是您定义模型的方式,1输入 - > 2输出。这就是错误警告的内容。要修复,您需要提供预测1输入并获得输出列表。