我的问题是在教程代码ptb/reader.py中使用tf.name_scope
,
with tf.name_scope(name, "PTBProducer", [raw_data, batch_size, num_steps]):
#use raw_data, batch_size, num_steps to construct tf objects
使用列表[raw_data,batch_size,num_steps]调用tf.name_scope的目的是什么? raw_data
是一个python列表,batch_size
和num_steps
是python int。根据{{3}}的文件:
tf.name_scope(name, default_name=None, values=None): This context manager validates that the given values are from the same graph, makes that graph the default graph, and pushes a name scope in that graph (see Graph.name_scope() for more details on that).
但raw_data
,batch_size
,num_step
不是图表中的任何节点。通过验证它们是什么意思来自同一个图表?事实上,当从tf.name_scope调用中删除列表时代码仍然运行:
with tf.name_scope(name, "PTBProducer"):
#use raw_data, batch_size, num_steps to construct tf objects
使用tf.name_scope
和不使用values=[raw_data,batch_size,num_steps]
调用username
的区别是什么?
答案 0 :(得分:3)
ptb / reader.py错误地使用了tf.name_scope()值参数。图元素应该通过。
name_scope()将使默认图形上下文与传入元素的图形匹配。如果您正在处理多个图形,这非常有用。
如果值(图表元素)列表不是全部来自同一图表,tf.name_scope将引发错误。