@Override public void init(INDArray x, INDArray y, INDArray z, long n) { super.init(x, y, z, n); if (Nd4j.executionMode == OpExecutioner.ExecutionMode.JAVA) { if (biasCorrected) this.bias = Nd4j.getExecutioner().execAndReturn(new Bias(x)).getFinalResult().doubleValue(); mean = Nd4j.getExecutioner().execAndReturn(new Mean(x)).getFinalResult().doubleValue(); } }
@Override public String tensorflowName() { throw new NoOpNameFoundException("No tensorflow op opName found for " + opName()); }
@Override public Op opForDimension(int index, int... dimension) { INDArray xAlongDimension = x.tensorAlongDimension(index, dimension); if (y() != null) return new Bias(xAlongDimension, y.tensorAlongDimension(index, dimension), xAlongDimension.length()); else return new Bias(x.tensorAlongDimension(index, dimension)); }
@Override public void exec(int... dimension) { int[] retShape = ArrayUtil.removeIndex(x.shape(), dimension); int nOps = x.tensorssAlongDimension(dimension); z = Nd4j.create(retShape); for (int i = 0; i < nOps; i++) { double d = Nd4j.getExecutioner().execAndReturn((Bias) opForDimension(i, dimension)).getFinalResult() .doubleValue(); z.putScalar(i, d); } } }
@Override public Op opForDimension(int index, int dimension) { INDArray xAlongDimension = x.vectorAlongDimension(index, dimension); if (y() != null) return new Bias(xAlongDimension, y.vectorAlongDimension(index, dimension), xAlongDimension.length()); else return new Bias(x.vectorAlongDimension(index, dimension)); }
@Override public void init(INDArray x, INDArray y, INDArray z, long n) { super.init(x, y, z, n); if (Nd4j.executionMode == OpExecutioner.ExecutionMode.JAVA) { if (biasCorrected) this.bias = Nd4j.getExecutioner().execAndReturn(new Bias(x)).getFinalResult().doubleValue(); mean = Nd4j.getExecutioner().execAndReturn(new Mean(x)).getFinalResult().doubleValue(); } }
@Override public String onnxName() { throw new NoOpNameFoundException("No onnx op opName found for " + opName()); }
@Override public void exec() { if (biasCorrected) this.bias = Nd4j.getExecutioner().execAndReturn(new Bias(x)).getFinalResult().doubleValue(); this.mean = Nd4j.getExecutioner().execAndReturn(new Mean(x)).getFinalResult().doubleValue(); INDArray xSubMean = x.sub(mean); INDArray squared = xSubMean.muli(xSubMean); double accum = Nd4j.getExecutioner().execAndReturn(new Sum(squared)).getFinalResult().doubleValue(); getAndSetFinalResult(accum); this.z = Nd4j.scalar(this.finalResult); }