keras 报错:“Sequential” object has no attribute “_in_multi_worker_mode”


在使用keras的回调函数时报错

AttributeError: 'Sequential' object has no attribute '_in_multi_worker_mode'

代码如下

# 3.参数搜索 RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV
# RandomizedSearchCV参数说明,
# clf1设置训练的学习器
# param_dist字典类型,放入参数搜索范围
# scoring = 'neg_log_loss',精度评价方式设定为"neg_log_loss"
# n_iter=300,训练300次,数值越大,获得的参数精度越大,但是搜索时间越长
# n_jobs = -1,使用所有的CPU进行训练,默认为1,使用1个CPU
# RandomizedSearchCV采用了cross-validation: 将训练集分成n分,n-1训练,最后一份验证。默认cv=3
random_search_cv = RandomizedSearchCV(sklearn_model,
                                      param_distribution,
                                      cv = 3,
                                      n_iter = 10,
                                      n_jobs = -1)
# use call back function
callbacks = [
    # 目标指标不再有改善了,就可以提前终止
    # 
    keras.callbacks.EarlyStopping(monitor='acc', # 被检测的模型的指标
                                  patience=2, # 没有进步的训练轮次为2,在这之后训练就会被停止
                                  # min_delta=1e-3
                                  ),
    # 保存模型
    keras.callbacks.ModelCheckpoint(filepath="model_{epoch:03d}-{val_acc:.4f}.h5",# 路径
                                    monitor='val_acc',# 如果val_loss没有改善就不覆盖
                                    save_best_only=True)# 保持最佳模型

]

解决方法

keras.callbacks.EarlyStoppingkeras.callbacks.ModelCheckpoint
改为

from keras.callbacks import ModelCheckpoint
from keras.callbacks import EarlyStopping

# 3.参数搜索 RandomizedSearchCV

from sklearn.model_selection import RandomizedSearchCV
from keras.callbacks import ModelCheckpoint
from keras.callbacks import EarlyStopping
# RandomizedSearchCV参数说明,
# clf1设置训练的学习器
# param_dist字典类型,放入参数搜索范围
# scoring = 'neg_log_loss',精度评价方式设定为"neg_log_loss"
# n_iter=300,训练300次,数值越大,获得的参数精度越大,但是搜索时间越长
# n_jobs = -1,使用所有的CPU进行训练,默认为1,使用1个CPU
# RandomizedSearchCV采用了cross-validation: 将训练集分成n分,n-1训练,最后一份验证。默认cv=3
random_search_cv = RandomizedSearchCV(sklearn_model,
                                      param_distribution,
                                      cv = 3,
                                      n_iter = 10,
                                      n_jobs = -1)
# use call back function
callbacks = [
    # 目标指标不再有改善了,就可以提前终止
    # 
    EarlyStopping(monitor='acc', # 被检测的模型的指标
                                  patience=2, # 没有进步的训练轮次为2,在这之后训练就会被停止
                                  # min_delta=1e-3
                                  ),
    # 保存模型
    ModelCheckpoint(filepath="model_{epoch:03d}-{val_acc:.4f}.h5",# 路径
                                    monitor='val_acc',# 如果val_loss没有改善就不覆盖
                                    save_best_only=True)# 保持最佳模型

]

猜你喜欢

转载自blog.csdn.net/weixin_44984664/article/details/106227327