python - 使用 python mutliprocessing 进行并行 Keras 模型训练
问题描述
我正在一个 64 核 CPU 工作站上同时训练多个 Keras MLP 模型。因此,我使用 Python 多处理池为每个 CPU 分配一个正在训练的模型。对于正在训练的模型,我正在使用以这种方式定义的 Early Stopping 和模型检查点回调:
es = EarlyStopping(monitor='val_mse', mode='min', verbose=VERBOSE_ALL, patience=10)
mc = ModelCheckpoint('best_model.h5', monitor='val_mse', mode='min', verbose=VERBOSE_ALL, save_best_only=True)
使用单个模型进行训练,没有任何问题。然而,当我开始使用多处理池时,我最终遇到了回调问题。出现 hdf5 模型保存问题:
Traceback (most recent call last):
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1029, in _save_model
self.model.save(filepath, overwrite=True)
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 1008, in save
signatures, options)
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\tensorflow_core\python\keras\saving\save.py", line 112, in save_model
model, filepath, overwrite, include_optimizer)
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\tensorflow_core\python\keras\saving\hdf5_format.py", line 92, in save_model_to_hdf5
f = h5py.File(filepath, mode='w')
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\h5py\_hl\files.py", line 394, in __init__
swmr=swmr)
File "C:\Users\ICN_admin\Anaconda3\lib\site-packages\h5py\_hl\files.py", line 176, in make_fid
fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl)
File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py\h5f.pyx", line 105, in h5py.h5f.create
OSError: Unable to create file (file signature not found)
这个错误或多或少偶尔出现,通过异常我可以捕获它以重复模型训练。但是有没有办法通过设置标志或使用不同的回调文件格式来解决这个问题?
张量流版本:2.1.0
Keras 版本:2.3.1
图书馆包括:
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.callbacks import ModelCheckpoint
解决方案
推荐阅读
- vue.js - Nativescrit Vue - 我可以在 main.js 中访问我的 Vue 实例吗?
- python - Python 错误“FileNotFoundError:[Errno 2] 文件 b Usuarios.csv' 不存在:b Usuarios.csv'”
- excel - Excel复制粘贴宏偏移不正确
- javascript - 将带时区的时间戳字符串转换为“dd/mm/yyyy”格式
- python - 将语言环境数字字符串格式化回数字
- ios - 向导航栏添加了自定义阴影而不是删除
- javascript - 如何将 php 变量传递给 Wordpress AJAX 调用?
- android - 如何理解“android生命体征”信息?
- c++ - How to get inner XML of a node in pugixml?
- pandas - 将字符串转换为日期时间 - 性能问题