类型错误:无法腌制 _thread.RLock 对象 KerasClassifier

时间:2021-02-19 17:21:55

标签: python tensorflow keras scikit-learn

我正在尝试制作 2 个 Tensorflow Keras 模型的集合。

模型 1:

model = Sequential(
    [
        Input(shape=(28,28,1)),
        Conv2D(32, kernel_size=(3, 3), activation="relu"),
        MaxPooling2D(pool_size=(2, 2)),
        Conv2D(64, kernel_size=(3, 3), activation="relu"),
        MaxPooling2D(pool_size=(2, 2)),
        Flatten(),
        Dropout(0.5),
        Dense(10, activation="softmax"),
    ]
)

#model.summary()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc', 'mse'])
history = model.fit(X_train_norm, y_train_ohe, batch_size=256, epochs=20, verbose=2, validation_data=(X_test_norm,y_test_ohe))

模型 2:

model2 = Sequential(
    [
        Input(shape=(28,28,1)),
        Conv2D(32, kernel_size=(3, 3), activation="relu"),
        MaxPooling2D(pool_size=(2, 2)),
        Conv2D(64, kernel_size=(3, 3), activation="relu"),
        MaxPooling2D(pool_size=(2, 2)),
        Conv2D(32, kernel_size=(3, 3), activation="relu"),
        MaxPooling2D(pool_size=(2, 2)),
        Flatten(),
        Dropout(0.5),
        Dense(10, activation="softmax"),
    ]
)
model2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
hist = model2.fit(X_train_norm, y_train_ohe, batch_size=512, epochs=10, verbose=2, validation_data=(X_test_norm, y_test_ohe))

现在为了集成这两个模型,我想通过包装器将它们创建为 sklearn 模型,并将它们用于 this 等投票分类器。

我的代码:


from sklearn.ensemble import VotingClassifier
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
myModel = KerasClassifier(build_fn=model)
myModel2 = KerasClassifier(build_fn=model2)
from sklearn.multiclass import OneVsRestClassifier

ensemModel = OneVsRestClassifier(VotingClassifier(estimators=[('cnn', model), ('lstm',model2)]))


ensemModel.fit(X_train_norm, y_train_ohe)

但我收到此错误:

TypeError: can't pickle _thread.RLock objects

0 个答案:

没有答案
相关问题