/** * This method returns Random implementation instance associated with calling thread * * @return object implementing Random interface */ public Random getRandom() { try { if (threadRandom.get() == null) { Random t = (Random) randomClass.newInstance(); if (t.getStatePointer() != null) { // TODO: attach this thing to deallocator // if it's stateless random - we just don't care then } threadRandom.set(t); return t; } return threadRandom.get(); } catch (Exception e) { throw new RuntimeException(e); } }
/** * This method returns new onject implementing Random interface, initialized with seed value * * @param seed seed for this rng object * @return object implementing Random interface */ public Random getNewRandomInstance(long seed) { try { Random t = (Random) randomClass.newInstance(); if (t.getStatePointer() != null) { // TODO: attach this thing to deallocator // if it's stateless random - we just don't care then } t.setSeed(seed); return t; } catch (Exception e) { throw new RuntimeException(e); } }
@Override public INDArray sample(INDArray ret) { if (random.getStatePointer() != null) { return Nd4j.getExecutioner().exec(new org.nd4j.linalg.api.ops.random.impl.UniformDistribution( ret, lower, upper), random); } else { val idxIter = new NdIndexIterator(ret.shape()); //For consistent values irrespective of c vs. fortran ordering long len = ret.length(); for (int i = 0; i < len; i++) { ret.putScalar(idxIter.next(), sample()); } return ret; } } }
@Override public INDArray sample(INDArray ret) { if (random.getStatePointer() != null) { if (means != null) { return Nd4j.getExecutioner().exec(new GaussianDistribution( ret, means, standardDeviation), random); } else { return Nd4j.getExecutioner().exec(new GaussianDistribution( ret, mean, standardDeviation), random); } } else { Iterator<long[]> idxIter = new NdIndexIterator(ret.shape()); //For consistent values irrespective of c vs. fortran ordering long len = ret.length(); if (means != null) { for (int i = 0; i < len; i++) { long[] idx = idxIter.next(); ret.putScalar(idx, standardDeviation * random.nextGaussian() + means.getDouble(idx)); } } else { for (int i = 0; i < len; i++) { ret.putScalar(idxIter.next(), standardDeviation * random.nextGaussian() + mean); } } return ret; } } }
@Override public INDArray sample(INDArray ret) { if (random.getStatePointer() != null) { if (p != null) { return Nd4j.getExecutioner()
/** * This method returns Random implementation instance associated with calling thread * * @return object implementing Random interface */ public Random getRandom() { try { if (threadRandom.get() == null) { Random t = (Random) randomClass.newInstance(); if (t.getStatePointer() != null) { // TODO: attach this thing to deallocator // if it's stateless random - we just don't care then } threadRandom.set(t); return t; } return threadRandom.get(); } catch (Exception e) { throw new RuntimeException(e); } }
/** * This method returns new onject implementing Random interface, initialized with seed value * * @param seed seed for this rng object * @return object implementing Random interface */ public Random getNewRandomInstance(long seed) { try { Random t = (Random) randomClass.newInstance(); if (t.getStatePointer() != null) { // TODO: attach this thing to deallocator // if it's stateless random - we just don't care then } t.setSeed(seed); return t; } catch (Exception e) { throw new RuntimeException(e); } }
/** * Apply dropout to the given input * and return the drop out mask used * @param input the input to do drop out on * @param dropout the drop out probability */ public static void applyDropout(INDArray input, double dropout) { if (Nd4j.getRandom().getStatePointer() != null) { Nd4j.getExecutioner().exec(new DropOutInverted(input, dropout)); } else { Nd4j.getExecutioner().exec(new LegacyDropOutInverted(input, dropout)); } }
@Override public INDArray sample(int[] shape) { if (random.getStatePointer() != null) { return Nd4j.getExecutioner().exec(new org.nd4j.linalg.api.ops.random.impl.UniformDistribution( Nd4j.createUninitialized(shape, Nd4j.order()), lower, upper), random); } else { INDArray ret = Nd4j.createUninitialized(shape, Nd4j.order()); Iterator<int[]> idxIter = new NdIndexIterator(shape); //For consistent values irrespective of c vs. fortran ordering int len = ret.length(); for (int i = 0; i < len; i++) { ret.putScalar(idxIter.next(), sample()); } return ret; } } }
@Override public INDArray sample(int[] shape) { if (random.getStatePointer() != null) { if (means != null) { return Nd4j.getExecutioner().exec(new GaussianDistribution( Nd4j.createUninitialized(shape, Nd4j.order()), means, standardDeviation), random); } else { return Nd4j.getExecutioner().exec(new GaussianDistribution( Nd4j.createUninitialized(shape, Nd4j.order()), mean, standardDeviation), random); } } else { INDArray ret = Nd4j.createUninitialized(shape, Nd4j.order()); Iterator<int[]> idxIter = new NdIndexIterator(shape); //For consistent values irrespective of c vs. fortran ordering int len = ret.length(); if (means != null) { for (int i = 0; i < len; i++) { int[] idx = idxIter.next(); ret.putScalar(idx, standardDeviation * random.nextGaussian() + means.getDouble(idx)); } } else { for (int i = 0; i < len; i++) { ret.putScalar(idxIter.next(), standardDeviation * random.nextGaussian() + mean); } } return ret; } } }
/** * Apply drop connect to the given variable * @param layer the layer with the variables * @param variable the variable to apply * @return the post applied drop connect */ public static INDArray applyDropConnect(Layer layer, String variable) { INDArray result = layer.getParam(variable).dup(); if (Nd4j.getRandom().getStatePointer() != null) { Nd4j.getExecutioner().exec(new DropOut(result, result, layer.conf().getLayer().getDropOut())); } else { Nd4j.getExecutioner().exec(new LegacyDropOut(result, result, layer.conf().getLayer().getDropOut())); } return result; }
@Override public INDArray sample(int[] shape) { if (random.getStatePointer() != null) { if (p != null) { return Nd4j.getExecutioner()
nativeOps.execRandomFloat(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (FloatPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (IntPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.execRandomDouble(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (DoublePointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (IntPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.execRandomHalf(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (ShortPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (IntPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), nativeOps.execRandomFloat(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (FloatPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (IntPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.execRandomDouble(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (DoublePointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (IntPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.execRandomHalf(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr
nativeOps.execRandomFloat(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (FloatPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (LongPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.execRandomDouble(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (DoublePointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (LongPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context), context)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.execRandomHalf(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (ShortPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (LongPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), nativeOps.execRandomFloat(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (FloatPointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (LongPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.execRandomDouble(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr (DoublePointer) AtomicAllocator.getInstance().getPointer(op.x(), context), (LongPointer) AtomicAllocator.getInstance().getPointer(op.x().shapeInfoDataBuffer(), context)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.execRandomHalf(extraZZ, op.opNum(), rng.getStatePointer(), // rng state ptr