我创建了一个Keras LSTM模型来进行序列分类 . 我在训练集中有27个序列,在测试集中有18个序列 . 每个序列都有4000个时间步长,我通过用零填充来实现 . 每个序列是2499个并行系列的组合 . 这意味着我有2499个功能 .

  • X_Train的尺寸为(27 x 4000 x 2499):27序列,每个序列4000个时间步和2499个特征 .

  • Y_Train的尺寸为(27 x 4000 x 1)

  • X_Test的尺寸为(18 x 4000 x 2499)

  • Y_Test的尺寸为(18 x 4000 x 1)

我正在使用双向LSTM模型,其return_sequences设置为True

我的最终目标是使用ELI5 Package的排列重要性来获取功能重要性 .

由于ELI5包不支持Keras框架,我想在keras周围使用Scikit学习包装器来使其表现得像scikit learn .

然后我终于可以在我的模型上使用ELI5包来获得重要功能 .

我用过这些参数:

  • layer1_units = 40

  • layer1_act = 'tanh'

  • go_backwards = False

  • return_sequences = True

  • merge_mode = 'concat'

  • lr = 0.01

  • epochs = 2

  • batch_size = 200

我将在KerasClassifier()的build_fn属性中使用此lstm模型 .

model = KerasClassifier(build_fn= lstm_Trial.model(),  epochs=3, batch_size=40, verbose=1)

然后我尝试使用.fit()方法 .

model.fit(x = X_Train, y = Y_Train_Ori)

这会引发错误 .


ValueError Traceback(最近一次调用last)in()----> 1 model.fit(x = X_Train,y = Y_Train_Ori)〜/ anaconda3 / lib / python3.6 / site-packages / keras / wrappers / scikit_learn . py in fit(self,x,y,sample_weight,** kwargs)203 y = np.searchsorted(self.classes_,y)204 else: - > 205 raise ValueError('y的形状无效:'str(y . shape))206 self.n_classes_ = len(self.classes_)207如果sample_weight不是None:ValueError:y的形状无效:(27,4000,1)

如何正确使用KerasClassifier以便最终我能够使用ELI5包?