我正在使用FashionMNIST数据集。我正在使用使用keras的顺序模型和以下代码:
fashionmnist_model = keras.Sequential([
keras.layers.Dense(128, activation='sigmoid'),
keras.layers.Dense(10, activation='softmax')
])
fashionmnist_model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
现在我要找到损失函数wrt到图像输入的梯度。如果图像的尺寸为1 * 784,则损失函数梯度也应为1 * 784,但是我需要所有类的损失梯度(这意味着尺寸应为10 x 784)。我从一个对抗示例中获得了以下代码,该示例为Cifar 10产生了1乘784的梯度,
target = to_categorical(target_number)
print(target)
target_variable = K.variable(target)
loss = keras.metrics.categorical_crossentropy(cifar10_model.input,
target_variable)
gradients = K.gradients(loss, cifar10_model.input)
get_grad_values = K.function([cifar10_model.input], gradients)
grad_values = get_grad_values([adversarial_images])[0]