我希望能够在TensorBoard InteractiveSession
中查看我正在试验的TensorFlow图表。
例如,我想要输入操作A
,然后刷新TensorBoard并在图表中查看A
,然后执行B
并刷新并查看{图中的{1}}。然后,如果我决定要更改图表,我想要执行一些操作并获得一个清晰的平板,以便当我随后输入B
和A
时,我只看到{{在TensorBoard中有1}}和C
,而不是A
,C
和B
的两个版本,正如我目前所见。
例如,如果我
C
然后运行
A
我在TensorBoard中显示了import tensorflow as tf
sess = tf.InteractiveSession()
# operation A
# operation B
writer = tf.summary.FileWriter(logdir='logdir', graph=sess.graph)
writer.flush()
tensorboard --logdir logdir --purge_orphaned_data
预期的图表。
如果我稍后执行其他操作
A
这些不会出现在TensorBoard中,除非我再次执行:
B
创建新日志,# operation P
# operation Q
和writer = tf.summary.FileWriter(logdir='_tflog', graph=sess.graph)
writer.flush()
现在显示在TensorBoard中P
和Q
旁边的图表中。
任何这些操作的每次额外执行要么在TensorBoard中无效,要么在我运行上面的A
行时显示为附加节点。
如果我想随后删除操作(例如B
和writer
),我似乎需要完全重启所有内容(A
和P
并删除所有内容旧日志)。
所有这些都令人困惑,很难跟踪(我甚至不确定我的帐户是否正确!)。
有没有办法完全重置TensorBoard使用的Session
,这样我才能在TensorBoard中查看自上次重置后添加的那些图元素?
答案 0 :(得分:0)
我是新人,所以FWIW:我认为问题的一部分是图表而非会话。
TF似乎有一个非常粘的默认图。
在非交互式设置中,我必须做两件事:
1)每次摆脱旧的Session文件(events.out.tfevents ....),因此他们没有堆积,
2)真正清除图表(通过使用会话中隐藏的默认图表以外的内容)来覆盖张量板显示。
请注意,保持tensorboard运行似乎很好,只需在Web浏览器中刷新localhost:6006 URL。
围绕我的主要图形构造代码,我使用:
mytfgraph = tf.Graph() # Get something other than the Default Graph
with mytfgraph.asdefault():
...lots of good code here...
# Get rid of old Tensorboard graph file and just save new one
filesindir = os.listdir(your_graph_location)
# os. calls may be OS-dependent
# Make sure there is no subdir as not checking for this!
for file in filesindir:
try:
delfile = graph_location + file
os.remove(delfile)
except:
print('Warning, Tensorboard file not removed')
train_writer = tf.summary.FileWriter(graph_location)
# Using custom graph as default ("the with wrapper above")
train_writer.add_graph(tf.get_default_graph())
train_writer.close()
...down here I run batches using a 'with tf.Session() as sess:'...
由于您使用的是交互式会话(我不太了解),因此Graph部件的备用部件可以简化您的生活。这是私有方法:tf.reset_default_graph()
。 Tensorboard scalars and graphs duplicated
Hacky与否,我没有使用它,因为我想尝试只使用公共方法。