1. 程式人生 > >tensorflow 的多個graph物件程式碼實現

tensorflow 的多個graph物件程式碼實現

 最近看《面向機器智慧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就也跟著顯示了。