web-dev-qa-db-fra.com

Couche appelée avec une entrée qui n'est pas un tenseur symbolique keras

J'essaie de passer la sortie d'un calque en deux calques différents, puis de les réunir. Cependant, cette erreur me stoppe et me dit que mon entrée n'est pas un tenseur symbolique.

Received type: <class 'keras.layers.recurrent.LSTM'>. All inputs to the layers should be tensors.

Cependant, je crois que je suis la documentation de près: https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models

et je ne suis pas tout à fait sûr pourquoi cela est faux? 

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

Merci

11
tryingtolearn

Il semble que vous ne donniez pas d'entrée à votre couche LSTM. Vous spécifiez le nombre de neurones récurrents et la forme de l'entrée, mais vous ne fournissez pas d'entrée. Essayer:

lstm_out = LSTM(128, input_shape=(maxlen, len(chars)))(net_input)
16
Aditya Gune

Je pense que vous devez ajouter axis = 1 pour concaténer, essayez:

x = keras.layers.concatenate([book_out, char_out], axis=1)
0
Tina