首页 > 解决方案 > KerasClassifier TypeError: __call__() 在 cross_val_score 上正好有 2 个参数(1 个给定)

问题描述

我尝试在我的模型上进行 cross_val_score,但出现以下错误:

Traceback (most recent call last): File "/home/dinhnha1402/.local/lib/python2.7/site-packages/keras/wrappers/scikit_learn.py", line 210, in fit return super(KerasClassifier, self).fit(x, y, **kwargs) File "/home/dinhnha1402/.local/lib/python2.7/site-packages/keras/wrappers/scikit_learn.py", line 139, in fit **self.filter_sk_params(self.build_fn.__call__)) TypeError: __call__() takes exactly 2 arguments (1 given)

这是我的模型:

model = Sequential()
model.add(LSTM(int(128), input_shape=(timesteps, int(128)),return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(20, activation='relu', input_shape=(128,),kernel_initializer=initializers.glorot_uniform(seed=0)))
model.add(Dropout(0.2))
model.add(Dense(20, activation='softmax'))

model.add(Dense(2, activation='softmax')) 

model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'])

### fit model

model.fit(X_train, Y_train, batch_size=batch_size, epochs= epochs, verbose=1, validation_data=(X_test, Y_test))

####Applying K-fold cross validation
classifier = KerasClassifier(build_fn=binary_classify_lstm_fc_model(), batch_size=10, epochs=100, verbose=0)
accuracies = cross_val_score(estimator= classifier, X = X_train, y = Y_train, cv=10, scoring="accuracy")#n_jobs= -1
print(accuracies)

我在任何地方都找不到这个错误(在谷歌上)。有没有人对如何解决这个问题有任何想法?

标签: pythontensorflowscikit-learn

解决方案


只需将损失从 categorical_crossentropy 更改为 mean_squared_error。


推荐阅读