/** * Apply scaling to gradient and Hessian */ protected void applyHessianScaling() { CommonOps_DDRM.elementDiv(gradient, hessianScaling); hessian.divideRowsCols(hessianScaling); }
/** * Apply scaling to gradient and Hessian */ protected void applyHessianScaling() { CommonOps_DDRM.elementDiv(gradient, hessianScaling); hessian.divideRowsCols(hessianScaling); }
@Test public void divideRowsCols() { DMatrixRMaj M = RandomMatrices_DDRM.symmetricPosDef(10,rand); DMatrixRMaj scale = RandomMatrices_DDRM.rectangle(10,1,0,1,rand); DMatrixRMaj expected = M.copy(); CommonOps_DDRM.divideRows(scale.data,expected); CommonOps_DDRM.divideCols(expected,scale.data); setHessian(alg,M); alg.divideRowsCols(scale); // Not a great unit test since it doesn't check the off diagonal elements DMatrixRMaj found = RandomMatrices_DDRM.rectangle(10,1,rand); alg.extractDiagonals(found); for (int i = 0; i < M.numRows; i++) { assertEquals(expected.get(i,i),found.get(i), UtilEjml.TEST_F64); } }