/** * Returns the product along a given dimension * * @param dimension the dimension to getScalar the product along * @return the product along the specified dimension */ @Override public INDArray prod(int... dimension) { return Nd4j.getExecutioner().exec(new Prod(this), dimension); }
@Override public List<SDVariable> doDiff(List<SDVariable> i_v1) { SDVariable prod = outputVariables()[0]; int origRank = Shape.rankFromShape(arg().getShape()); //TODO shape may not always be defined? SDVariable broadcastableGrad = sameDiff.f().reductionBroadcastableWithOrigShape(origRank, dimensions, i_v1.get(0)); SDVariable broadcastableProd = sameDiff.f().reductionBroadcastableWithOrigShape(origRank, dimensions, prod); SDVariable mul = broadcastableGrad.div(arg()); SDVariable ret = broadcastableProd.mul(mul); return Arrays.asList(ret); }
@Override public float zeroHalf() { return zeroFloat(); }
public SDVariable prod(SDVariable i_x, int... dimensions) { return new Prod(sameDiff(), i_x, dimensions).outputVariables()[0]; }
@Override public Op opForDimension(int index, int dimension) { INDArray xAlongDimension = x.vectorAlongDimension(index, dimension); if (y() != null) return new Prod(xAlongDimension, y.vectorAlongDimension(index, dimension), xAlongDimension.length()); else return new Prod(x.vectorAlongDimension(index, dimension)); }
@Override public Op opForDimension(int index, int... dimension) { INDArray xAlongDimension = x.tensorAlongDimension(index, dimension); if (y() != null) return new Prod(xAlongDimension, y.tensorAlongDimension(index, dimension), xAlongDimension.length()); else return new Prod(x.tensorAlongDimension(index, dimension)); }
Prod[] p = new Prod[3]; for(i = 0;i<3;i++) p[i] = new Prod(); // added this line // rest of code
@Override public float zeroHalf() { return zeroFloat(); }
Prod[] p = new Prod[3]; for(i = 0;i<3;i++){ p[i] = new Prod(); // this will assign in each // rest your logic. }
public class Main{ Data d; public static void main(String s[]) throws InterruptedException{ Main m = new Main(); Prod p = new Prod(m); Cons c = new Cons(m); new Thread(p).start(); new Thread(c).start(); }
/** * Returns the product along a given dimension * * @param dimension the dimension to getScalar the product along * @return the product along the specified dimension */ @Override public INDArray prod(int... dimension) { return Nd4j.getExecutioner().exec(new Prod(this), dimension); }
break; case "prod": ret = new Prod(x, y,z, x.length()); break; case "std":