@Override public Number percentileNumber(Number quantile) { if (quantile.intValue() < 0 || quantile.intValue() > 100) throw new ND4JIllegalStateException("Percentile value should be in 0...100 range"); if (isScalar()) return this.getDouble(0); INDArray sorted = Nd4j.sort(this.dup(this.ordering()), true); return getPercentile(quantile, sorted); }
/** * Returns entropy value for this INDArray * @return */ @Override public Number entropyNumber() { return entropy(Integer.MAX_VALUE).getDouble(0); }
return muli(other.getDouble(0), result); if (isScalar()) { return other.muli(getDouble(0), result); Nd4j.getBlasWrapper().level2().gemv(ordering(), BlasBufferUtil.getCharForTranspose(other), 1.0, this, other, 0.0, gemmResultArr); } else { if (isView() && isVector()) { return dup().mmuli(other, gemmResultArr); Nd4j.getBlasWrapper().level3().gemm(ordering(), BlasBufferUtil.getCharForTranspose(other), BlasBufferUtil.getCharForTranspose(gemmResultArr), 1.0, this, other, 0.0, gemmResultArr);
droti(N, X, sparseX.getVectorCoordinates(), Y, c, s); break; case FLOAT: sroti(N, X, sparseX.getVectorCoordinates(), Y, c, s); break; case HALF: hroti(N, X, sparseX.getVectorCoordinates(), Y, c, s); break; default:
@Override public INDArray getScalar(int... indices) { return super.getScalar(indices); }
@Override public int getInt(int... indices) { return super.getInt(indices); }
@Override public boolean equals(Object o) { return equalsWithEps(o, Nd4j.EPS_THRESHOLD); }
/** * computes a vector-vector dot product. * * @param n number of accessed element * @param alpha * @param X an INDArray * @param Y an INDArray * @return the vector-vector dot product of X and Y */ @Override public double dot(long n, double alpha, INDArray X, INDArray Y) { if (X instanceof BaseSparseNDArray) { BaseSparseNDArray sparseX = (BaseSparseNDArray) X; DataBuffer pointers = sparseX.getVectorCoordinates(); switch (X.data().dataType()) { case DOUBLE: DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, X, Y); return ddoti(n, X, pointers, Y); case FLOAT: DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, X, Y); return sdoti(n, X, pointers, Y); case HALF: DefaultOpExecutioner.validateDataType(DataBuffer.Type.HALF, X, Y); return hdoti(n, X, pointers, Y); default: } } throw new UnsupportedOperationException(); }
@Override public INDArray percentile(Number quantile, int... dimension) { if (quantile.doubleValue() < 0 || quantile.doubleValue() > 100) throw new ND4JIllegalStateException("Percentile value should be in 0...100 range"); if (isScalar()) return Nd4j.scalar(this.getDouble(0)); INDArray sorted = Nd4j.getNDArrayFactory().sort(this.dup(this.ordering()), false, dimension); // there's no practical sense doing this on GPU, stride will be just size of TAD. INDArray ret = Nd4j.createUninitialized(sorted.tensorssAlongDimension(dimension)); for (int i = 0; i < ret.length(); i++) { ret.putScalar(i, getPercentile(quantile, sorted.tensorAlongDimension(i, dimension))); } return ret; }
public void axpy(long n, double alpha, INDArray x, INDArray y) { BaseSparseNDArray sparseX = (BaseSparseNDArray) x; DataBuffer pointers = sparseX.getVectorCoordinates(); switch (x.data().dataType()) { case DOUBLE: