保存加载Keras/TensorFlow模型时,如何禁用.h5格式相关警告?
抑制Keras保存H5模型时的absl警告
你遇到的两条警告来自absl日志库,常规的TensorFlow日志设置或Python警告过滤无法生效,需要针对absl日志单独配置。以下是两种可行方案:
方案一:全局降低absl日志级别(推荐)
直接将absl的日志级别设为ERROR,屏蔽所有WARNING及以下的日志输出:
# 先配置absl日志,再导入Keras/TensorFlow import absl.logging absl.logging.set_verbosity(absl.logging.ERROR) import keras model = keras.Sequential( [ keras.layers.Dense(5, input_shape=(3,)), keras.layers.Softmax(), ], ) model.save('model.h5') loaded_model = keras.saving.load_model('model.h5')
方案二:精准过滤特定警告消息
如果不想全局屏蔽absl警告,可针对两条特定警告内容添加过滤器:
import absl.logging from absl.logging import PythonHandler # 自定义过滤器,过滤指定警告消息 def filter_absl_warnings(record): msg = record.getMessage() # 匹配两条目标警告的关键词 if "saving your model as an HDF5 file" in msg or "No training configuration found" in msg: return False return True # 给absl的Python日志处理器添加过滤器 for handler in absl.logging.get_absl_handler().python_handler.logger.handlers: if isinstance(handler, PythonHandler): handler.addFilter(filter_absl_warnings) import keras model = keras.Sequential( [ keras.layers.Dense(5, input_shape=(3,)), keras.layers.Softmax(), ], ) model.save('model.h5') loaded_model = keras.saving.load_model('model.h5')
为什么之前的方法无效?
os.environ['TF_CPP_MIN_LOG_LEVEL']仅控制TensorFlow的C++底层日志;tf.get_logger()针对的是TensorFlow自身的Python日志系统;warnings.filterwarnings只能过滤Python标准库warnings模块输出的警告;- 你遇到的两条警告由absl日志库独立输出,因此需要单独配置absl的日志规则。
内容的提问来源于stack exchange,提问作者SapereAude
相关产品推荐
相关产品推荐

