Tensorflow 关于tensorboard name\u范围

Tensorflow 关于tensorboard name\u范围,tensorflow,tensorboard,Tensorflow,Tensorboard,我使用name_scope来管理变量的名称,所以它可以通过tensorboard很好地显示出来。但我发现了一些奇怪的事情,name\u scope没有为tf.get\u variable创建的变量添加前缀。 因此,代码引发了一个错误: with tf.name_scope(self.networkName + '/conv1'): self.conv1_w = tf.get_variable(shape = [8, 8, 4, 16], name = 'w', initializer=t

我使用name_scope来管理变量的名称,所以它可以通过tensorboard很好地显示出来。但我发现了一些奇怪的事情,name\u scope没有为tf.get\u variable创建的变量添加前缀。 因此,代码引发了一个错误:

with tf.name_scope(self.networkName + '/conv1'):
    self.conv1_w = tf.get_variable(shape = [8, 8, 4, 16], name = 'w', initializer=tf.contrib.layers.xavier_initializer())
    self.conv1_b = tf.get_variable(shape = [16], name = 'b', initializer=tf.contrib.layers.xavier_initializer())
    self.conv1_o = tf.nn.relu(tf.nn.conv2d(self.states, self.conv1_w, [1, 4, 4, 1], 'SAME') + self.conv1_b)

with tf.name_scope(self.networkName + '/conv2'):
    self.conv2_w = tf.get_variable(shape = [4, 4, 16, 32], name = 'w', initializer=tf.contrib.layers.xavier_initializer())
    self.conv2_b = tf.get_variable(shape = [32], name = 'b', initializer=tf.contrib.layers.xavier_initializer())
    self.conv2_o = tf.nn.relu(tf.nn.conv2d(self.conv1_o, self.conv2_w, [1, 2, 2, 1], 'SAME') + self.conv2_b)
ValueError:变量w已存在,不允许

我可以使用变量范围而不是名称范围吗?tensorboard可以在变量作用域上工作?

tf.name\u作用域为作用域内定义的操作定义前缀

tf.variable_scope为范围内定义的操作和变量定义前缀

如果要创建与另一个变量同名但在不同范围内的变量,则必须使用tf.variable_scope

tf.name_作用域用于定义自定义操作,以便更好地定义上下文

就我个人而言,我几乎总是使用tf.variable_范围

此外,是的,tf.variable_scope在tensorboard中创建的图形与tf.named_scope完全相同