22template <
typename AReal>
 
   29template <
typename AReal>
 
   32   for (
size_t i = 0; i < (size_t)
output.GetNrows(); i++) {
 
   33      for (
size_t j = 0; 
j < (size_t)
output.GetNcols(); 
j++) {
 
 
   39template <
typename AReal>
 
   47   for (
size_t i = 0; i < (size_t)df.GetNrows(); i++) {
 
   48      for (
size_t j = 0; 
j < (size_t)df.GetNcols(); 
j++) {
 
   65      for (
size_t j = 0; 
j < (size_t)df.GetNcols(); 
j++) {
 
   67         for (
size_t i = 0; i < (size_t)df.GetNrows(); i++) {
 
 
   75template <
typename AReal>
 
   78   for (
size_t i = 0; i < (size_t)A.GetNrows(); i++) {
 
   79      for (
size_t j = 0; 
j < (size_t)A.GetNcols(); 
j++) {
 
   80         A(i, 
j) += beta * B(i, 
j);
 
 
   85template <
typename AReal>
 
   91template <
typename AReal>
 
   94   for (
size_t i = 0; i < A.size(); ++i) {
 
   95      ScaleAdd(A[i], B[i], beta);
 
 
   99template <
typename AReal>
 
  102   for (
size_t i = 0; i < A.size(); ++i) {
 
 
  108template <
typename AReal>
 
  124         for (
int m = 0; 
m < B.GetNrows(); 
m++) {
 
 
  143template <
typename AReal>
 
  145                                      size_t filterHeight, 
size_t filterWidth, 
size_t numFilters)
 
  147   size_t jump = filterHeight * filterWidth;
 
  150         for (
size_t i = 0; i < 
jump; i++) {
 
  151            A(
j, k * 
jump + i) = B(k, ((
j + 1) * 
jump - 1) - i);
 
 
  158template <
typename AReal>
 
  161   for (
size_t i = 0; i < (size_t)
output.GetNrows(); i++) {
 
  162      for (
size_t j = 0; 
j < (size_t)
output.GetNcols(); 
j++) {
 
 
  168#ifdef HAVE_CNN_REFERENCE 
  170template <
typename AReal>
 
  177                                          size_t inputHeight, 
size_t inputWidth, 
size_t depth, 
size_t height,
 
  187   for (
size_t i = 0; i < batchSize; i++) {
 
  188      for (
size_t j = 0; 
j < (size_t)
m; 
j++) {
 
  189         for (
size_t k = 0; k < (size_t)
n; k++) {
 
  208template <
typename AReal>
 
  212                                                         size_t inputHeight, 
size_t inputWidth, 
size_t depth,
 
  214                                                         size_t filterHeight, 
size_t filterWidth)
 
  235   for (
size_t i = 0; i < batchSize; i++) {
 
  247template <
typename AReal>
 
  251                                                     size_t batchSize, 
size_t inputHeight, 
size_t inputWidth,
 
  253                                                     size_t filterHeight, 
size_t filterWidth, 
size_t nLocalViews)
 
  262   for (
size_t i = 0; i < batchSize; i++) {
 
  273      for (
size_t j = 0; 
j < 
depth; 
j++) {
 
  291            for (
size_t l = 0; 
l < filterHeight * filterWidth; 
l++) {
 
  316template <
typename AReal>
 
  320   for (
size_t i = 0; i < 
depth; i++) {
 
  323         for (
size_t k = 0; k < batchSize; k++) {
 
  333template <
typename AReal>
 
  347         for (
int m = 0; 
m < C.GetNrows(); 
m++) {
 
  348            AReal value = -std::numeric_limits<AReal>::max();
 
 
  366template <
typename AReal>
 
  370                                             size_t , 
size_t , 
size_t ,
 
  371                                             size_t , 
size_t , 
size_t ,
 
  376   for (
size_t j = 0; 
j < 
depth; 
j++) {
 
 
  392template <
typename AReal>
 
  395   auto nColsA = A.GetNcols();
 
  396   auto nColsB = B.GetNcols();
 
  398   for (
Int_t i = 0; i < A.GetNrows(); i++) {
 
  399      for (
Int_t j = 0; 
j < A.GetNcols(); 
j++) {
 
 
  407template <
typename AReal>
 
  411   for (
size_t i = 0; i < (size_t)
size; i++) {
 
  412      for (
size_t j = 0; 
j < (size_t)
nRows; 
j++) {
 
  413         for (
size_t k = 0; k < (size_t)
nCols; k++) {
 
  414            A(i, 
j * 
nCols + k) = B[i](
j, k);
 
 
  421template <
typename AReal>
 
  425   for (
size_t i = 0; i < (size_t)
size; i++) {
 
  426      for (
size_t j = 0; 
j < (size_t)
nRows; 
j++) {
 
  427         for (
size_t k = 0; k < (size_t)
nCols; k++) {
 
  428            A[i](
j, k) = B(i, 
j * 
nCols + k);
 
 
  435template <
typename AReal>
 
  440   auto T = out[0].GetNrows();
 
  441   auto D = out[0].GetNcols();
 
  442   if ((T != (
Int_t)
in.size()) || (
Int_t(B) != 
in[0].GetNrows()) || (D != 
in[0].GetNcols())) {
 
  443      std::cout << 
"Incompatible Dimensions\n" 
  444                << 
in.size() << 
"x" << 
in[0].GetNrows() << 
"x" << 
in[0].GetNcols() << 
" --> " << B << 
"x" << T << 
"x" 
  448   for (
size_t i = 0; i < B; ++i) {
 
  450         for (
Int_t k = 0; k < D; ++k) {
 
  451            out[i](
j, k) = 
in[
j](i, k);
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
int Int_t
Signed integer 4 bytes (int)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
 
void Copy(TObject &obj) const override
 
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 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 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 AddRowWise(TMatrixT< Scalar_t > &output, const TMatrixT< Scalar_t > &biases)
Add the vectors biases row-wise to the matrix output.
 
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 store...
 
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 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 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.
 
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 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 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 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 AddConvBiases(TMatrixT< AReal > &output, const TMatrixT< AReal > &biases)
Add the biases in the Convolutional Layer.
 
static void Copy(TMatrixT< Scalar_t > &A, const TMatrixT< Scalar_t > &B)
 
static void Reshape(TMatrixT< AReal > &A, const TMatrixT< AReal > &B)
Transform the matrix B to a matrix with different dimensions A.
 
__global__ void RotateWeights(AFloat *A, const AFloat *B, int filterDepth, int filterHeight, int filterWidth, int numFilters)
 
void Im2col(const T *data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, const int dilation_h, const int dilation_w, T *data_col)
im2col : efficient function to re-arrange input data of convolution to a matrix that can be used by B...
 
create variable transformations
 
static uint64_t sum(uint64_t i)