В python я пытаюсь построить модель нейронной сети, используя Sequential в keras для выполнения двоичной классификации. Обратите внимание, что X - это пустой массив временных рядов данных 59x1000x3 (выборки x временных шагов x функций), а D - простой массив 59x100 (выборок x вспомогательных элементов). Я хочу пропустить временные ряды через слой lstm, а затем увеличить на более позднем слое сопутствующие функции (т.е. объединить два слоя).
Мой код для модели ниже:
def fit_model(X, y, D, neurons, batch_size, nb_epoch):
model = Sequential()
model.add(LSTM(units = neurons, input_shape = (X.shape[1], X.shape[2]))
model.add(Dropout(0.1))
model.add(Dense(10))
input1 = Sequential()
d = K.variable(D)
d_input = Input(tensor=d)
input1.add(InputLayer(input_tensor=d_input))
input1.add(Dropout(0.1))
input1.add(Dense(10))
final_model = Sequential()
merged = Concatenate([model, input1])
final_model.add(merged)
final_model.add(Dense(1, activation='sigmoid'))
final_model.compile(loss = 'binary_crossentropy', optimizer = 'adam')
final_model.fit(X, y, batch_size = batch_size, epochs = nb_epoch)
return final_model
Я получаю следующую ошибку:
ValueError: слой Concatenate
должен вызываться в списке как минимум из 2 входов
Я пытался использовать различные варианты слияния / объединения / функционального API / не функционального API, но я продолжаю приземляться с некоторой ошибкой. Я видел ответы, используя Merge из keras.engine.topology. Тем не менее, сейчас это кажется устаревшим. Будем благодарны за любые предложения по исправлению ошибки при использовании Sequential или по преобразованию кода в функциональный API. Спасибо.