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

Tensorflow:如何替换计算图中的节点?

金晨
2023-03-14
问题内容

如果您有两个不相交的图,并且想要链接它们,请执行以下操作:

x = tf.placeholder('float')
y = f(x)

y = tf.placeholder('float')
z = f(y)

到这个:

x = tf.placeholder('float')
y = f(x)
z = g(y)

有没有办法做到这一点?在某些情况下,这似乎可以使施工更容易。

例如,如果您有一个图,其输入图像为tf.placeholder,并且想要优化输入图像(深梦风格),是否有一种方法可以仅用tf.variable节点替换占位符?还是在构建图形之前必须考虑一下?


问题答案:

TL;
DR:如果可以将这两个计算定义为Python函数,则应该这样做。如果不能,那么TensorFlow中有更多高级功能可用于序列化和导入图形,这使您可以从不同来源组成图形。

在TensorFlow中执行此操作的一种方法是将不相交的计算构建为单独的tf.Graph对象,然后使用以下命令将它们转换为序列化的协议缓冲区Graph.as_graph_def()

with tf.Graph().as_default() as g_1:
  input = tf.placeholder(tf.float32, name="input")
  y = f(input)
  # NOTE: using identity to get a known name for the output tensor.
  output = tf.identity(y, name="output")

gdef_1 = g_1.as_graph_def()

with tf.Graph().as_default() as g_2:  # NOTE: g_2 not g_1       
  input = tf.placeholder(tf.float32, name="input")
  z = g(input)
  output = tf.identity(y, name="output")

gdef_2 = g_2.as_graph_def()

然后,你可以撰写gdef_1gdef_2成第三曲线,使用tf.import_graph_def()

with tf.Graph().as_default() as g_combined:
  x = tf.placeholder(tf.float32, name="")

  # Import gdef_1, which performs f(x).
  # "input:0" and "output:0" are the names of tensors in gdef_1.
  y, = tf.import_graph_def(gdef_1, input_map={"input:0": x},
                           return_elements=["output:0"])

  # Import gdef_2, which performs g(y)
  z, = tf.import_graph_def(gdef_2, input_map={"input:0": y},
                           return_elements=["output:0"]


 类似资料:
  • 我需要计算Pearson和Spearman的相关关系,并将其用作张量流的度量。 对于皮尔逊来说,这是微不足道的: 但对于斯皮尔曼,我是无知的! 从这个答案中: 但是这个返回。。。 我试过: 但运行此命令时,我出现以下错误: tensorflow.python.framework.errors_impl。InvalidArgumentError:输入必须至少有k列。有1个,需要32个 [{node

  • 本文向大家介绍请介绍Tensorflow计算图?相关面试题,主要包含被问及请介绍Tensorflow计算图?时的应答技巧和注意事项,需要的朋友参考一下 tensorflow是一个通过计算图的形式来表述计算的编程系统,可以把计算图看做一种有向图,tf中每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系

  • 本文向大家介绍请介绍下tensorflow的计算图?相关面试题,主要包含被问及请介绍下tensorflow的计算图?时的应答技巧和注意事项,需要的朋友参考一下 Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个节点都是计算图上的一个Tensor, 也就是张量,而节点之间的边描述了计算之间的依赖关系(定义时

  • 问题内容: 最近,我一直在玩 TensorFlow, 并提到该框架无法使用我所有可用的计算资源。在卷积神经网络教程中,他们提到 天真地采用模型参数的异步更新会导致次优的训练性能,因为单个模型副本可能会在模型参数的陈旧副本上进行训练。相反,采用完全同步更新将与最慢的模型副本一样慢。 尽管他们在教程和白皮书中都提到了这一点,但我并没有真正找到在本地计算机上进行异步并行计算的方法。可能吗 还是它是Ten

  • 假设我有一个无向多图,即一个(G,E)对,其中G是一个有限的结点集,E是一个有限的边集。我正在寻找一个算法,将分配一个单一的字符串值到每个节点在以下的约束。 1. 每个节点都被赋予一组约束(可能是空的),这些约束限制了允许的值。我希望至少支持以下类型的值约束: null 有两种类型的边缘: 不同, 相同, 这意味着应该为相关节点分配不同/相同的值(意味着不相等/相等的字符串)。 null 这意味着

  • 问题内容: 我目前正在开发一个简单的聊天应用程序。我想在此应用程序中添加表情符号功能。我已经有一个从其他用户接收字符串的功能。我想要的是- 如果用户发送的文本包含CharSequence之类的字符,例如“:D”或“:p”,我希望将它们更改为表情符号。如何实现此功能? 我想要这样的功能: 如果可以的话,请帮助我。如果还有其他方法,请提及它们。 问题答案: 你可以这样尝试