#include <math_ops.h>
Compare values of input
to threshold
and pack resulting bits into a 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]
.
Arguments:
threshold
and bitpack.Returns:
Output
: The bitpacked comparisons. Constructors and Destructors | |
---|---|
CompareAndBitpack(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input threshold) |
Public attributes | |
---|---|
output |
Public functions | |
---|---|
node() const | ::tensorflow::Node * |
operator::tensorflow::Input() const | |
operator::tensorflow::Output() const |
::tensorflow::Output output
CompareAndBitpack( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input threshold )
::tensorflow::Node * node() const
operator::tensorflow::Input() const
operator::tensorflow::Output() const
© 2018 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/compare-and-bitpack.html