我创建了一个进行序列分类的Keras LSTM模型。 我在训练集中有27个序列,在测试集中有18个序列。每个序列都有4000个时间步,我通过填充零来实现。每个序列是2499个并行序列的组合。这意味着我有2499个功能。
我正在使用将return_sequences设置为True的双向LSTM模型
我的最终目标是使用ELI5软件包的置换重要性获得特征重要性。
由于ELI5软件包不支持Keras框架,因此我想使用Scikit Learn Wrapper围绕keras进行操作,使其表现得像scikit Learn。
然后,我终于可以在模型上使用ELI5软件包来获得重要功能。
我使用了以下参数:
我将在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跟踪(最近一次通话最近) 在()中 ----> 1个模型.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章 204其他: -> 205提高ValueError('y的无效形状:'+ str(y.shape)) 206 self.n_classes_ = len(self.classes_) 207如果sample_weight不是None:
ValueError:y的形状无效:(27,4000,1)
如何正确使用KerasClassifier,以便最终能够使用ELI5软件包?
答案 0 :(得分:0)
我遇到了同样的问题,为避免重复发布,我想与您分享my answer,我已在另一个与您类似的Stackoverflow问题上发布了该问题。
TL; DR:eli5需要2d数组,而LSTM图层需要3d数组,因此您目前无法使其工作