Sie erhalten den Fehler, weil resultdefiniert 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 resultSie 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 x1wird in den ersten eingegeben, x2wird in den zweiten und x3in den dritten eingegeben.
resultundmerged(odermerged2) Ebenen im ersten Teil Ihrer Antwort miteinander verbunden?