Gradient for MatMul, only for the first input.
(op, grad)
| 1532 | |
| 1533 | |
| 1534 | def _MatMulGradAgainstFirstOnly(op, grad): |
| 1535 | """Gradient for MatMul, only for the first input.""" |
| 1536 | t_a = op.get_attr("transpose_a") |
| 1537 | t_b = op.get_attr("transpose_b") |
| 1538 | b = math_ops.conj(op.inputs[1]) |
| 1539 | if not t_a and not t_b: |
| 1540 | grad_a = gen_math_ops.mat_mul(grad, b, transpose_b=True) |
| 1541 | elif not t_a and t_b: |
| 1542 | grad_a = gen_math_ops.mat_mul(grad, b) |
| 1543 | elif t_a and not t_b: |
| 1544 | grad_a = gen_math_ops.mat_mul(b, grad, transpose_b=True) |
| 1545 | elif t_a and t_b: |
| 1546 | grad_a = gen_math_ops.mat_mul(b, grad, transpose_a=True, transpose_b=True) |
| 1547 | return grad_a, None |
| 1548 | |
| 1549 | |
| 1550 | def _MatMulGradAgainstSecondOnly(op, grad): |