@Override public double nrm2(INDArray x) { LinAlgExceptions.assertVector(x); return level1().nrm2(x); }
@Override public IComplexNumber nrm2(IComplexNDArray x) { LinAlgExceptions.assertVector(x); return level1().nrm2(x); }
/** * computes the Euclidean norm of a vector. * * @param arr * @return */ @Override public double nrm2(INDArray arr) { if (arr.isSparse()) { return Nd4j.getSparseBlasWrapper().level1().nrm2(arr); } if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, arr); if (arr.isSparse()) { return Nd4j.getSparseBlasWrapper().level1().nrm2(arr); } if (arr.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, arr); return dnrm2(arr.length(), arr, BlasBufferUtil.getBlasStride(arr)); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, arr); return snrm2(arr.length(), arr, BlasBufferUtil.getBlasStride(arr)); } // TODO: add nrm2 for half, as call to appropriate NativeOp<HALF> }
@Override public double nrm2(INDArray x) { LinAlgExceptions.assertVector(x); return level1().nrm2(x); }
@Override public IComplexNumber nrm2(IComplexNDArray x) { LinAlgExceptions.assertVector(x); return level1().nrm2(x); }
@Override public void postStep(INDArray gradient) { double norm2 = Nd4j.getBlasWrapper().level1().nrm2(gradient); if (norm2 > stepMax) searchState.put(SEARCH_DIR, gradient.dup().muli(stepMax / norm2)); else searchState.put(SEARCH_DIR, gradient.dup()); searchState.put(GRADIENT_KEY, gradient.dup()); }
double sum = l1Blas.nrm2(searchDirection); double slope = -1f * Nd4j.getBlasWrapper().dot(searchDirection, gradients);