tensorflow 的多個graph物件程式碼實現
阿新 • • 發佈:2019-02-04
最近看《面向機器智慧tensorflow實踐》這本書,裡面提到在一份程式碼中實現多個graph。
下面是一種實現方式,適合較短程式碼段
import tensorflow as tf #c = tf.add(a, b, "add") g1 = tf.Graph() g2 = tf.Graph() with g1.as_default(): sess = tf.Session() a = tf.constant([5], name="a") b = tf.constant([3], name="b") c = tf.add(a, b, "add_in_g1") summery_writer = tf.summary.FileWriter("./train", sess.graph) summery_writer.close() print(sess.run(c)) sess.close() with g2.as_default(): sess = tf.Session() a = tf.constant([5], name="a") b = tf.constant([3], name="b") c = tf.add(a, b, "add_in_g2") summery_writer = tf.summary.FileWriter("./test", sess.graph) summery_writer.close() print(sess.run(c)) sess.close()
下面是另一種方式實現,每次宣告預設計算圖,使用完畢後關掉計算圖
import tensorflow as tf a = tf.constant([5], name="a") b = tf.constant([3], name="b") #c = tf.add(a, b, "add") g1 = tf.Graph().as_default() sess = tf.Session() c = tf.add(a, b, "add") summery_writer = tf.summary.FileWriter("./train", sess.graph) summery_writer.close() print(sess.run(c)) sess.close() g2 = tf.Graph().as_default() sess = tf.Session() d = tf.multiply(a, b, name="multiply") summery_writer = tf.summary.FileWriter("./test", sess.graph) print(sess.run(d)) summery_writer.close() sess.close()
在第二幅圖中出現了第一幅圖中的add操作,我認為是因為這些op本身是在預設計算圖中宣告的,當把當前計算圖作為預設圖時,上述的op就也跟著顯示了。