|
static void | AdamUpdate (TMatrixT< AReal > &A, const TMatrixT< AReal > &M, const TMatrixT< AReal > &V, AReal alpha, AReal eps) |
| Update functions for ADAM optimizer.
|
|
static void | AdamUpdateFirstMom (TMatrixT< AReal > &A, const TMatrixT< AReal > &B, AReal beta) |
|
static void | AdamUpdateSecondMom (TMatrixT< AReal > &A, const TMatrixT< AReal > &B, AReal beta) |
|
static void | AddBiases (TMatrixT< AReal > &A, const TMatrixT< AReal > &biases) |
|
static void | ConstAdd (TMatrixT< AReal > &A, AReal beta) |
| Add the constant beta to all the elements of matrix A and write the result into A .
|
|
static void | ConstMult (TMatrixT< AReal > &A, AReal beta) |
| Multiply the constant beta to all the elements of matrix A and write the result into A .
|
|
static void | ConvLayerForward (std::vector< TMatrixT< AReal > > &, std::vector< TMatrixT< AReal > > &, const std::vector< TMatrixT< AReal > > &, const TMatrixT< AReal > &, const TMatrixT< AReal > &, const DNN::CNN::TConvParams &, EActivationFunction, std::vector< TMatrixT< AReal > > &) |
| Forward propagation in the Convolutional layer.
|
|
static void | CorruptInput (TMatrixT< AReal > &input, TMatrixT< AReal > &corruptedInput, AReal corruptionLevel) |
|
static void | EncodeInput (TMatrixT< AReal > &input, TMatrixT< AReal > &compressedInput, TMatrixT< AReal > &Weights) |
|
static void | ForwardLogReg (TMatrixT< AReal > &input, TMatrixT< AReal > &p, TMatrixT< AReal > &fWeights) |
|
static void | Hadamard (TMatrixT< AReal > &A, const TMatrixT< AReal > &B) |
| In-place Hadamard (element-wise) product of matrices A and B with the result being written into A .
|
|
static void | PrepareInternals (std::vector< TMatrixT< AReal > > &) |
| Dummy placeholder - preparation is currently only required for the CUDA architecture.
|
|
static void | ReciprocalElementWise (TMatrixT< AReal > &A) |
| Reciprocal each element of the matrix A and write the result into A .
|
|
static void | ReconstructInput (TMatrixT< AReal > &compressedInput, TMatrixT< AReal > &reconstructedInput, TMatrixT< AReal > &fWeights) |
|
static void | SoftmaxAE (TMatrixT< AReal > &A) |
|
static void | SqrtElementWise (TMatrixT< AReal > &A) |
| Square root each element of the matrix A and write the result into A .
|
|
static void | SquareElementWise (TMatrixT< AReal > &A) |
| Square each element of the matrix A and write the result into A .
|
|
static void | SumColumns (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
| Sum columns of (m x n) matrix A and write the results into the first m elements in A .
|
|
static void | UpdateParams (TMatrixT< AReal > &x, TMatrixT< AReal > &tildeX, TMatrixT< AReal > &y, TMatrixT< AReal > &z, TMatrixT< AReal > &fVBiases, TMatrixT< AReal > &fHBiases, TMatrixT< AReal > &fWeights, TMatrixT< AReal > &VBiasError, TMatrixT< AReal > &HBiasError, AReal learningRate, size_t fBatchSize) |
|
static void | UpdateParamsLogReg (TMatrixT< AReal > &input, TMatrixT< AReal > &output, TMatrixT< AReal > &difference, TMatrixT< AReal > &p, TMatrixT< AReal > &fWeights, TMatrixT< AReal > &fBiases, AReal learningRate, size_t fBatchSize) |
|
|
Low-level functions required for the forward propagation of activations through the network.
|
static void | MultiplyTranspose (TMatrixT< Scalar_t > &output, const TMatrixT< Scalar_t > &input, const TMatrixT< Scalar_t > &weights) |
| Matrix-multiply input with the transpose of weights and write the results into output .
|
|
static void | AddRowWise (TMatrixT< Scalar_t > &output, const TMatrixT< Scalar_t > &biases) |
| Add the vectors biases row-wise to the matrix output.
|
|
|
Low-level functions required for the forward propagation of activations through the network.
|
static void | Backward (TMatrixT< Scalar_t > &activationGradientsBackward, TMatrixT< Scalar_t > &weightGradients, TMatrixT< Scalar_t > &biasGradients, TMatrixT< Scalar_t > &df, const TMatrixT< Scalar_t > &activationGradients, const TMatrixT< Scalar_t > &weights, const TMatrixT< Scalar_t > &activationBackward) |
| Perform the complete backward propagation step.
|
|
static Matrix_t & | RecurrentLayerBackward (TMatrixT< Scalar_t > &state_gradients_backward, TMatrixT< Scalar_t > &input_weight_gradients, TMatrixT< Scalar_t > &state_weight_gradients, TMatrixT< Scalar_t > &bias_gradients, TMatrixT< Scalar_t > &df, const TMatrixT< Scalar_t > &state, const TMatrixT< Scalar_t > &weights_input, const TMatrixT< Scalar_t > &weights_state, const TMatrixT< Scalar_t > &input, TMatrixT< Scalar_t > &input_gradient) |
| Backpropagation step for a Recurrent Neural Network.
|
|
static Matrix_t & | LSTMLayerBackward (TMatrixT< Scalar_t > &state_gradients_backward, TMatrixT< Scalar_t > &cell_gradients_backward, TMatrixT< Scalar_t > &input_weight_gradients, TMatrixT< Scalar_t > &forget_weight_gradients, TMatrixT< Scalar_t > &candidate_weight_gradients, TMatrixT< Scalar_t > &output_weight_gradients, TMatrixT< Scalar_t > &input_state_weight_gradients, TMatrixT< Scalar_t > &forget_state_weight_gradients, TMatrixT< Scalar_t > &candidate_state_weight_gradients, TMatrixT< Scalar_t > &output_state_weight_gradients, TMatrixT< Scalar_t > &input_bias_gradients, TMatrixT< Scalar_t > &forget_bias_gradients, TMatrixT< Scalar_t > &candidate_bias_gradients, TMatrixT< Scalar_t > &output_bias_gradients, TMatrixT< Scalar_t > &di, TMatrixT< Scalar_t > &df, TMatrixT< Scalar_t > &dc, TMatrixT< Scalar_t > &dout, const TMatrixT< Scalar_t > &precStateActivations, const TMatrixT< Scalar_t > &precCellActivations, const TMatrixT< Scalar_t > &fInput, const TMatrixT< Scalar_t > &fForget, const TMatrixT< Scalar_t > &fCandidate, const TMatrixT< Scalar_t > &fOutput, const TMatrixT< Scalar_t > &weights_input, const TMatrixT< Scalar_t > &weights_forget, const TMatrixT< Scalar_t > &weights_candidate, const TMatrixT< Scalar_t > &weights_output, const TMatrixT< Scalar_t > &weights_input_state, const TMatrixT< Scalar_t > &weights_forget_state, const TMatrixT< Scalar_t > &weights_candidate_state, const TMatrixT< Scalar_t > &weights_output_state, const TMatrixT< Scalar_t > &input, TMatrixT< Scalar_t > &input_gradient, TMatrixT< Scalar_t > &cell_gradient, TMatrixT< Scalar_t > &cell_tanh) |
| Backward pass for LSTM Network.
|
|
static Matrix_t & | GRULayerBackward (TMatrixT< Scalar_t > &state_gradients_backward, TMatrixT< Scalar_t > &reset_weight_gradients, TMatrixT< Scalar_t > &update_weight_gradients, TMatrixT< Scalar_t > &candidate_weight_gradients, TMatrixT< Scalar_t > &reset_state_weight_gradients, TMatrixT< Scalar_t > &update_state_weight_gradients, TMatrixT< Scalar_t > &candidate_state_weight_gradients, TMatrixT< Scalar_t > &reset_bias_gradients, TMatrixT< Scalar_t > &update_bias_gradients, TMatrixT< Scalar_t > &candidate_bias_gradients, TMatrixT< Scalar_t > &dr, TMatrixT< Scalar_t > &du, TMatrixT< Scalar_t > &dc, const TMatrixT< Scalar_t > &precStateActivations, const TMatrixT< Scalar_t > &fReset, const TMatrixT< Scalar_t > &fUpdate, const TMatrixT< Scalar_t > &fCandidate, const TMatrixT< Scalar_t > &weights_reset, const TMatrixT< Scalar_t > &weights_update, const TMatrixT< Scalar_t > &weights_candidate, const TMatrixT< Scalar_t > &weights_reset_state, const TMatrixT< Scalar_t > &weights_update_state, const TMatrixT< Scalar_t > &weights_candidate_state, const TMatrixT< Scalar_t > &input, TMatrixT< Scalar_t > &input_gradient) |
| Backward pass for GRU Network.
|
|
static void | ScaleAdd (TMatrixT< Scalar_t > &A, const TMatrixT< Scalar_t > &B, Scalar_t beta=1.0) |
| Adds a the elements in matrix B scaled by c to the elements in the matrix A.
|
|
static void | Copy (TMatrixT< Scalar_t > &A, const TMatrixT< Scalar_t > &B) |
|
template<typename AMatrix_t > |
static void | CopyDiffArch (TMatrixT< Scalar_t > &A, const AMatrix_t &B) |
|
static void | ScaleAdd (std::vector< TMatrixT< Scalar_t > > &A, const std::vector< TMatrixT< Scalar_t > > &B, Scalar_t beta=1.0) |
| Above functions extended to vectors.
|
|
static void | Copy (std::vector< TMatrixT< Scalar_t > > &A, const std::vector< TMatrixT< Scalar_t > > &B) |
|
template<typename AMatrix_t > |
static void | CopyDiffArch (std::vector< TMatrixT< Scalar_t > > &A, const std::vector< AMatrix_t > &B) |
|
|
For each activation function, the low-level interface contains two routines.
One that applies the activation function to a matrix and one that evaluate the derivatives of the activation function at the elements of a given matrix and writes the results into the result matrix.
|
static void | Identity (TMatrixT< AReal > &B) |
|
static void | IdentityDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | Relu (TMatrixT< AReal > &B) |
|
static void | ReluDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | Sigmoid (TMatrixT< AReal > &B) |
|
static void | SigmoidDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | Tanh (TMatrixT< AReal > &B) |
|
static void | TanhDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | FastTanh (Tensor_t &B) |
|
static void | FastTanhDerivative (Tensor_t &B, const Tensor_t &A) |
|
static void | SymmetricRelu (TMatrixT< AReal > &B) |
|
static void | SymmetricReluDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | SoftSign (TMatrixT< AReal > &B) |
|
static void | SoftSignDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
static void | Gauss (TMatrixT< AReal > &B) |
|
static void | GaussDerivative (TMatrixT< AReal > &B, const TMatrixT< AReal > &A) |
|
|
Loss functions compute a scalar value given the output of the network for a given training input and the expected network prediction Y that quantifies the quality of the prediction.
For each function also a routing that computes the gradients (suffixed by Gradients) must be provided for the starting of the backpropagation algorithm.
|
static AReal | MeanSquaredError (const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
|
static void | MeanSquaredErrorGradients (TMatrixT< AReal > &dY, const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
|
static AReal | CrossEntropy (const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
| Sigmoid transformation is implicitly applied, thus output should hold the linear activations of the last layer in the net.
|
|
static void | CrossEntropyGradients (TMatrixT< AReal > &dY, const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
|
static AReal | SoftmaxCrossEntropy (const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
| Softmax transformation is implicitly applied, thus output should hold the linear activations of the last layer in the net.
|
|
static void | SoftmaxCrossEntropyGradients (TMatrixT< AReal > &dY, const TMatrixT< AReal > &Y, const TMatrixT< AReal > &output, const TMatrixT< AReal > &weights) |
|
|
Output functions transform the activations output of the output layer in the network to a valid prediction YHat for the desired usage of the network, e.g.
the identity function for regression or the sigmoid transformation for two-class classification.
|
static void | Sigmoid (TMatrixT< AReal > &YHat, const TMatrixT< AReal > &) |
|
static void | Softmax (TMatrixT< AReal > &YHat, const TMatrixT< AReal > &) |
|
|
For each regularization type two functions are required, one named <Type>Regularization that evaluates the corresponding regularization functional for a given weight matrix and the Add<Type> RegularizationGradients , that adds the regularization component in the gradients to the provided matrix.
|
static AReal | L1Regularization (const TMatrixT< AReal > &W) |
|
static void | AddL1RegularizationGradients (TMatrixT< AReal > &A, const TMatrixT< AReal > &W, AReal weightDecay) |
|
static AReal | L2Regularization (const TMatrixT< AReal > &W) |
|
static void | AddL2RegularizationGradients (TMatrixT< AReal > &A, const TMatrixT< AReal > &W, AReal weightDecay) |
|
|
For each initialization method, one function in the low-level interface is provided.
The naming scheme is
Initialize<Type>
for a given initialization method Type.
|
static void | InitializeGauss (TMatrixT< AReal > &A) |
|
static void | InitializeUniform (TMatrixT< AReal > &A) |
|
static void | InitializeIdentity (TMatrixT< AReal > &A) |
|
static void | InitializeZero (TMatrixT< AReal > &A) |
|
static void | InitializeGlorotUniform (TMatrixT< AReal > &A) |
| Sample from a uniform distribution in range [ -lim,+lim] where lim = sqrt(6/N_in+N_out).
|
|
static void | InitializeGlorotNormal (TMatrixT< AReal > &A) |
| Truncated normal initialization (Glorot, called also Xavier normal) The values are sample with a normal distribution with stddev = sqrt(2/N_input + N_output) and values larger than 2 * stddev are discarded See Glorot & Bengio, AISTATS 2010 - http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf.
|
|
static TRandom & | GetRandomGenerator () |
|
static void | SetRandomSeed (size_t seed) |
|
|
static void | DropoutForward (Tensor_t &A, TDescriptors *descriptors, TWorkspace *workspace, Scalar_t p) |
| Apply dropout with activation probability p to the given matrix A and scale the result by reciprocal of p .
|
|
static void | DropoutForward (Matrix_t &A, Scalar_t p) |
|
|
static void | Im2col (TMatrixT< AReal > &A, const TMatrixT< AReal > &B, size_t imgHeight, size_t imgWidth, size_t fltHeight, size_t fltWidth, size_t strideRows, size_t strideCols, size_t zeroPaddingHeight, size_t zeroPaddingWidth) |
| Transform the matrix B in local view format, suitable for convolution, and store it in matrix A .
|
|
static void | Im2colIndices (std::vector< int > &, const TMatrixT< AReal > &, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t) |
|
static void | Im2colFast (TMatrixT< AReal > &, const TMatrixT< AReal > &, const std::vector< int > &) |
|
static void | RotateWeights (TMatrixT< AReal > &A, const TMatrixT< AReal > &B, size_t filterDepth, size_t filterHeight, size_t filterWidth, size_t numFilters) |
| Rotates the matrix B , which is representing a weights, and stores them in the matrix A .
|
|
static void | AddConvBiases (TMatrixT< AReal > &output, const TMatrixT< AReal > &biases) |
| Add the biases in the Convolutional Layer.
|
|
|
static void | ConvLayerBackward (std::vector< TMatrixT< AReal > > &, TMatrixT< AReal > &, TMatrixT< AReal > &, std::vector< TMatrixT< AReal > > &, const std::vector< TMatrixT< AReal > > &, const TMatrixT< AReal > &, const std::vector< TMatrixT< AReal > > &, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t) |
| Perform the complete backward propagation step in a Convolutional Layer.
|
|
|
static void | Downsample (TMatrixT< AReal > &A, TMatrixT< AReal > &B, const TMatrixT< AReal > &C, size_t imgHeight, size_t imgWidth, size_t fltHeight, size_t fltWidth, size_t strideRows, size_t strideCols) |
| Downsample the matrix C to the matrix A , using max operation, such that the winning indices are stored in matrix B .
|
|
|
static void | MaxPoolLayerBackward (TMatrixT< AReal > &activationGradientsBackward, const TMatrixT< AReal > &activationGradients, const TMatrixT< AReal > &indexMatrix, size_t imgHeight, size_t imgWidth, size_t fltHeight, size_t fltWidth, size_t strideRows, size_t strideCol, size_t nLocalViews) |
| Perform the complete backward propagation step in a Max Pooling Layer.
|
|
|
static void | Reshape (TMatrixT< AReal > &A, const TMatrixT< AReal > &B) |
| Transform the matrix B to a matrix with different dimensions A .
|
|
static void | Flatten (TMatrixT< AReal > &A, const std::vector< TMatrixT< AReal > > &B, size_t size, size_t nRows, size_t nCols) |
| Flattens the tensor B , such that each matrix, is stretched in one row, resulting with a matrix A .
|
|
static void | Deflatten (std::vector< TMatrixT< AReal > > &A, const TMatrixT< Scalar_t > &B, size_t index, size_t nRows, size_t nCols) |
| Transforms each row of B to a matrix and stores it in the tensor B .
|
|
static void | Rearrange (std::vector< TMatrixT< AReal > > &out, const std::vector< TMatrixT< AReal > > &in) |
| Rearrage data according to time fill B x T x D out with T x B x D matrix in.
|
|