Регистрация градиентов оператора тензорного потока - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь понять, как Tensorflow регистрирует градиенты для своих операторов в целом.

Я проверил код в tensorflow/core/ops, tensorflow/python/ops и tensorflow/cc/gradients. Похоже, что все три компонента обеспечивают градиентную регистрацию для аналогичных операций. Например,

# In tensorflow/python/ops/math_grad.py
@ops.RegisterGradient("BatchMatMul")
def _BatchMatMul():
...
// In tensorflow/core/ops/math_grad.cc
Status BatchMatMulGrad(attrs, g){...}
REGISTER_OP_GRADIENT("BatchMatMul", BatchMatMulGrad);
// In tensorflow/cc/gradients/math_grad.cc
Status BatchMatMulGrad(...){...}
REGISTER_GRADIENT_OP("BatchMatMul", BatchMatMulGrad);

Какой смысл иметь двойное определение градиента для тех же операторов?

...