我试图通过优化随机“图像”来可视化 CNN 过滤器,以便它在该过滤器上产生高平均激活,这在某种程度上类似于神经风格转移算法。
为此,我使用 TensorFlow==2.2.0-rc。但是在优化过程中,出现错误提示'tensorflow.python.framework.ops.EagerTensor' object has no attribute '_in_graph_mode'。我尝试调试它,当我不使用它时,它以某种方式起作用opt.apply_gradients(),而是手动应用它的梯度,就像img = img - lr * grads但我想使用“亚当”优化器而不是简单的 SGD。
这是我的优化部分代码
opt = tf.optimizers.Adam(learning_rate=lr, decay = 1e-6)
for _ in range(epoch):
with tf.GradientTape() as tape:
tape.watch(img)
y = model(img)[:, :, :, filter]
loss = -tf.math.reduce_mean(y)
grads = tape.gradient(loss, img)
opt.apply_gradients(zip([grads], [img]))
Run Code Online (Sandbox Code Playgroud)