dropoutGPU<T> function

GPUTensor<T> dropoutGPU<T>(
  1. GPUTensor<T> input,
  2. double rate,
  3. CommandBuffer tape
)

Implementation

GPUTensor<T> dropoutGPU<T>(GPUTensor<T> input, double rate, CommandBuffer tape) {
  int seed = Random().nextInt(1000000);

  GPUTensor<T> out = GPUTensor<T>.empty(input.shape);
  GPUTensor<T> mask = GPUTensor<T>.empty(input.shape);

  tape.putInt(OP_DROPOUT_FORWARD);
  tape.putString(input.id);
  tape.putString(out.id);
  tape.putString(mask.id);
  tape.putFloat(rate);
  tape.putInt(seed);

  int elementCount = 1;
  for (int i = 0; i < input.shape.length; i = i + 1) {
    elementCount = elementCount * input.shape[i];
  }

  out.creator = GPUNode(
    <GPUTensor>[input],
        (CommandBuffer bTape) {
      bTape.putInt(OP_DROPOUT_BACKWARD);
      bTape.putString('${out.id}_grad');
      bTape.putString(mask.id);
      bTape.putString('${input.id}_grad');
    },
    opName: 'dropout_gpu',
    cost: elementCount * 2,
  );

  return out;
}