如果您有两个不相交的图,并且要将它们链接起来,请转动:
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
,并且想要优化输入图像,deep dream样式,那么有没有办法用一个tf.variable
节点替换占位符呢?或者在建立图表之前,你必须考虑这个问题吗?
TL;DR:如果您可以将这两个计算定义为Python函数,那么您应该这样做。如果不能,则在TensorFlow中有更高级的功能来序列化和导入图,这允许您从不同的源合成图。
在TensorFlow中,一种方法是将不相交的计算构建为单独的} 将它们转换为序列化的协议缓冲区:
tf.Graph
对象,然后使用^{然后您可以使用^{} 将
gdef_1
和gdef_2
组合成第三个图:结果是
tf.train.import_meta_graph
将所有附加参数传递给具有input_map
参数的底层import_scoped_meta_graph
,并在它自己(内部)调用import_graph_def
时使用它。它没有记录,我花了很多时间才找到它,但它的工作!
如果要组合经过训练的模型(例如在新模型中重用预训练模型的部分),可以使用
Saver
保存第一个模型的检查点,然后将该模型(全部或部分)还原到另一个模型中。例如,假设要重用模型2中模型1的权重
w
,并将x
从占位符转换为变量:相关问题 更多 >
编程相关推荐