目前我有以下问题,我使用Placeholder
为我的网络创建输入,它是起始节点,索引为零的操作:
placeholder_operation = net.graph.get_operations()[0]
但现在我想用可训练的Variable
输入替换它,以尽量减少输入损失(对抗样本)。
我可以通过我的算法完全重建我的图表,用Placeholder
替换第一个Variable
操作。但是有更优雅的方式吗?
另外,一般来说,如果我只有操作图(没有构造该图的算法),我可以用其他一些操作替换该图中的随机节点吗? I.E.在图表中的任何位置删除和安装新节点。
答案 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