我在keras + tensorflow中拥有训练有素的CNN检测网络(yolo-tiny-v3),并且需要计算输出和输入图像的梯度(要迭代更新输入图像,而不是conv-kernels参数)。
但是,我需要使用conv-kernels的正部分来计算渐变,而不是常见的渐变。 在正向传播中,原始内核用于计算输出。但是在向后传播中,需要使用relu(conv-kernels)来计算梯度。
是否有一些tensorflow运算符可以直接实现这一目标?(例如我使用的gradient_override_map)。 非常感谢。
这是我的代码-渐变乘以激活图。大写L表示python列表。
gradients = tf.gradients(yolo_outputs_masked_L, conv_layer_outputs)
grad_ams_L = []
for i_layer_num in range(len(conv_layer_outputs)):
grad_am = conv_layer_outputs[i_layer_num] * gradients[i_layer_num]
grad_ams_L.append(grad_am)