我需要问一下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:
答案 0 :(得分:1)
您输入的数量令人困惑。让我们来看看这一行:
ypred = model.predict(pred_X)
# equally
out1, out2 = model.predict(pred_X)
现在ypred将是一个输出列表,即2.因此,预测将返回同一输入的两个输出,因为这正是您定义模型的方式,1输入 - > 2输出。这就是错误警告的内容。要修复,您需要提供预测1输入并获得输出列表。