Кажется, что вы хотите получить градиент функции потерь по отношению к входным данным (а не весам, как это обычно бывает). Вы можете использовать tf.GradientTape()
для достижения этой конкретной задачи. Вот пример реализации, на которую я ссылался из учебника TensorFlow , с минимальным количеством правок в коде в соответствии с вашей ситуацией:
loss_object = tf.keras.losses.CategoricalCrossentropy() # Can be any loss function
model = tf. keras.applications.MobileNetV2(include_top=True, weights='imagenet') # Can be any model
def compute_gradient(input, input_label):
with tf.GradientTape() as tape:
tape.watch(input)
prediction = model(input)
loss = loss_object(input_label, prediction)
gradient = tape.gradient(loss, input)
return gradient
Для получения дополнительной информации о том, как использовать tf.GradientTape()
, обратитесь к официальная документация .