python - 无法克隆对象''
问题描述
我的模特——
#define model
model = Sequential()
model.add(Dense(128, activation='relu', input_dim=n_input_1))
model.add(Dense(64, activation='relu'))
#model.add(Dense(32, activation='relu'))
#model.add(Dense(16, activation='relu'))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse',metrics=['mse'])
现在我正在尝试通过此代码调整超参数-
from sklearn.model_selection import GridSearchCV
# fix random seed for reproducibility
seed = 7
np.random.seed(seed)
# define the grid search parameters
batch_size = [10, 20, 40, 60, 80, 100]
epochs = [10, 50, 100]
param_grid = dict(batch_size=batch_size, epochs=epochs)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1,
cv=3,scoring='neg_mean_absolute_error')
grid_result = grid.fit(scaled_train,y_train_c)
# summarize results
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
print("%f (%f) with: %r" % (mean, stdev, param))
我收到这个错误-
TypeError Traceback (most recent call last)
<ipython-input-10-c6e1e39d878e> in <module>
9 param_grid = dict(batch_size=batch_size, epochs=epochs)
10 grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3,scoring='neg_mean_absolute_error')
---> 11 grid_result = grid.fit(scaled_train,y_train_c)
12 # summarize results
13 print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params)
631 n_splits = cv.get_n_splits(X, y, groups)
632
--> 633 base_estimator = clone(self.estimator)
634
635 parallel = Parallel(n_jobs=self.n_jobs, verbose=self.verbose,
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\base.py in clone(estimator, safe)
58 "it does not seem to be a scikit-learn estimator "
59 "as it does not implement a 'get_params' methods."
---> 60 % (repr(estimator), type(estimator)))
61 klass = estimator.__class__
62 new_object_params = estimator.get_params(deep=False)
TypeError: Cannot clone object '<keras.engine.sequential.Sequential object at 0x0000023DD4D5F488>' (type <class 'keras.engine.sequential.Sequential'>): it does not seem to be a scikit-learn estimator as it does not implement a 'get_params' methods.
我不知道是什么导致了这个问题。我正在为时间序列预测实施 MLP。
解决方案
推荐阅读
- javascript - 从类转换为函数反应js
- django - Django 嵌套模型或序列化器
- java - 整数太大或长数太大
- python - 使用 tf.cond() 检查自定义层的调用方法中的条件
- java - 如何从新线程中的会话中删除属性?
- javascript - 正确的 HTML、CSS、JS、PHP 文件组织?
- xamarin.forms - PRISM for Xamarin Forms 是否支持新的基于 Shell/URI 的导航?
- javascript - 如果机器人没有找到一个角色,它会创建一个
- python - 如何将字符串列表转换为正确的句子
- printing - LibreOffice Calc 宏:打印工作表给出“没有这样的方法或属性:$(ARG1)”