В настоящее время, если кто-то определяет сеть в TensorFlow, содержащую BatchNorm или LRN, и пытается добавить теряющий член, содержащий градиенты перекрестной энтропии по отношению к входным данным, то в следующих строках выдается ошибка:
LookupError: No gradient defined for operation 'clone_0/gradients/clone_0/InceptionV3/InceptionV3/Conv2d_1a_3x3/BatchNorm/FusedBatchNorm_grad/FusedBatchNormGrad' (op type: FusedBatchNormGrad)
Подобное генерируется, если у нас есть слой tf.nn.lrn в сети:
LookupError: gradient registry has no entry for: LRNGrad
During handling of the above exception, another exception occurred:
...................
LookupError: No gradient defined for operation 'gradients/norm1_grad/LRNGrad' (op type: LRNGrad).
Ссылка на проблему github для LRN - https://github.com/tensorflow/tensorflow/issues/22825
ThisОтсутствие градиента второго порядка также выдается для операции tf.nn.sparse_softmax_cross_entropy_with_logits со следующей ошибкой:
LookupError: Gradient explicitly disabled. Reason: b"Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation's interaction with tf.gradients()" .
Ссылка на проблему с github для sparse_softmax_cross_entropy_with_logits - https://github.com/tensorflow/tensorflow/issues/11626
Эти ошибки указываютчто производные более высокого порядка не поддерживаются для слитых операций.Я предполагал, что вычисления производных более высокого порядка будут поддерживаться для всех операций с тензорным потоком.Разве это не так?