У меня есть модель keras с двумерным выводом (двоичная классификация).
model.output # <tf.Tensor 'dense_1_3/MatMul:0' shape=(?, 2) dtype=float32>
и
model.input # <tf.Tensor 'bidirectional_1_input:0' shape=(?, ?, 200) dtype=float32>
Я оценил три разных градиента для некоторого примера ввода формы (1,50,200)
gradients0 = K.gradients(model.output[:,0] model.inputs)
gradients1 = K.gradients(model.output[:,1], model.inputs)
gradients2 = K.gradients(model.output, model.inputs)
Я думал, что первые два выражения дают градиент для одиночных выходных нейронов, а последнее - тензор, содержащий первые два выражения.
К моему удивлению, все три градиента имеют форму (1,50,200)
. На мой взгляд, градиент2 должен иметь форму (2,50,200)
, поскольку model.output
является двухмерным. Что вычисляет керас в этом случае?