我尝试通过以下方式从不同的会话中创建图形:
sess1 = tf.Session()
print(sess1)
print(sess1.graph)
sess2 = tf.Session()
print(sess2)
print(sess2.graph)
sess3 = tf.Session()
print(sess3)
print(sess3.graph)
结果是
<tensorflow.python.client.session.Session object at 0x14305b2b0>
<tensorflow.python.framework.ops.Graph object at 0x14305ba20>
<tensorflow.python.client.session.Session object at 0x14305b9b0>
<tensorflow.python.framework.ops.Graph object at 0x14305ba20>
<tensorflow.python.client.session.Session object at 0x14305b908>
<tensorflow.python.framework.ops.Graph object at 0x14305ba20>
我不明白,因为我期望不同的会话会有不同的图,但是在这种情况下,不同的会话共享同一个图对象...?
有没有办法解决这个问题?
谢谢。
答案 0 :(得分:1)
如果在构造会话时未指定图参数,则 默认图形将在会话中启动。
这就是为什么您为不同的会话获得相同的图形的原因。为了解决这个问题,您可以在创建会话时简单地提供一个图形:
sess1 = tf.Session(graph=tf.Graph())
print(sess1)
print(sess1.graph)
sess2 = tf.Session(graph=tf.Graph())
print(sess2)
print(sess2.graph)
sess3 = tf.Session(graph=tf.Graph())
print(sess3)
print(sess3.graph)
这将导致:
<tensorflow.python.client.session.Session object at 0x10589c9d0>
<tensorflow.python.framework.ops.Graph object at 0x104729d10>
<tensorflow.python.client.session.Session object at 0x114d0afd0>
<tensorflow.python.framework.ops.Graph object at 0x114cf8c50>
<tensorflow.python.client.session.Session object at 0x114d0ae50>
<tensorflow.python.framework.ops.Graph object at 0x114d0af90>