如何制作不同形状的 lstm 集成

问题描述

这是我迄今为止制作的 lstm 集成,其中每个 lstm 模型和集成模型都有一个模型输入,并且它工作得很好。

model_input = Input(shape=(50,2))
def firstmodel(model_input):
      hiddenA1 = LSTM(6,return_sequences=True)(model_input)
      hiddenA2 = LSTM(4,activation='relu')(hiddenA1)
      outputA = Dense(24)(hiddenA2)
      model = Model(inputs= model_input,outputs= outputA,name="firstmodel")
      return model

def secondmodel(model_input):
      hiddenB1 = LSTM(30,return_sequences=True)(model_input)
      hiddenB2 = LSTM(20,activation='relu')(hiddenB1)
      outputB = Dense(24)(hiddenB2)
      model = Model(inputs= model_input,outputs= outputB,name="secondmodel")
      return model
firstmodel = firstmodel(model_input)
secondmodel = secondmodel(model_input)
models = [firstmodel,secondmodel]
def ensemble(models,model_input):
      outputs = [model.outputs[0] for model in models]
      y = Average()(outputs)
      model = Model(inputs = model_input,outputs = y,name="ensemble")
      return model
ensemblemodel = (models,model_input)
def evaluate_rmse(model):
      pred = model.predict(X_test)
      rmse = np.sqrt(mean_squared_error(y_test,pred))  
      return rmse

ensemble_rmse = evaluate_rmse(ensemblemodel)

但是当第一个和第二个模型有两个不同的模型输入时会发生什么:

first_model_input = Input(shape=(50,2))
second_model_input = Input(shape=(60,2))

那么集成模型的 model_input 是什么? 此外,对于集成模型,X_test 的形状是什么? 因为当只有一个输入时,比如 first_model_input = Input(shape=(50,2)) 那么 X_test.shape 是 (2554,50,2).

但是现在有两个输入,所以有两个 X_test 形状,一个用于第一个模型输入,即 (2554,2) 一个用于第二个模型输入,即 (2544,60,2)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...