Hatayı alıyorsunuz çünkü result
tanımlandığı Sequential()
için model için sadece bir kaptır ve onun için bir girdi tanımlamadınız.
result
Üçüncü girişi almak için küme oluşturmaya çalıştığınız şey göz önüne alındığında 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()
third.add(Dense(1, input_shape=(1,), activation='sigmoid'))
merged = Concatenate([first, second])
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'])
Ancak, bu tür bir girdi yapısına sahip bir model oluşturmanın tercih ettiğim yolu, işlevsel api'yi kullanmak olacaktır .
Başlamanız için gereksinimlerinizin bir uygulaması:
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'])
Yorumlardaki soruyu cevaplamak için:
- Sonuç ve birleştirme nasıl bağlanır? Nasıl bir araya getirildiklerini kastettiğinizi varsayarsak.
Birleştirme şu şekilde çalışır:
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
yani satırlar yeni birleştirilir.
- Şimdi,
x1
birinciye x2
girdi, ikinciye x3
girdi ve üçüncüye girdi.
result
vemerged
(veyamerged2
) katmanlar birbirleriyle nasıl bağlantılı?