@Operator(group="math") public final class CompareAndBitpack extends PrimitiveOp implements Operand<UInt8>
Each comparison returns a boolean `true` (if `input_value > threshold`) or and `false` otherwise.
This operation is useful for Locality-Sensitive-Hashing (LSH) and other algorithms that use hashing approximations of cosine and `L2` distances; codes can be generated from an input via:
codebook_size = 50
codebook_bits = codebook_size * 32
codebook = tf.get_variable('codebook', [x.shape[-1].value, codebook_bits],
dtype=x.dtype,
initializer=tf.orthogonal_initializer())
codes = compare_and_threshold(tf.matmul(x, codebook), threshold=0.)
codes = tf.bitcast(codes, tf.int32) # go from uint8 to int32
# now codes has shape x.shape[:-1] + [codebook_size]
NOTE: Currently, the innermost dimension of the tensor must be divisible
by 8.
Given an `input` shaped `[s0, s1, ..., s_n]`, the output is a `uint8` tensor shaped `[s0, s1, ..., s_n / 8]`.
operation
Modifier and Type | Method and Description |
---|---|
Output<UInt8> |
asOutput()
Returns the symbolic handle of a tensor.
|
static <T> CompareAndBitpack |
create(Scope scope,
Operand<T> input,
Operand<T> threshold)
Factory method to create a class wrapping a new CompareAndBitpack operation.
|
Output<UInt8> |
output()
The bitpacked comparisons.
|
equals, hashCode, op, toString
public static <T> CompareAndBitpack create(Scope scope, Operand<T> input, Operand<T> threshold)
scope
- current scopeinput
- Values to compare against `threshold` and bitpack.threshold
- Threshold to compare against.public Output<UInt8> asOutput()
Operand
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.
asOutput
in interface Operand<UInt8>
OperationBuilder.addInput(Output)
Copyright © 2022. All rights reserved.