Anda mendapatkan kesalahan karena result
didefinisikan sebagai Sequential()
hanya wadah untuk model dan Anda belum menentukan masukan untuk itu.
Mengingat apa yang Anda coba buat, set result
untuk mengambil input ketiga 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'])
Namun, cara yang saya sukai untuk membangun model yang memiliki jenis struktur input ini adalah dengan menggunakan api fungsional .
Berikut adalah implementasi dari persyaratan Anda untuk Anda mulai:
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'])
Untuk menjawab pertanyaan di komentar:
- Bagaimana hasil dan penggabungan terhubung? Dengan asumsi yang Anda maksud bagaimana mereka digabungkan.
Penggabungan berfungsi seperti ini:
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
yaitu baris baru saja bergabung.
- Sekarang,
x1
masukan ke pertama, x2
masukan ke kedua dan x3
masukan ke ketiga.
result
danmerged
(ataumerged2
) terhubung satu sama lain di bagian pertama jawaban Anda?