我创建了一个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包?