繁体   English   中英

Tensorflow 1.14没有提供渐变

[英]Tensorflow 1.14 no gradients provided

我正在尝试根据示例[here] [1]对cnn发起攻击。 https://www.anishathalye.com/2017/07/25/synthesizing-adversarial-examples/

他们的笔记本可以在我的系统上运行,没有任何问题。

我要加载自己的网络,而不是加载Inception。 为简单起见,我首先在同一笔记本中训练网络:

tf.reset_default_graph()

x = tf.placeholder(tf.float32, shape=(None, *img_shape), name='input')
y =  tf.placeholder(tf.float32, shape=(None, total_labels), name='output')
keep_prob = tf.placeholder(tf.float32, name='keep_prob')

logits = conv_net(x, keep_prob, total_labels) # some standard cnn architecture is used

cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(logits=logits, labels=y)
cost = tf.reduce_mean(cross_entropy)
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

到现在为止还挺好。 网络训练有素

sess.run(optimizer, feed_dict={x: feature_batch, y: label_batch, keep_prob: keep_probability})

现在,我想通过训练图像上的叠加层来发起攻击:

overlay = tf.Variable(tf.zeros(1, *img_shape), name='Overlay')
assign_op = tf.assign(overlay, x)
loss = tf.nn.softmax_cross_entropy_with_logits_v2(logits=logits, labels=y)
optim = tf.train.GradientDescentOptimizer(0.0001).minimize(loss, var_list=[overlay])

我的理解是,上面的代码将可训练的Variable overlay分配给了我的输入占位符x作为我网络的输入,然后根据网络预测计算了损耗,优化器将损耗最小化了。 通过传递var_list我告诉优化器“嘿,您正在训练无法清晰看到的overlay 。”

但是,这不起作用并引发以下错误:

ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["<tf.Variable 'Overlay:0' shape=(1, 55, 65, 1) dtype=float32_ref>"] and loss Tensor("softmax_cross_entropy_with_logits_3/Reshape_2:0", shape=(?,), dtype=float32).

显然,我在这里缺少一些步骤/理解。 我看不到源笔记本在做什么。

占位符不是可训练的,渐变不会通过占位符传播。 如果您是我,我将尝试下一个工作流程:在培训时也通过变量将数据馈入网络。

x = tf.placeholder(size)
x_var = tf.Variable(same_size)
assign = tf.assign(x_var, x)
logits = conv_net(x_var)
...
sess.run(assign, data)
sess.run(minimize) 
# not sure, if it would work in a single sess.run([assign, minimize], data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM