function dropout_(x, rate, noiseShape, seed) {
    const $x = (0, _tensorUtilEnv.convertToTensor)(x, "x", "dropout");
    _util.assert($x.dtype === "float32", ()=>`x has to be a floating point tensor since it's going to be ` + `scaled, but got a ${$x.dtype} tensor instead.`);
    _util.assert(rate >= 0 && rate < 1, ()=>`rate must be a float in the range [0, 1), but got ${rate}.`);
    if (rate === 0) return x instanceof (0, _tensor.Tensor) ? $x.clone() : $x;
    const $noiseShape = (0, _dropoutUtil.getNoiseShape)($x, noiseShape);
    const keepProb = 1 - rate;
    const multiplier = (0, _div.div)((0, _floor.floor)((0, _add.add)((0, _randomUniform.randomUniform)($noiseShape, 0, 1, "float32", seed), keepProb)), keepProb);
    return (0, _mul.mul)($x, multiplier);
}
Computes dropout.

```js
const x = tf.tensor1d([1, 2, 2, 1]);
const rate = 0.75;
const output = tf.dropout(x, rate);
output.print();
```

@param x A floating point Tensor or TensorLike.
@param rate A float in the range [0, 1). The probability that each element
  of x is discarded.
@param noiseShape An array of numbers of type int32, representing the
shape for randomly generated keep/drop flags. If the noiseShape has null
value, it will be automatically replaced with the x's relative dimension
size. Optional.
@param seed Used to create random seeds. Optional.
@returns A Tensor of the same shape of x.

@doc {heading: 'Operations', subheading: 'Dropout'}