tensorflow::
ops::
CompareAndBitpack
#include <math_ops.h>
Compare values of
input
to
threshold
and pack resulting bits into a
uint8
.
Summary
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]
.
Args:
- scope: A Scope object
-
input: Values to compare against
threshold
and bitpack. - threshold: Threshold to compare against.
Returns:
-
Output
: The bitpacked comparisons.
Constructors and Destructors |
|
---|---|
CompareAndBitpack
(const ::
tensorflow::Scope
& scope, ::
tensorflow::Input
input, ::
tensorflow::Input
threshold)
|
Public attributes |
|
---|---|
operation
|
|
output
|
Public functions |
|
---|---|
node
() const
|
::tensorflow::Node *
|
operator::tensorflow::Input
() const
|
|
operator::tensorflow::Output
() const
|
|
Public attributes
Public functions
CompareAndBitpack
CompareAndBitpack( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input threshold )
node
::tensorflow::Node * node() const
operator::tensorflow::Input
operator::tensorflow::Input() const
operator::tensorflow::Output
operator::tensorflow::Output() const