1つのレイヤーの出力を2つの異なるレイヤーに渡してから、それらを再び結合しようとしています。ただし、このエラーによって停止され、入力がシンボリックテンソルではないことがわかります。
Received type: <class 'keras.layers.recurrent.LSTM'>. All inputs to the layers should be tensors.
しかし、私は非常に密接にドキュメントに従っていると信じています: https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models
そして、なぜこれが間違っているのか完全にはわかりませんか?
net_input = Input(shape=(maxlen, len(chars)), name='net_input')
lstm_out = LSTM(128, input_shape=(maxlen, len(chars)))
book_out = Dense(len(books), activation='softmax', name='book_output')(lstm_out)
char_out = Dense(len(chars-4), activation='softmax', name='char_output')(lstm_out)
x = keras.layers.concatenate([book_out, char_out])
net_output = Dense(len(chars)+len(books), activation='sigmoid', name='net_output')
model = Model(inputs=[net_input], outputs=[net_output])
ありがとう
LSTMレイヤーに実際に入力を与えているわけではないようです。回帰ニューロンの数と入力のshapeを指定しますが、入力は提供しません。試してください:
lstm_out = LSTM(128, input_shape=(maxlen, len(chars)))(net_input)
ドキュメントはわかりにくいかもしれませんが、Concatenateは実際にはパラメーターとして「軸」のみを必要としますが、レイヤーを渡します。レイヤーは、次のようにその結果の引数として渡す必要があります。
変更する行:
x = keras.layers.concatenate([book_out、char_out])
方法:
x = keras.layers.Concatenate()([book_out、char_out])
連結するにはaxis = 1を追加する必要があると思います。試してください:
x = keras.layers.concatenate([book_out, char_out], axis=1)