【发布时间】:2019-12-18 22:43:51
【问题描述】:
目前,我正在进行通用扰动类型的研究,我将使用激活函数之前层的梯度来回溯上次迭代中采用的梯度步骤。 但是,当我尝试使用 K.gradients 提取渐变时,我似乎无法提取正确的内容。
要么我得到一个我不想要的张量,要么我得到 [零]。给定输入图像,我想要的是倒数第二层的确切梯度。这是我目前拥有的:
f_image = np.array(model.predict(image)).flatten()
I = (np.array(f_image)).flatten().argsort()[::-1]
I = I[0:num_classes]
pert_image = image
gradients = np.asarray(grads(pert_image,I))
这里的 grads 应该是梯度函数以获得精确的梯度。当我使用以下代码时,我得到一个张量:
gradients = K.gradients(model.layers[-2].output, model.layers[0].input)[0]
其中输出是 I,在进行激活分类之前影响最大,输入是扰动图像,从原始图像开始。
有人能告诉我我的K.gradients 实现有什么问题吗?
【问题讨论】:
标签: python tensorflow image-processing keras gradient