| 212 | REGISTER_GRADIENT_OP("Tanh", TanhGrad); |
| 213 | |
| 214 | Status AsinhGrad(const Scope& scope, const Operation& op, |
| 215 | const std::vector<Output>& grad_inputs, |
| 216 | std::vector<Output>* grad_outputs) { |
| 217 | // y = asinh(x) |
| 218 | // dy/dx = 1 / cosh(y) |
| 219 | auto dydx = Reciprocal(scope, Cosh(scope, op.output(0))); |
| 220 | // grad(x) = grad(y) * conj(dy/dx) |
| 221 | grad_outputs->push_back( |
| 222 | Mul(scope, grad_inputs[0], ConjugateHelper(scope, dydx))); |
| 223 | return scope.status(); |
| 224 | } |
| 225 | REGISTER_GRADIENT_OP("Asinh", AsinhGrad); |
| 226 | |
| 227 | Status AcoshGrad(const Scope& scope, const Operation& op, |
nothing calls this directly
no test coverage detected