2016-08-24 34 views
1

我想为一般情况做tf.merge_all_summaries对tf.get_collection('summaries')所做的操作。tensorflow group或collect将操作或张量提取为单个提取

作为示例,我发现tf.contrib.metrics.streaming *套件引入了一组必须每运行一次的“update_op”操作。我发现下面的语法太麻烦了,

_,_,_,_,_,summary,_=sess.run(tf.get_collection('updates')+[merged_summaries]+[train_op]) 

我在寻找一种解决方法,它不需要知道集合中的更新数量。在撰写本文时,我正在使用tensorflow-0.10。

回答

1

TensorFlow现在支持(自版本0.10起)将嵌套结构到Session.run()。例如,您现在可以将tf.Tensor对象列表的列表传递给Session.run(),结果将成为NumPy数组列表的类似嵌套列表。您也可以传递包含列表,张量和操作的混合列表(或元组)。在你的情况,你可以写:

updates = tf.get_collection('updates') 
_, summary, _ = sess.run([updates, merged_summaries, train_op]) 

在这种情况下,从sess.run()返回值是有三个元素,其中第(忽略)元素与相同长度updates列表清单。

相关问题