RngReadAndSkip

public final class RngReadAndSkip

Advance the counter of a counter-based RNG.

The state of the RNG after `rng_read_and_skip(n)` will be the same as that after `uniform([n])` (or any other distribution). The actual increment added to the counter is an unspecified implementation choice.

In the case that the input algorithm is RNG_ALG_AUTO_SELECT, the counter in the state needs to be of size int64[2], the current maximal counter size among algorithms. In this case, this op will manage the counter as if it is an 128-bit integer with layout [lower_64bits, higher_64bits]. If an algorithm needs less than 128 bits for the counter, it should use the left portion of the int64[2]. In this way, the int64[2] is compatible with all current RNG algorithms (Philox, ThreeFry and xla::RandomAlgorithm::RNG_DEFAULT). Downstream RNG ops can thus use this counter with any RNG algorithm.

Public Methods

Output<Long>
asOutput()
Returns the symbolic handle of a tensor.
static RngReadAndSkip
create(Scope scope, Operand<?> resource, Operand<Integer> alg, Operand<?> delta)
Factory method to create a class wrapping a new RngReadAndSkip operation.
Output<Long>
value()
The old value of the resource variable, before incrementing.

Inherited Methods

Public Methods

public Output<Long> asOutput ()

Returns the symbolic handle of a tensor.

Inputs to TensorFlow operations are outputs of another TensorFlow operation. This method is used to obtain a symbolic handle that represents the computation of the input.

public static RngReadAndSkip create (Scope scope, Operand<?> resource, Operand<Integer> alg, Operand<?> delta)

Factory method to create a class wrapping a new RngReadAndSkip operation.

Parameters
scope current scope
resource The handle of the resource variable that stores the state of the RNG. The state consists of the counter followed by the key.
alg The RNG algorithm.
delta The amount of advancement.
Returns
  • a new instance of RngReadAndSkip

public Output<Long> value ()

The old value of the resource variable, before incrementing. Since state size is algorithm-dependent, this output will be right-padded with zeros to reach shape int64[3] (the current maximal state size among algorithms).