Uses of Class
org.ddogleg.chainrule.CRMatrix
Packages that use CRMatrix
-
Uses of CRMatrix in org.ddogleg.chainrule
Methods in org.ddogleg.chainrule that return CRMatrixModifier and TypeMethodDescriptionCRMatrix.copy()Creates a copy of the original array and this wrapper.static CRMatrix<double[]> CRMatrix.createD(int rows, int cols) MathCRMatrix.createMatrix(int rows, int cols) Creates a new matrix with the specified shapeCRMatrix<double[]> MathCRMatrixD.createMatrix(int rows, int cols) Creates a matrix with random valuesCRMatrix<double[]> Creates a new random matrixCRMatrix.reserve(int length) Ensure that the array has at least this many elements in itCRMatrix.reshape(int rows, int cols) Resizes the array and makes sure the data array is large enoughCRMatrix.setOffset(int offset) Assigns a new value to the offset and returns a reference to 'this' allowing operations to be chained.Sets the value of this to be identical to 'src' and returns a refernece to 'this'Methods in org.ddogleg.chainrule with parameters of type CRMatrixModifier and TypeMethodDescriptionvoidJacobianSerialChain.AddToJacobian.addJacobian(int parameter, CRMatrix<T> jacobian) voidAdds src into dst.voidvoidFills the diagonal elements with the specified valuevoidvoidJacobianNumerical_F64.differentiate(CRMatrix<double[]> dout, List<CRMatrix<double[]>> jacInputs) voidPerforms numerical differentiation to compute the gradients of input and parameters.voidFills every element with the specified valuevoidvoidbooleanbooleanMathCRMatrix.isUncountable(CRMatrix<T> m) Returns true if the matrix contains at least one uncountable numberbooleanMathCRMatrixD.isUncountable(CRMatrix<double[]> m) voidComputes the Jacobian of all the inputs and parameters to this function.voidPerforms matrix multiplication.voidPerforms a matrix multiplication between a and b.voidFills the matrix with uniformly distributed random values.voidFills the matrix with uniform random values.Sets the value of this to be identical to 'src' and returns a refernece to 'this'default voidFills all elements in the matrix with zeroMethod parameters in org.ddogleg.chainrule with type arguments of type CRMatrixModifier and TypeMethodDescriptionvoidJacobianNumerical_F64.differentiate(CRMatrix<double[]> dout, List<CRMatrix<double[]>> jacInputs) voidPerforms numerical differentiation to compute the gradients of input and parameters.voidComputes the Jacobian of all the inputs and parameters to this function. -
Uses of CRMatrix in org.ddogleg.chainrule.ops
Fields in org.ddogleg.chainrule.ops declared as CRMatrixModifier and TypeFieldDescriptionprotected final CRMatrix<double[]> CRErrorHuberNorm.workJacprotected final CRMatrix<double[]> CRErrorVectorSW.workJacprotected final CRMatrix<double[]> CRLossHuber.workJacprotected final CRMatrix<double[]> CROperatorBilinearND.workJacWorkspace for the jacobianMethods in org.ddogleg.chainrule.ops with parameters of type CRMatrixModifier and TypeMethodDescriptionvoidvoidvoidvoidvoidOne where the value passed through, zero where the floor decided itvoidEach input passes straight into its own run of the output, so its derivative is a selection matrix and the product is just that run's columns ofdoutvoidThe quotient rule, element by element:d(a/b)/da = 1/bandd(a/b)/db = -a/b^2voidThe quotient rule: the vector's Jacobian is1/bon the diagonal, and the scalar's is-a/b^2as a single columnvoidThe quotient rule with the damping riding along in the denominator: the vector's Jacobian is1/(beta + b)on the diagonal, and the scalar's is-a/(beta + b)^2as a single columnvoidCROperatorGridBilinearWeights.jacobian(CRMatrix<double[]> dout, List<CRMatrix<double[]>> jacobianInputs) The cell is fixed, so a weight only moves through the fractions, and those are linear in the pixelvoidEvery strided element contributes equally, so the jacobian is1/countat each of themvoidThe product rule: each side's Jacobian is a diagonal holding the other side's valuesvoidThe product rule: the vector's Jacobian isbon the diagonal, and the scalar's is the vector itself as a single columnvoidA sum has a derivative of one with respect to either side, so both inputs get the same JacobianvoidEach vector enters scaled by its own coefficient, and each coefficient enters as the vector it scalesvoidvoidprotected voidCROperatorBilinearND.jacobianKnot(CRMatrix<double[]> dout, CRMatrix<double[]> output, int knot) A coefficient enters linearly, so its derivative is its knot's weight times whatever the function makes of it.protected voidCROperatorBilinearND.jacobianValue(CRMatrix<double[]> dout, CRMatrix<double[]> output) Each knot's polynomial moves withvalue, and the four of them are mixed by the same weightsprotected voidCROperatorBilinearND.jacobianWeights(CRMatrix<double[]> dout, CRMatrix<double[]> output) A weight enters linearly, so its derivative is the polynomial it scalesMethod parameters in org.ddogleg.chainrule.ops with type arguments of type CRMatrixModifier and TypeMethodDescriptionvoidvoidvoidvoidvoidOne where the value passed through, zero where the floor decided itvoidEach input passes straight into its own run of the output, so its derivative is a selection matrix and the product is just that run's columns ofdoutvoidThe quotient rule, element by element:d(a/b)/da = 1/bandd(a/b)/db = -a/b^2voidThe quotient rule: the vector's Jacobian is1/bon the diagonal, and the scalar's is-a/b^2as a single columnvoidThe quotient rule with the damping riding along in the denominator: the vector's Jacobian is1/(beta + b)on the diagonal, and the scalar's is-a/(beta + b)^2as a single columnvoidCROperatorGridBilinearWeights.jacobian(CRMatrix<double[]> dout, List<CRMatrix<double[]>> jacobianInputs) The cell is fixed, so a weight only moves through the fractions, and those are linear in the pixelvoidEvery strided element contributes equally, so the jacobian is1/countat each of themvoidThe product rule: each side's Jacobian is a diagonal holding the other side's valuesvoidThe product rule: the vector's Jacobian isbon the diagonal, and the scalar's is the vector itself as a single columnvoidA sum has a derivative of one with respect to either side, so both inputs get the same JacobianvoidEach vector enters scaled by its own coefficient, and each coefficient enters as the vector it scalesvoidvoid