Python 类型错误:can';t pickle_thread.RLock对象,同时在RandomizedSearchCV上运行.fit()
我正在尝试在RandomizedSearchCV上运行模型,以获得最佳的超参数Python 类型错误:can';t pickle_thread.RLock对象,同时在RandomizedSearchCV上运行.fit(),python,machine-learning,keras,neural-network,hyperparameters,Python,Machine Learning,Keras,Neural Network,Hyperparameters,我正在尝试在RandomizedSearchCV上运行模型,以获得最佳的超参数 model = keras.models.Sequential([keras.layers.Dense(300, input_dim=7500, activation="relu"), keras.layers.Dense(300, activation = "relu", name = "Interm
model = keras.models.Sequential([keras.layers.Dense(300, input_dim=7500, activation="relu"),
keras.layers.Dense(300, activation = "relu", name = "Intermediate"),
keras.layers.Dense(100, activation = "relu"),
keras.layers.Dense(4, activation="softmax")])
keras_cls = keras.wrappers.scikit_learn.KerasClassifier(model)
param_distribs = {
"n_hidden": [0, 1, 2, 3],
"n_neurons": np.arange(1, 300),
"learning_rate": 1e-3
}
rnd_search_cv = RandomizedSearchCV(keras_cls, param_distribs, n_iter=10, cv=3)
rnd_search_cv.fit(x_train, y_train, epochs=30,
validation_data=(x_test, y_test),
callbacks=[keras.callbacks.EarlyStopping(patience=10)])
在rmd\u search\u cv.fit
我得到了错误TypeError:cannotpickle\u thread.RLock对象
应该采取什么措施来纠正错误?为什么您希望参数
n_hidden
和n_neurons
可以通过CV进行调整?你的CV对象如何知道Keras模型的相应参数是什么,因为它的定义中没有这些参数?谢谢你的回答。我在KerasRegressionor中遇到了一个类似的实现,我想它是否可以用分类器来实现。我应该在代码中添加什么吗?如果你在Keras Regressionor中看到过,请发布链接。它在机器学习手册中。我找到了相关的github,它位于hyperparameter tuning部分。您可以看到,所有3个参数n_hidden
,n_Neuron
,以及learning_rate
都是模型定义函数build_fn
的一部分,这是在模型中使用sklearn包装器的推荐方法;这里的代码并非如此。那为什么不从那一点开始呢?(你会发现,你不能将架构视为超参数,但考虑到链接中的用法,你在这里所做的没有意义)。为什么你希望参数n_hidden
和n_neurons
可以通过CV进行调整?你的CV对象如何知道Keras模型的相应参数是什么,因为它的定义中没有这些参数?谢谢你的回答。我在KerasRegressionor中遇到了一个类似的实现,我想它是否可以用分类器来实现。我应该在代码中添加什么吗?如果你在Keras Regressionor中看到过,请发布链接。它在机器学习手册中。我找到了相关的github,它位于hyperparameter tuning部分。您可以看到,所有3个参数n_hidden
,n_Neuron
,以及learning_rate
都是模型定义函数build_fn
的一部分,这是在模型中使用sklearn包装器的推荐方法;这里的代码并非如此。那为什么不从那一点开始呢?(您将发现,您不能将体系结构视为超参数,但考虑到链接中的用法,您在这里所做的没有意义)。