Во-первых, я бы предложил использовать Keras Functional API .Это имеет тенденцию упрощать определения модели.
Если вы хотите определить два входа для модели, вы можете определить свою модель следующим образом:
from keras.layers import Input, LSTM, concatenate, Dense
from keras.models import Model
input_1 = Input(shape=(15, 6), name='input_1')
input_2 = Input(shape=(15, 6), name='input_2')
lstm1 = LSTM(256, name='lstm1')(input_1)
lstm2 = LSTM(256, name='lstm2')(input_2)
concat = concatenate([lstm1, lstm2])
output = Dense(6, activation='tanh', name='dense')(concat)
model = Model(inputs=[input_1, input_2], outputs=output)
Если вы не хотите указывать нескольковходы, вы можете просто использовать слой Lambda
для разделения входов:
from keras.layers import Input, LSTM, concatenate, Dense, Lambda
from keras.models import Model
input_ = Input(shape=(30, 6), name='input')
input_1 = Lambda(lambda x: x[:, :15, :])(input)
input_2 = Lambda(lambda x: x[:, 15:, :])(input)
lstm1 = LSTM(256, name='lstm1')(input_1)
lstm2 = LSTM(256, name='lstm2')(input_2)
concat = concatenate([lstm1, lstm2])
output = Dense(6, activation='tanh', name='dense')(concat)
model = Model(inputs=input_, outputs=output)
Для каждого примера вы должны вызывать функцию fit
, соответственно:
Несколько входов:
model.fit(x=[input_1, input_2], y=y)
ИЛИ
model.fit(x={'input_1': input_1, 'input_2': input_2}, y=y)
Один вход:
model.fit(x=input_, y=y)