#[unsafe(no_mangle)]pub unsafe extern "C" fn tfe_einsum_rrule_f64(
_subscripts: *const c_char,
_operands: *const *const TfeTensorF64,
_num_operands: usize,
_cotangent: *const TfeTensorF64,
_grads_out: *mut *mut TfeTensorF64,
_status: *mut tfe_status_t,
)Expand description
Reverse-mode rule (VJP) for einsum.
Computes one gradient tensor per input operand given the output
cotangent. The caller must provide grads_out as a pre-allocated
array of num_operands pointers. Each returned tensor must be
released by the caller.
§Safety
subscriptsmust be a valid null-terminated C string.operandsmust point to an array ofnum_operandsvalid tensor pointers.cotangentmust be a valid, non-null tensor pointer.grads_outmust point to a caller-allocated array ofnum_operandsmutable*mut TfeTensorF64pointers.statusmust be a valid, non-null pointer.
§Examples (C)
// After computing c = einsum("ij,jk->ik", [a, b]):
tfe_tensor_f64 *grads[2];
tfe_status_t status;
const tfe_tensor_f64 *ops[] = {a, b};
tfe_einsum_rrule_f64("ij,jk->ik", ops, 2, grad_c, grads, &status);
// grads[0] = gradient w.r.t. a
// grads[1] = gradient w.r.t. b
tfe_tensor_f64_release(grads[0]);
tfe_tensor_f64_release(grads[1]);