Tensorflow: 如何通过名称获取张量?

9 浏览
0 Comments

Tensorflow: 如何通过名称获取张量?

我无法通过名称恢复一个张量,甚至不知道是否可能。

我有一个创建图表的函数:

def create_structure(tf, x, input_size,dropout):    
 with tf.variable_scope("scale_1") as scope:
  W_S1_conv1 = deep_dive.weight_variable_scaling([7,7,3,64], name='W_S1_conv1')
  b_S1_conv1 = deep_dive.bias_variable([64])
  S1_conv1 = tf.nn.relu(deep_dive.conv2d(x_image, W_S1_conv1,strides=[1, 2, 2, 1], padding='SAME') + b_S1_conv1, name="Scale1_first_relu")
.
.
.
return S3_conv1,regularizer

我想在函数外部访问变量S1_conv1。我尝试了:

with tf.variable_scope('scale_1') as scope_conv: 
 tf.get_variable_scope().reuse_variables()
 ft=tf.get_variable('Scale1_first_relu')

但是这给我一个错误:

ValueError: Under-sharing: Variable scale_1/Scale1_first_relu does not exist, disallowed. Did you mean to set reuse=None in VarScope?

但是这个可以工作:

with tf.variable_scope('scale_1') as scope_conv: 
 tf.get_variable_scope().reuse_variables()
 ft=tf.get_variable('W_S1_conv1')

我可以通过以下方式解决这个问题:

return S3_conv1,regularizer, S1_conv1

但是我不想这样做。

我认为我的问题是S1_conv1实际上不是一个变量,它只是一个张量。有没有办法实现我想要的?

0