Adjoint FrΓ©chet derivative #
adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose of defining adjFDeriv is to compute gradient f x = adjFDeriv π f x 1.
The advantage of working with adjFDeriv is that we can formulate composition theorem.
The reason why we do not want to compute fderiv and then adjoint is that to compute fderiv π f
or adjoint f we decompose f = fβ β ... β fβ and then apply composition theorem. The problem is
that this decomposition has to be done differently for fderiv and adjoint. The problem is
that when working with fderiv the natural product type is X Γ Y but when working with adjoint
the natural product is WithLp 2 (X Γ Y).
For example:
Adjoint FrΓ©chet derivative
adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose of this function is to compute gradient f x = adjFDeriv π f x 1. We provide
easy to use API to compute adjFDeriv.
Instances For
Function f has adjoint FrΓ©chet derivative f' at x
f' = adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose is to compute gradient f x = f' 1 = adjFDeriv π f x 1.
This structure is analogous to HasFDerivAt and it is often easier to use as theorems for
HasAdjFDeriv do not require differentiability assumptions unlike theorems for adjFDeriv.
- differentiableAt : DifferentiableAt π f x
- hasAdjoint_fderiv : HasAdjoint π (β(fderiv π f x)) f'