2017-04-18 152 views
0

我使用tensorflow 1.0来培训DNNRegressor。大多数培训已经由新的tensorflow 1.0功能自动处理。型号信息自动保存在文件夹中。我使用for循环重复地使用不同的训练文件调用train(filepath,isAuthentic)函数。Tensorflow 1.0培训模式使用指数级更多的空间

问题是events.out.tfevents文件越来越大,占用空间。我已经通过在生成这些文件时删除这些文件来解决这个问题,但是CPU仍然会在尝试生成这些文件时增加更多的时间浪费。这些不会影响培训或预测的结果。有没有办法阻止这些events.out.tfevents文件被生成?

我注意到,当我长时间运行python程序时,events.out.tfevents文件大小开始很小,然后变大,但是如果我运行几个较短间隔期的训练,则文件尺寸保持不变。

picture of model folder, contents ordered by size

当我让跑步训练足够长的时间,在events.out.tfevents达到了200 MB,浪费了太多的时间和空间。我已经尝试更改传递给DNNRegressor的RunConfig对象中的检查点和汇总参数。

def getRegressor(): 
    feature_cols = [tf.contrib.layers.real_valued_column(k) for k in networkSetup.FEATURES] 
    # Build 2 layer fully connected DNN with 8, 8 units respectively. 
    regressor = tf.contrib.learn.DNNRegressor(feature_columns=feature_cols, 
              hidden_units=[8, 8], 
              model_dir=networkSetup.MODEL_DIR, 
              activation_fn=tf.nn.sigmoid, 
              optimizer=tf.train.GradientDescentOptimizer(
               learning_rate=0.001 
              ) 
              ) 
    return regressor 

def train(filepath, isAuthentic): 
    regressor = getRegressor() 
    # training on training set 
    regressor.fit(input_fn=lambda: input_fn(filepath, isAuthentic), steps=1) 

回答

0

.tfevents文件包含由fit方法编写的事件。 DNNRegressor至少为每个隐藏层保存了直方图和零的分数。您可以使用Tensorboard来查看它们。

Tensorflow不覆盖事件文件,而是附加到它们,所以更大的文件大小并不意味着更多的CPU周期。

你可以通过config参数DNNRegressor构造(RunConfig实例),并指定你如何经常要总结利用其save_summary_steps财产被保存。默认是每100步骤保存汇总。

0

为了防止创建events.out文件的张量流,您只需评论每次新用户训练模型时写入该文件的那部分代码。

在所有模型中,都有写在主类中的编写器来创建这些汇总/日志以进一步分析数据,尽管它在许多情况下并不有用。从Tensorflow盗梦空间的“retrain.py”

示例代码行:

train_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/train',sess.graph) 
validation_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/validation') 

注释掉的代码创建events.out文件中的一部分,你是的。

相关问题