我使用tensorflow 1.0训练DNNRegressor。大多数培训已经由新的tensorflow 1.0功能自动处理。模型信息自动保存在文件夹中。我使用for循环重复调用train(filepath,isAuthentic)函数,使用不同的训练文件。
问题是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 :(得分:0)
.tfevents
个文件包含fit方法编写的事件。 DNNRegressor
至少为每个隐藏层保存直方图和零分数。您可以使用Tensorboard查看它们。
Tensorflow不会覆盖事件文件,而是附加到它们,因此更大的文件大小并不意味着更多的CPU周期。
您可以将config
参数传递给DNNRegressor
构造函数(RunConfig实例),并指定您希望使用其save_summary_steps
属性保存摘要的频率。默认是每100
步保存摘要。
答案 1 :(得分:0)
为了防止tensorflow创建events.out文件,您只需要在每次新用户训练模型时注释写入此文件的代码部分。
在所有模型中,有一些编写器在主类中编写,用于创建这些摘要/日志以进一步分析数据,尽管在许多情况下它没用。
来自Tensorflow Inception的“retrain.py”的示例代码行:
train_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/train',sess.graph)
validation_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/validation')
只需注释掉创建events.out文件的代码部分就可以了。
答案 2 :(得分:0)
那是因为新生成的用于张量板的Graph文件。
tfFileWriter = tf.summary.FileWriter(os.getcwd())
tfFileWriter.add_graph(sess.graph)
tfFileWriter.close()
注释掉这些行(如果在代码中找到它们的话,它将消失)。