Sie erhalten den Fehler, weil result
definiert als Sequential()
nur ein Container für das Modell definiert ist und Sie keine Eingabe dafür definiert haben.
Angesichts dessen, was Sie erstellen möchten, setzen result
Sie die dritte Eingabe x3
.
first = Sequential()
first.add(Dense(1, input_shape=(2,), activation='sigmoid'))
second = Sequential()
second.add(Dense(1, input_shape=(1,), activation='sigmoid'))
third = Sequential()
# of course you must provide the input to result with will be your x3
third.add(Dense(1, input_shape=(1,), activation='sigmoid'))
# lets say you add a few more layers to first and second.
# concatenate them
merged = Concatenate([first, second])
# then concatenate the two outputs
result = Concatenate([merged, third])
ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
result.compile(optimizer=ada_grad, loss='binary_crossentropy',
metrics=['accuracy'])
Meine bevorzugte Methode zum Erstellen eines Modells mit dieser Art von Eingabestruktur wäre jedoch die Verwendung der funktionalen API .
Hier ist eine Implementierung Ihrer Anforderungen, um Ihnen den Einstieg zu erleichtern:
from keras.models import Model
from keras.layers import Concatenate, Dense, LSTM, Input, concatenate
from keras.optimizers import Adagrad
first_input = Input(shape=(2, ))
first_dense = Dense(1, )(first_input)
second_input = Input(shape=(2, ))
second_dense = Dense(1, )(second_input)
merge_one = concatenate([first_dense, second_dense])
third_input = Input(shape=(1, ))
merge_two = concatenate([merge_one, third_input])
model = Model(inputs=[first_input, second_input, third_input], outputs=merge_two)
ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
model.compile(optimizer=ada_grad, loss='binary_crossentropy',
metrics=['accuracy'])
Um die Frage in den Kommentaren zu beantworten:
1) Wie sind Ergebnis und Zusammenführung verbunden? Angenommen, Sie meinen, wie werden sie verkettet?
Die Verkettung funktioniert folgendermaßen:
a b c
a b c g h i a b c g h i
d e f j k l d e f j k l
dh Zeilen werden gerade verbunden.
2) Jetzt x1
wird in den ersten eingegeben, x2
wird in den zweiten und x3
in den dritten eingegeben.
result
undmerged
(odermerged2
) Ebenen im ersten Teil Ihrer Antwort miteinander verbunden?