当前位置: 首页 > 面试题库 >

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

归俊
2023-03-14
问题内容

我无法按名称恢复张量,我什至不知道是否可能。

我有一个创建图的函数:

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:共享不足:不允许使用变量scale_1 / Scale1_first_relu。您是说要在VarScope中设置“ reuse =
None”?

但这有效:

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并不是一个真正的变量,它只是一个张量。有什么方法可以做我想要的吗?


问题答案:

有一个函数tf.Graph.get_tensor_by_name()。例如:

import tensorflow as tf

c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d, name='example')

with tf.Session() as sess:
    test =  sess.run(e)
    print e.name #example:0
    test = tf.get_default_graph().get_tensor_by_name("example:0")
    print test #Tensor("example:0", shape=(2, 2), dtype=float32)


 类似资料:
  • 问题内容: 您可以使用以下名称获取张量 但是,您可以获得诸如之类的操作,还是队列中的操作? 在我的第一个模型中,我返回了函数所需的所有张量和运算。但是张量的列表很难看。在以后的模型中,我将所有张量和操作数丢入字典中,以方便访问。这次,我以为我只是在需要时按名称查找张量,但我不知道该如何使用ops。 还是有更好的方法来做到这一点?我发现到处都需要各种张量和操作。训练,推理代码,测试用例,因此,需要一

  • 问题内容: 有什么办法可以在Python中按进程名称获取PID? 例如,我需要获得通过。 问题答案: 你可以使用进程的名字来的PID 通过subprocess.check_output: 将运行命令为, 如果返回码非零,则会引发CalledProcessError。 要处理多个条目并转换为整数: 在[21]中:get_pid(“ chrome”) 或者通过标记获取单个pid:

  • 问题内容: 我正在使用和创建神经网络;由于某种原因,我想获得某种内在的张量的值给定的输入,所以我使用的,作为一个。 但是,我发现很难找到张量名称的正确语法,即使知道它的名称也很困难(而且我对操作和张量感到困惑),因此我使用张量板绘制图形并寻找名称。 有没有一种方法可以在不使用张量板的情况下枚举图中的所有张量? 问题答案: 你可以做 另外,如果您要在IPython笔记本中进行原型制作,则可以直接在笔

  • 问题内容: 这应该很简单,但我只是没有看到。 如果我有一个进程ID,该如何使用它来获取有关该进程的信息,例如进程名称。 问题答案: 在Linux下,您可以读取proc文件系统。文件包含命令行。

  • 我需要我部署插件的项目的当前分支名称,所以插件的groovy类中当前分支名称的代码是这样的, 但是由于某种原因,当使用詹金斯在云上部署项目时,这个函数返回HEAD,而不是我试图部署的项目的当前分支。 我尝试了很多不同的场景,但没有成功,我如何确保我使用的插件获取正在进行部署的项目的当前分支。

  • 问题内容: 我想知道是否有一种功能或某种与之等效的方法。 问题答案: 您的函数名称中缺少。返回元素的集合,这些元素需要迭代: IE8及以下版本不支持,因此您必须找到一个polyfill或使用(IE8)。