File NeuralNet.h
- 
namespace faiss
- Implementation of k-means clustering with many variants. - Copyright (c) Facebook, Inc. and its affiliates. - This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree. - IDSelector is intended to define a subset of vectors to handle (for removal or as subset to search) - PQ4 SIMD packing and accumulation functions - The basic kernel accumulates nq query vectors with bbs = nb * 2 * 16 vectors and produces an output matrix for that. It is interesting for nq * nb <= 4, otherwise register spilling becomes too large. - The implementation of these functions is spread over 3 cpp files to reduce parallel compile times. Templates are instantiated explicitly. - This file contains callbacks for kernels that compute distances. - Throughout the library, vectors are provided as float * pointers. Most algorithms can be optimized when several vectors are processed (added/searched) together in a batch. In this case, they are passed in as a matrix. When n vectors of size d are provided as float * x, component j of vector i is - x[ i * d + j ] - where 0 <= i < n and 0 <= j < d. In other words, matrices are always compact. When specifying the size of the matrix, we call it an n*d matrix, which implies a row-major storage. - I/O functions can read/write to a filename, a file handle or to an object that abstracts the medium. - The read functions return objects that should be deallocated with delete. All references within these objectes are owned by the object. - Definition of inverted lists + a few common classes that implement the interface. - Since IVF (inverted file) indexes are of so much use for large-scale use cases, we group a few functions related to them in this small library. Most functions work both on IndexIVFs and IndexIVFs embedded within an IndexPreTransform. - In this file are the implementations of extra metrics beyond L2 and inner product - Implements a few neural net layers, mainly to support QINCo - Defines a few objects that apply transformations to a set of vectors Often these are pre-processing steps. - 
struct QINCoStep
 - 
struct NeuralNetCodec
- Subclassed by faiss::QINCo 
 - 
struct QINCo : public faiss::NeuralNetCodec
 - 
namespace nn
- 
- 
template<typename T>
 struct Tensor2DTemplate
- Public Functions - 
Tensor2DTemplate &operator+=(const Tensor2DTemplate&)
 - 
Tensor2DTemplate column(size_t j) const
- get column #j as a 1-column Tensor2D 
 - 
inline size_t numel() const
 
- 
Tensor2DTemplate &operator+=(const Tensor2DTemplate&)
 - 
struct Linear
- #include <NeuralNet.h>minimal translation of nn.Linear Public Functions - 
Linear(size_t in_features, size_t out_features, bool bias = true)
 
- 
Linear(size_t in_features, size_t out_features, bool bias = true)
 - 
struct Embedding
- #include <NeuralNet.h>minimal translation of nn.Embedding 
 - 
struct FFN
- #include <NeuralNet.h>Feed forward layer that expands to a hidden dimension, applies a ReLU non linearity and maps back to the orignal dimension 
 
- 
template<typename T>
 
- 
struct QINCoStep