【发布时间】:2019-06-30 06:00:45
【问题描述】:
我正在使用 tensorflow 实现 deepfool,但我不知道如何计算梯度,所以希望您能帮我解决这个问题。 源代码文件在https://drive.google.com/drive/folders/1JEiIidq8sNi03aliHFaYEESjDu87O6Tv?usp=sharing
with tf.GradientTape() as tape:
tape.watch(x)
fs = model(x)
loss_value = loss_func(one_hot_label_0, fs)
grad_orig = tape.gradient(fs[0, I[0]], x)
我已经多次更改了 tape.gradient() 的参数,但没用。
def loss_func(labels, logits):
return tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
while k_i == label and loop_i < max_iter:
pert = np.inf
one_hot_label_0 = tf.one_hot(label, num_classes)
with tf.GradientTape() as tape:
tape.watch(x)
fs = model(x)
loss_value = loss_func(one_hot_label_0, fs)
grad_orig = tape.gradient(fs[0, I[0]], x)
for k in range(1, num_classes):
one_hot_label_k = tf.one_hot(I[k], num_classes)
with tf.GradientTape() as tape:
tape.watch(x)
fs = model(x)
loss_value = loss_func(one_hot_label_k, fs)
cur_grad = tape.gradient(fs[0, I[k]], x)
【问题讨论】:
标签: tensorflow2.0