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 | |
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).