我正在进行回归预测,其中有一些复杂的3D序列和一些解释序列关键特征的功能。它们被固定在两个这样的形状的矩阵上:

X1.shape, X2.shape
((9000, 300, 3), (9000, 106))


我想将它们提供给Model实例,其中X1矩阵由LSTM处理,X2矩阵由几个密集层处理。我的计划是在输出层之前合并它们。

我打算通过以下方式进行培训:

model.fit(zip(X1, X2), y, batch_size=BATCH, epochs=EPOCHS, validation_split=0.2)


如何建立模型以接收两个矩阵并分别处理?

目前,我只有LSTM的标准模型:

def model(sample_size=300, axis=3):
    inp=Input(shape=(sample_size, axis))
    x=LSTM(50, return_sequences=True)(inp)
    x=GlobalMaxPool1D(x)
    x=Dense(1)(x)
    model=Model(inputs=inp, ouputs=x)
    model.compile(loss='mean_squared_error', optimizer='adam',
                  metrics= ['mae'])
   return model

最佳答案

我认为这应该工作

# First input
input1=Input(shape=(300,3))
x=LSTM(50, return_sequences=True)(input1)
x=GlobalMaxPool1D(x)
x=Dense(n)(x)

# Second Input
input2=Input(shape=(106))
y=Dense(n)(input2)

# Merge
merged=Concatenate([x,y])
merged=Dense(1)(merged)

# Define model with two inputs
model=Model(inputs=[input1,input2],outputs=merged)


合并之前,两个模型应具有相同的输出空间。然后,您可以传递输入列表,Keras会将其传递到适当的位置

model.fit([X1,X2],....)

关于python - 在具有Tensorflow后端的Keras上,在不同的输入部分上并行拟合LSTM和一些密集层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50075175/

10-13 02:50