Bạn đang gặp lỗi vì result
được định nghĩa làSequential()
là chỉ một vùng chứa cho mô hình và bạn chưa xác định đầu vào cho nó.
Đưa ra những gì bạn đang cố gắng xây dựng result
để lấy đầu vào thứ ba 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'])
Tuy nhiên, cách ưa thích của tôi để xây dựng một mô hình có kiểu cấu trúc đầu vào này là sử dụng api chức năng .
Dưới đây là cách triển khai các yêu cầu của bạn để giúp bạn bắt đầu:
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'])
Để trả lời câu hỏi trong phần bình luận:
1) Kết quả và kết hợp được kết nối như thế nào? Giả sử ý bạn là chúng được nối với nhau như thế nào.
Kết nối hoạt động như thế này:
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
tức là các hàng vừa được nối.
2) Bây giờ, x1
được nhập vào đầu tiên, x2
được nhập vào thứ hai và x3
nhập vào thứ ba.
result
vàmerged
(hoặcmerged2
) được kết nối với nhau như thế nào trong phần đầu tiên của câu trả lời của bạn?