问题描述
我正在64个核cpu工作站上同时训练多个Keras MLP模型。 因此,我正在使用Python多处理池为每个cpu分配一个正在训练的模型。 对于正在训练的模型,我正在使用以这种方式定义的Early Stopping和Model检查点回调:
es = EarlyStopping(monitor='val_mse',mode='min',verbose=VERBOSE_ALL,patience=10)
mc = ModelCheckpoint('best_model.h5',monitor='val_mse',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)
该错误或多或少地偶尔出现,并且通过例外,我可以捕获到该错误以重复进行模型训练。 但是,是否可以通过设置标志或使用其他回调文件格式来解决此问题?
Tensorflow版本:2.1.0
Keras版本:2.3.1
图书馆包括:
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.callbacks import ModelCheckpoint
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)