关于TensorFlow Supervisor仅保留最新5个模型的技术求助
解决TensorFlow Supervisor仅保留5个模型的问题
嘿,这个问题我之前也碰到过!其实问题不在Supervisor本身的删除逻辑里,而是藏在它默认使用的Saver配置里——你没看错,Supervisor如果没有收到自定义的Saver实例,会自动创建一个默认的tf.train.Saver(),而这个默认Saver的max_to_keep参数值就是5,这就是旧模型被自动清理的原因。
给你几个具体的解决思路:
自定义Saver并修改max_to_keep:
在初始化Supervisor之前,手动创建一个Saver实例,把max_to_keep设置成你想要的值——比如设为None就能保留所有模型,或者设置一个更大的数字(比如20)。然后把这个自定义的Saver传给Supervisor的saver参数。示例代码如下:import tensorflow as tf # 假设你已经定义好了模型的计算图... # 创建自定义Saver,设置保留所有模型 saver = tf.train.Saver(max_to_keep=None) # 初始化Supervisor时传入这个saver sv = tf.train.Supervisor( saver=saver, log_dir="./your_log_dir", save_model_secs=600 ) # 后续的训练逻辑...检查是否有外部清理逻辑:
虽然概率较低,但可以排查一下:你的训练脚本里有没有自己写的删除旧模型的代码?或者操作系统有没有定时任务在清理log_dir目录?还有,有些TensorFlow的辅助工具或者容器环境也可能会自动清理旧文件,这部分也可以确认下。验证Supervisor的Saver创建逻辑:
你可以再去翻supervisor.py的__init__方法,里面有一段逻辑是如果saver参数为None,就会调用tf.train.Saver(),而这个默认构造的Saver确实会使用max_to_keep=5的默认值——这就是问题的核心啦。
希望这个思路能帮你解决问题!
内容的提问来源于stack exchange,提问作者Yuhang
相关产品推荐
相关产品推荐

