function denseBincount_(x, weights, size, binaryOutput = false) {
    const $x = (0, _tensorUtilEnv.convertToTensor)(x, "x", "denseBincount");
    const $weights = (0, _tensorUtilEnv.convertToTensor)(weights, "weights", "denseBincount");
    _util.assert($x.dtype === "int32", ()=>`Error in denseBincount: input ` + `dtype must be int32, but got ${$x.dtype}`);
    _util.assert($x.rank <= 2, ()=>`Error in denseBincount: input must be at most rank 2, but got ` + `rank ${$x.rank}.`);
    _util.assert(size >= 0, ()=>`size must be non-negative, but got ${size}.`);
    _util.assert($weights.size === $x.size || $weights.size === 0, ()=>`Error in denseBincount: weights must have the same shape as x or ` + `0-length, but got x shape: ${$x.shape}, weights shape: ` + `${$weights.shape}.`);
    const inputs = {
        x: $x,
        weights: $weights
    };
    const attrs = {
        size,
        binaryOutput
    };
    return (0, _engine.ENGINE).runKernel((0, _kernelNames.DenseBincount), inputs, attrs);
}
Outputs a vector with length `size` and the same dtype as `weights`.

If `weights` are empty, then index `i` stores the number of times the value
`i` is counted in `x`. If `weights` are non-empty, then index `i` stores the
sum of the value in `weights` at each index where the corresponding value in
`x` is `i`.

Values in `x` outside of the range [0, size) are ignored.

@param x The input int tensor, rank 1 or rank 2.
@param weights The weights tensor, must have the same shape as x, or a
    length-0 Tensor, in which case it acts as all weights equal to 1.
@param size Non-negative integer.
@param binaryOutput Optional. Whether the kernel should count the appearance
    or number of occurrences. Defaults to False.

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