dropoutGPU<T> function
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;
}