Tensorflow:如何用另一个操作替换图中的一个操作?

时间:2017-12-06 14:49:47

标签: tensorflow

目前我有以下问题,我使用Placeholder为我的网络创建输入,它是起始节点,索引为零的操作:

placeholder_operation = net.graph.get_operations()[0]

但现在我想用可训练的Variable输入替换它,以尽量减少输入损失(对抗样本)。

我可以通过我的算法完全重建我的图表,用Placeholder替换第一个Variable操作。但是有更优雅的方式吗?

另外,一般来说,如果我只有操作图(没有构造该图的算法),我可以用其他一些操作替换该图中的随机节点吗? I.E.在图表中的任何位置删除和安装新节点。

1 个答案:

答案 0 :(得分:0)

tf.placeholder_with_default是一个非常漂亮的选择。您可以使用它来切换任何张量,无论是变量,占位符还是常量。

import tensorflow as tf
sess = tf.InteractiveSession()

trainable_variable = tf.Variable(3.)
sess.run(tf.global_variables_initializer())
my_placeholder = tf.placeholder_with_default(trainable_variable, trainable_variable.shape)

b = tf.constant(2.)
c = my_placeholder * b


# Use this when you want to use `trainable_variable`
sess.run(c) # 6.0
# Use this when you want to use `my_placeholder`
sess.run(c, {my_placeholder: 5.}) # 10.0