wake-up-neo.com

Die Ebene wurde mit einer Eingabe aufgerufen, die keine symbolischen Tensorkeras ist

Ich versuche, die Ausgabe einer Ebene in zwei verschiedene Ebenen zu übergeben und sie dann wieder zusammenzufügen. Ich werde jedoch durch diesen Fehler gestoppt, der besagt, dass meine Eingabe kein symbolischer Tensor ist.

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

Ich glaube jedoch, dass ich die Dokumentation sehr genau verfolge: https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models

und bin nicht ganz sicher, warum das falsch ist? 

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

Vielen Dank

11
tryingtolearn

Es sieht so aus, als würden Sie Ihrer LSTM-Ebene keine Eingaben machen. Sie geben die Anzahl der wiederkehrenden Neuronen und die shape der Eingabe an, stellen jedoch keine Eingabe bereit. Versuchen:

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

Ich weiß, Dokumentation kann verwirrend sein, aber Verketten erfordert eigentlich nur "Achse" als Parameter, während Sie die Ebenen übergeben. Die Ebenen müssen wie folgt als Argument an das Ergebnis übergeben werden:

Zu ändernde Zeile:

x = keras.layers.concatenate ([book_out, char_out])

Wie es sein sollte:

x = keras.layers.Concatenate () ([book_out, char_out])

3
Alessio Mauro

Ich denke, Sie müssen axis = 1 hinzufügen, um zu verketten. Versuchen Sie:

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