Tensorflowのグラフ操作 Part2
グラフを取得する
構築されたグラフを取得する方法:
tf.get_default_graph()
sess.graph
# coding:utf-8
import tensorflow as tf
# 足し算を行うグラフを構築
a = tf.constant(1, name="a")
b = tf.constant(2, name="b")
add_op = tf.add(a, b, name="add_op")
# 方法(1)
g1 = tf.get_default_graph()
print(g1)
# 方法(2)
sess = tf.Session()
g2 = sess.graph
print(g2)
実行結果
同一のgraph
オブジェクトが取得されていることが分かる。
<tensorflow.python.framework.ops.Graph object at 0x102541350>
<tensorflow.python.framework.ops.Graph object at 0x102541350>
複数のグラフを同じプログラムで扱う
足し算を行うグラフと引き算を行うグラフの2つを同じプログラムで扱う。
複数のグラフを扱うための手順:
tf.Graph()
でgraph
オブジェクトの生成tasizan_graph.as_default()
で対象となるグラフを指定- グラフの構築
tf.Session(graph=...)
で実行するグラフを指定
# coding:utf-8
import tensorflow as tf
# 足し算用グラフ
tasizan_graph = tf.Graph()
# 引き算用グラフ
hikizan_graph = tf.Graph()
# 引き算グラフの構築
with tasizan_graph.as_default():
a = tf.placeholder(tf.int32, shape=[], name="a")
b = tf.placeholder(tf.int32, shape=[], name="b")
add_op = tf.add(a, b, name="add_op")
# 足し算グラフの構築
with hikizan_graph.as_default():
x = tf.placeholder(tf.int32, shape=[], name="x")
y = tf.placeholder(tf.int32, shape=[], name="y")
sub_op = tf.sub(x, y, name="sub_op")
# 足し算の実行
with tf.Session(graph=tasizan_graph) as sess:
ret = sess.run(add_op, feed_dict={a:1,b:1})
print ret
# 引き算の実行
with tf.Session(graph=hikizan_graph) as sess:
ret = sess.run(sub_op, feed_dict={x:1,y:1})
print ret
実行結果
2
0