Interface CROperatorBackwardsJac<T>

All Superinterfaces:
CROperatorForward<T>
All Known Implementing Classes:
CRErrorHuberNorm, CRErrorVectorSW, CRLossHuber, CROperatorBilinearND, CROperatorBilinearPolyND, CROperatorBilinearSplineND, CROperatorClampLower, CROperatorConcat, CROperatorDivide, CROperatorDivideVS, CROperatorDivideVSDamped, CROperatorGridBilinearWeights, CROperatorMeanVector, CROperatorMult, CROperatorMultVS, CROperatorPlus, CROperatorPlusAB, CROperatorRemapParams, CRPenaltyL2

public interface CROperatorBackwardsJac<T> extends CROperatorForward<T>
Computes the Jacobian in the backwards direction and is used when optimizing. If the parameters are assumed to be known then no Jacobian will be produced for them since they are not being optimized. By default, parameters are not assumed to be known.
  • Method Details

    • jacobian

      void jacobian(CRMatrix<T> dout, List<CRMatrix<T>> jacobianInputs)

      Computes the Jacobian of all the inputs and parameters to this function.

      Mathematical explanation of how the partial derivatives are computed:

      @Out(..)/@x = [@f1(x,y)/@x @f1(x,y)/@y ; @f2(x,y)/@x ...  ] * @???/@f
      

      Where Out is the final output, 'f' is this function with two inputs (x,y). '@Out/@f' is dout.

      Parameters:
      dout - (Input) Jacobian of output conditional on this function, computed from next layer.
      jacobianInputs - (Output) Storage for all the Jacobian inputs. All matrices must be pre-declared and included in the list. If a matrix is marked as invalid, then the jacobian is skipped for that input.