RandomFourierFeatureMapper
Defined in tensorflow/contrib/kernel_methods/python/mappers/random_fourier_features.py
.
Class that implements Random Fourier Feature Mapping (RFFM) in TensorFlow.
The RFFM mapping is used to approximate the Gaussian (RBF) kernel:
<div> $$(exp(-||x-y||_2^2 / (2 * \sigma^2))$$ </div>
The implementation of RFFM is based on the following paper: "Random Features for Large-Scale Kernel Machines" by Ali Rahimi and Ben Recht. (link: https://people.eecs.berkeley.edu/~brecht/papers/07.rah.rec.nips.pdf)
The mapping uses a matrix \\(Omega \in R^{d x D}\\)
and a bias vector \\(b \in R^D\\)
where d
is the input dimension (number of dense input features) and D
is the output dimension (i.e., dimension of the feature space the input is mapped to). Each entry of Omega
is sampled i.i.d. from a (scaled) Gaussian distribution and each entry of b
is sampled independently and uniformly from [0, \(2 * pi\)].
For a single input feature vector x in R^d, its RFFM is defined as:
<div> $$sqrt(2/D) * cos(x * Omega + b)$$ </div>
where cos
is the element-wise cosine function and x, b
are represented as row vectors. The aforementioned paper shows that the linear kernel of RFFM-mapped vectors approximates the Gaussian kernel of the initial vectors.
input_dim
name
Returns a name for the RandomFourierFeatureMapper
instance.
If the name provided in the constructor is None
, then the object's unique id is returned.
A name for the RandomFourierFeatureMapper
instance.
output_dim
Returns the output dimension of the mapping.
__init__
__init__( input_dim, output_dim, stddev=1.0, seed=1, name=None )
Constructs a RandomFourierFeatureMapper instance.
input_dim
: The dimension (number of features) of the tensors to be mapped.output_dim
: The output dimension of the mapping.stddev
: The standard deviation of the Gaussian kernel to be approximated. The error of the classifier trained using this approximation is very sensitive to this parameter.seed
: An integer used to initialize the parameters (Omega
and b
) of the mapper. For repeatable sequences across different invocations of the mapper object (for instance, to ensure consistent mapping both at training and eval/inference if these happen in different invocations), set this to the same integer.name
: name for the mapper object.map
map(input_tensor)
Maps each row of input_tensor using random Fourier features.
input_tensor
: a Tensor
containing input features. It's shape is [batch_size, self._input_dim].A Tensor
of shape [batch_size, self._output_dim] containing RFFM-mapped features.
InvalidShapeError
: if the shape of the input_tensor
is inconsistent with expected input dimension.
© 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/python/tf/contrib/kernel_methods/RandomFourierFeatureMapper