bugfix> python > 投稿

kerasの機能的なAPIからの予測を使用する方法を尋ねる必要があります。 多出力の多変量LSTMモデルを作成する必要があります。 私はそのようなモデルを書きました:

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])

私が望む(期待する)のは、2つの時系列を返すypredですが、エラーが発生します:

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つの配列が必要ですが、配列が1つだけの場合、1つの予測時系列が返されます。

2つの機能の予測を得るために修正する必要があるものは何ですか?

私のデータには6つの列があり、最初の2つは予測しようとしていますが、その他は機能です。私のデータの次元は次のとおりです。

train_X.shape= (24576, 192, 6)
pred_X.shape= (672, 192, 6)
pred_Y.shape= (672, 192, 6)
y1.shape = (24576,1)
y2.shape = (24576,1)

回答 1 件
  • 入力数と出力数を混同しています。この行を見てみましょう:

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

    これで、ypredは出力のリスト、つまり2になります。したがって、predictは同じ入力に対して両方の出力を返します。これは、モデル、1入力-> 2つの出力。それがエラーの警告です。修正するには、予測1入力を指定し、出力のリストを取得する必要があります。

あなたの答え