Ошибка выброса производной второго порядка для слитых операций Tensorflow, таких как BatchNorm, LRN, sparse_softmax_cross_entropy_with_logits - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время, если кто-то определяет сеть в 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

Эти ошибки указываютчто производные более высокого порядка не поддерживаются для слитых операций.Я предполагал, что вычисления производных более высокого порядка будут поддерживаться для всех операций с тензорным потоком.Разве это не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...