maxable.setParameters(parameters);
maxable.setParameters(parameters);
maxable.setParameters(parameters);
private void computeHessianProduct(Optimizable.ByBatchGradient maxable, double[] parameters, int batchIndex, int[] batchAssignments, double[] currentGradient, double[] vector, double[] result) { int numParameters = maxable.getNumParameters(); double eps = 1.0e-6; double[] epsGradient = new double[numParameters]; double[] oldParameters = new double[numParameters]; // adjust parameters by (eps * vector) and recompute gradient System.arraycopy(parameters,0,oldParameters,0,numParameters); MatrixOps.plusEquals(parameters, vector, eps); maxable.setParameters(parameters); maxable.getBatchValueGradient(epsGradient, batchIndex, batchAssignments); // restore old parameters maxable.setParameters(oldParameters); // calculate Hessian product for (int index = 0; index < result.length; index++) { result[index] = (-epsGradient[index] - currentGradient[index]) / eps; } }
private void computeHessianProduct(Optimizable.ByBatchGradient maxable, double[] parameters, int batchIndex, int[] batchAssignments, double[] currentGradient, double[] vector, double[] result) { int numParameters = maxable.getNumParameters(); double eps = 1.0e-6; double[] epsGradient = new double[numParameters]; double[] oldParameters = new double[numParameters]; // adjust parameters by (eps * vector) and recompute gradient System.arraycopy(parameters,0,oldParameters,0,numParameters); MatrixOps.plusEquals(parameters, vector, eps); maxable.setParameters(parameters); maxable.getBatchValueGradient(epsGradient, batchIndex, batchAssignments); // restore old parameters maxable.setParameters(oldParameters); // calculate Hessian product for (int index = 0; index < result.length; index++) { result[index] = (-epsGradient[index] - currentGradient[index]) / eps; } }
private void computeHessianProduct(Optimizable.ByBatchGradient maxable, double[] parameters, int batchIndex, int[] batchAssignments, double[] currentGradient, double[] vector, double[] result) { int numParameters = maxable.getNumParameters(); double eps = 1.0e-6; double[] epsGradient = new double[numParameters]; double[] oldParameters = new double[numParameters]; // adjust parameters by (eps * vector) and recompute gradient System.arraycopy(parameters,0,oldParameters,0,numParameters); MatrixOps.plusEquals(parameters, vector, eps); maxable.setParameters(parameters); maxable.getBatchValueGradient(epsGradient, batchIndex, batchAssignments); // restore old parameters maxable.setParameters(oldParameters); // calculate Hessian product for (int index = 0; index < result.length; index++) { result[index] = (-epsGradient[index] - currentGradient[index]) / eps; } }