2016-08-24 32 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列表清單。

相關問題