public MockTrustRegionBase_F64(ParameterUpdate<DMatrixRMaj> parameterUpdate) { super(parameterUpdate, new HessianMath_DDRM()); }
public DMatrixRMaj hessian() { return ((HessianMath_DDRM)hessian).getHessian(); }
@Override public void init(int numParameters) { super.init(numParameters); hessianInverse.reshape(numParameters,numParameters); CommonOps_DDRM.setIdentity(hessian); CommonOps_DDRM.setIdentity(hessianInverse); }
@Override public void init(int numParameters) { super.init(numParameters); hessianInverse.reshape(numParameters,numParameters); CommonOps_DDRM.setIdentity(hessian); CommonOps_DDRM.setIdentity(hessianInverse); }
public MockOwner(ParameterUpdate<DMatrixRMaj> parameterUpdate) { super(parameterUpdate, new HessianMath_DDRM()); }
public DMatrixRMaj hessian() { return ((HessianMath_DDRM)hessian).getHessian(); }
public MockGaussNewtonBase_F64() { super(new HessianMath_DDRM()); config = new ConfigGaussNewton(); }
@Test public void computePredictedReduction() { MockGaussNewtonBase_F64 alg = new MockGaussNewtonBase_F64(); DMatrixRMaj H = ((HessianMath_DDRM)alg.hessian).getHessian(); H.reshape(2,2); double x[] = new double[]{1,2}; alg.initialize(x,2); RandomMatrices_DDRM.fillUniform(alg.gradient,-1,1,rand); RandomMatrices_DDRM.fillUniform(H,-1,1,rand); Equation eq = new Equation(); eq.alias(alg.p,"p",alg.gradient,"g",H,"H"); eq.process("reduction = -g'*p - 0.5*p'*H*p"); double expected = eq.lookupDouble("reduction"); double found = alg.computePredictedReduction(alg.p); assertEquals(expected, found, UtilEjml.TEST_F64); }
public MockTrustRegionBase(ParameterUpdate<DMatrixRMaj> parameterUpdate) { super(parameterUpdate, new HessianMath_DDRM(LinearSolverFactory_DDRM.chol(2))); }
@Test public void applyHessianScaling() { MockGaussNewtonBase_F64 alg = new MockGaussNewtonBase_F64(); DMatrixRMaj H = ((HessianMath_DDRM)alg.hessian).getHessian(); H.reshape(4,4); alg.gradient = RandomMatrices_DDRM.rectangle(4,1,-1,2,rand); RandomMatrices_DDRM.fillUniform(H,rand); DMatrixRMaj _g = alg.gradient.copy(); DMatrixRMaj _H = H.copy(); alg.hessianScaling = new DMatrixRMaj(new double[][]{{1},{0.1},{2},{0.6}}); alg.applyHessianScaling(); for (int row = 0; row < 4; row++) { double expected = _g.get(row,0)/alg.hessianScaling.get(row); assertEquals(expected, alg.gradient.get(row), UtilEjml.TEST_F64); for (int col = 0; col < 4; col++) { expected = _H.get(row,col)/(alg.hessianScaling.get(row)*alg.hessianScaling.get(col)); assertEquals(expected, H.get(row,col), UtilEjml.TEST_F64); } } }
public MockLevenbergMarquardt() { super(new MatrixMath_DDRM(), new HessianMath_DDRM()); }
public TestHessianMath_DDRM() { super(new HessianMath_DDRM(LinearSolverFactory_DDRM.chol(6))); }