Artificial Neural Network's functions for accelerating of Simd::Neural. More...
Functions | |
| SIMD_API void | SimdNeuralConvert (const uint8_t *src, size_t srcStride, size_t width, size_t height, float *dst, size_t dstStride, int inversion) |
| Converts a 8-bit gray image to the 32-bit float array. More... | |
| SIMD_API void | SimdNeuralDerivativeSigmoid (const float *src, size_t size, const float *slope, float *dst) |
| Multiplies output 32-bit float array by derivative of sigmoid from input 32-bit float array. More... | |
| SIMD_API void | SimdNeuralDerivativeTanh (const float *src, size_t size, const float *slope, float *dst) |
| Multiplies output 32-bit float array by derivative of hyperbolic tangent from input 32-bit float array. More... | |
| SIMD_API void | SimdNeuralDerivativeRelu (const float *src, size_t size, const float *slope, float *dst) |
| Multiplies output 32-bit float array by derivative of Relu (rectified linear unit) from input 32-bit float array. More... | |
| SIMD_API void | SimdNeuralPow (const float *src, size_t size, const float *exponent, float *dst) |
| Calculates Pow function for 32-bit float array. More... | |
| SIMD_API void | SimdNeuralProductSum (const float *a, const float *b, size_t size, float *sum) |
| Calculates sum of products for two 32-bit float arrays. More... | |
| SIMD_API void | SimdNeuralAddVectorMultipliedByValue (const float *src, size_t size, const float *value, float *dst) |
| Adds the product of a vector and a scalar to given vector. More... | |
| SIMD_API void | SimdNeuralAddVector (const float *src, size_t size, float *dst) |
| Adds a vector to given vector. More... | |
| SIMD_API void | SimdNeuralAddValue (const float *value, float *dst, size_t size) |
| Adds a value to each elements of given vector. More... | |
| SIMD_API void | SimdNeuralUpdateWeights (const float *x, size_t size, const float *a, const float *b, float *d, float *w) |
| Updates ANN weights. More... | |
| SIMD_API void | SimdNeuralAdaptiveGradientUpdate (const float *delta, size_t size, size_t batch, const float *alpha, const float *epsilon, float *gradient, float *weight) |
| Updates neural network weights with using of adaptive gradients method. More... | |
| SIMD_API void | SimdNeuralAddConvolution2x2Forward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 2x2 convolution of 32-bit float image. More... | |
| SIMD_API void | SimdNeuralAddConvolution3x3Forward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 3x3 convolution of 32-bit float image. More... | |
| SIMD_API void | SimdNeuralAddConvolution4x4Forward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 4x4 convolution of 32-bit float image. More... | |
| SIMD_API void | SimdNeuralAddConvolution5x5Forward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 5x5 convolution of 32-bit float image (forward propagation). More... | |
| SIMD_API void | SimdNeuralAddConvolution2x2Backward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 2x2 convolution of 32-bit float image (backward propagation). More... | |
| SIMD_API void | SimdNeuralAddConvolution3x3Backward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 3x3 convolution of 32-bit float image (backward propagation). More... | |
| SIMD_API void | SimdNeuralAddConvolution4x4Backward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 4x4 convolution of 32-bit float image (backward propagation). More... | |
| SIMD_API void | SimdNeuralAddConvolution5x5Backward (const float *src, size_t srcStride, size_t width, size_t height, const float *weights, float *dst, size_t dstStride) |
| Adds 5x5 convolution of 32-bit float image (backward propagation). More... | |
| SIMD_API void | SimdNeuralAddConvolution2x2Sum (const float *src, size_t srcStride, const float *dst, size_t dstStride, size_t width, size_t height, float *sums) |
| Accumulates changes of weights for 2x2 convolution of 32-bit float image during backward propagation. More... | |
| SIMD_API void | SimdNeuralAddConvolution3x3Sum (const float *src, size_t srcStride, const float *dst, size_t dstStride, size_t width, size_t height, float *sums) |
| Accumulates changes of weights for 3x3 convolution of 32-bit float image during backward propagation. More... | |
| SIMD_API void | SimdNeuralAddConvolution4x4Sum (const float *src, size_t srcStride, const float *dst, size_t dstStride, size_t width, size_t height, float *sums) |
| Accumulates changes of weights for 4x4 convolution of 32-bit float image during backward propagation. More... | |
| SIMD_API void | SimdNeuralAddConvolution5x5Sum (const float *src, size_t srcStride, const float *dst, size_t dstStride, size_t width, size_t height, float *sums) |
| Accumulates changes of weights for 5x5 convolution of 32-bit float image during backward propagation. More... | |
| SIMD_API void | SimdNeuralPooling1x1Max3x3 (const float *src, size_t srcStride, size_t width, size_t height, float *dst, size_t dstStride) |
| Takes maximum value in 3x3 window of input 32-bit float image and copies to the output image. More... | |
| SIMD_API void | SimdNeuralPooling2x2Max2x2 (const float *src, size_t srcStride, size_t width, size_t height, float *dst, size_t dstStride) |
| Reduces input 32-bit float image in two times (takes maximum value in 2x2 window and copies to the output image). More... | |
| SIMD_API void | SimdNeuralPooling2x2Max3x3 (const float *src, size_t srcStride, size_t width, size_t height, float *dst, size_t dstStride) |
| Reduces input 32-bit float image in two times (takes maximum value in 3x3 window and copies to the output image). More... | |
| SIMD_API void | SimdNeuralConvolutionForward (const float *src, size_t srcWidth, size_t srcHeight, size_t srcDepth, const float *weight, size_t kernelX, size_t kernelY, size_t padX, size_t padY, size_t strideX, size_t strideY, size_t dilationX, size_t dilationY, void *buffer, size_t *size, float *dst, size_t dstWidth, size_t dstHeight, size_t dstDepth, int add) |
| Adds convolution of the input multichannel 32-bit float image to the output multichannel 32-bit float image. More... | |
| template<template< class > class A> | |
| SIMD_INLINE void | NeuralConvert (const View< A > &src, float *dst, size_t stride, bool inversion) |
| Converts a 8-bit gray image to the 32-bit float array. More... | |
Detailed Description
Artificial Neural Network's functions for accelerating of Simd::Neural.
Function Documentation
◆ SimdNeuralConvert()
| void SimdNeuralConvert | ( | const uint8_t * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | dst, | ||
| size_t | dstStride, | ||
| int | inversion | ||
| ) |
Converts a 8-bit gray image to the 32-bit float array.
The length of output array must be equal to the area of input image.
For every point:
dst[i] = inversion ? (255 - src[col]) / 255 : src[i]/255;
- Note
- This function has a C++ wrapper Simd::NeuralConvert(const View<A>& src, float * dst, bool inversion).
- Parameters
-
[in] src - a pointer to pixels data of input image. [in] srcStride - a row size (in bytes) of the image. [in] width - an image width. [in] height - an image height. [out] dst - a pointer to output array. [in] dstStride - a row size of the output array. [in] inversion - a flag of color inversion.
◆ SimdNeuralDerivativeSigmoid()
| void SimdNeuralDerivativeSigmoid | ( | const float * | src, |
| size_t | size, | ||
| const float * | slope, | ||
| float * | dst | ||
| ) |
Multiplies output 32-bit float array by derivative of sigmoid from input 32-bit float array.
All arrays must have the same size.
For every element:
dst[i] *= slope*(1 - src[i])*src[i];
- Note
- This function is used in Simd::Neural::Function.
- Parameters
-
[in] src - a pointer to the input array. [in] size - a size of arrays. [in] slope - a pointer to the slope parameter. [in,out] dst - a pointer to output array.
◆ SimdNeuralDerivativeTanh()
| void SimdNeuralDerivativeTanh | ( | const float * | src, |
| size_t | size, | ||
| const float * | slope, | ||
| float * | dst | ||
| ) |
Multiplies output 32-bit float array by derivative of hyperbolic tangent from input 32-bit float array.
All arrays must have the same size.
For every element:
dst[i] *= slope*(1 - src[i]*src[i]);
- Note
- This function is used in Simd::Neural::Function.
- Parameters
-
[in] src - a pointer to the input array. [in] size - a size of arrays. [in] slope - a pointer to the slope parameter. [in,out] dst - a pointer to output array.
◆ SimdNeuralDerivativeRelu()
| void SimdNeuralDerivativeRelu | ( | const float * | src, |
| size_t | size, | ||
| const float * | slope, | ||
| float * | dst | ||
| ) |
Multiplies output 32-bit float array by derivative of Relu (rectified linear unit) from input 32-bit float array.
All arrays must have the same size.
For every element:
dst[i] *= src[i] > 0 ? 1 : slope;
- Note
- This function is used in Simd::Neural::Function.
- Parameters
-
[in] src - a pointer to the input array. [in] size - a size of arrays. [in] slope - a pointer to the slope parameter. [in,out] dst - a pointer to output array.
◆ SimdNeuralPow()
| void SimdNeuralPow | ( | const float * | src, |
| size_t | size, | ||
| const float * | exponent, | ||
| float * | dst | ||
| ) |
Calculates Pow function for 32-bit float array.
All arrays must have the same size.
For every element:
dst[i] = Pow(src[i], exponent[0]);
- Note
- This function is used in Simd::Neural::Function.
- Parameters
-
[in] src - a pointer to the input array. [in] size - a size of arrays. [in] exponent - a pointer to exponent parameter. [out] dst - a pointer to output array.
◆ SimdNeuralProductSum()
| void SimdNeuralProductSum | ( | const float * | a, |
| const float * | b, | ||
| size_t | size, | ||
| float * | sum | ||
| ) |
Calculates sum of products for two 32-bit float arrays.
All arrays must have the same size.
For every element:
sum += a[i]*b[i];
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] a - a pointer to the first 32-bit float array. [in] b - a pointer to the second 32-bit float array. [in] size - a size of arrays. [out] sum - a pointer to 32-bit float sum of products.
◆ SimdNeuralAddVectorMultipliedByValue()
| void SimdNeuralAddVectorMultipliedByValue | ( | const float * | src, |
| size_t | size, | ||
| const float * | value, | ||
| float * | dst | ||
| ) |
Adds the product of a vector and a scalar to given vector.
All arrays must have the same size.
For every element:
dst[i] += src[i]*value[0];
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float array. [in] size - a size of arrays. [in] value - a pointer to the scalar 32-bit float value. [in,out] dst - a pointer to cumulative 32-bit float array.
◆ SimdNeuralAddVector()
| void SimdNeuralAddVector | ( | const float * | src, |
| size_t | size, | ||
| float * | dst | ||
| ) |
Adds a vector to given vector.
All arrays must have the same size.
For every element:
dst[i] += src[i];
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float array. [in] size - a size of the arrays. [in,out] dst - a pointer to cumulative 32-bit float array.
◆ SimdNeuralAddValue()
| void SimdNeuralAddValue | ( | const float * | value, |
| float * | dst, | ||
| size_t | size | ||
| ) |
Adds a value to each elements of given vector.
For every element:
dst[i] += value;
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] value - a pointer to the scalar 32-bit float value. [in,out] dst - a pointer to cumulative 32-bit float array. [in] size - a size of the array.
◆ SimdNeuralUpdateWeights()
| void SimdNeuralUpdateWeights | ( | const float * | x, |
| size_t | size, | ||
| const float * | a, | ||
| const float * | b, | ||
| float * | d, | ||
| float * | w | ||
| ) |
Updates ANN weights.
All arrays must have the same size.
The algorithm performs:
for (size_t k = 0; k < size; ++k)
{
d[k] = a[0]*d[k] + b[0]*x[k];
w[k] += d[k];
}
- Parameters
-
[in] x - a pointer to the X array. [in] size - a size of arrays. [in] a - a pointer to the first parameter. [in] b - a pointer to the second parameter. [in,out] d - a pointer to the D array. [in,out] w - a pointer to the W array.
◆ SimdNeuralAdaptiveGradientUpdate()
| void SimdNeuralAdaptiveGradientUpdate | ( | const float * | delta, |
| size_t | size, | ||
| size_t | batch, | ||
| const float * | alpha, | ||
| const float * | epsilon, | ||
| float * | gradient, | ||
| float * | weight | ||
| ) |
Updates neural network weights with using of adaptive gradients method.
Adaptive gradients method. J Duchi, E Hazan and Y Singer, "Adaptive subgradient methods for online learning and stochastic optimization" The Journal of Machine Learning Research, pages 2121-2159, 2011.
The algorithm performs:
for (i = 0; i < size; ++i)
{
d = delta[i]/batch;
gradient[i] += d*d;
weight[i] -= alpha * d / sqrt(gradient[i] + epsilon);
}
- Note
- All arrays must have the same size. This function is used in Simd::Neural.
- Parameters
-
[in] delta - a pointer to the array with error (delta). [in] size - a size of arrays. [in] batch - a batch size. [in] alpha - a pointer to alpha parameter (update speed). [in] epsilon - a pointer to epsilon parameter (a small number used to avoid division by zero). [in,out] gradient - a pointer to the array with gradients. [in,out] weight - a pointer to the array with weights.
◆ SimdNeuralAddConvolution2x2Forward()
| void SimdNeuralAddConvolution2x2Forward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 2x2 convolution of 32-bit float image.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 1). [in] height - a height of the output image (input image height must be equal to output image height + 1). [in] weights - a pointer to the array with weights (its size must be at least 4). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution3x3Forward()
| void SimdNeuralAddConvolution3x3Forward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 3x3 convolution of 32-bit float image.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 2). [in] height - a height of the output image (input image height must be equal to output image height + 2). [in] weights - a pointer to the array with weights (its size must be at least 9). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution4x4Forward()
| void SimdNeuralAddConvolution4x4Forward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 4x4 convolution of 32-bit float image.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 3). [in] height - a height of the output image (input image height must be equal to output image height + 3). [in] weights - a pointer to the array with weights (its size must be at least 16). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution5x5Forward()
| void SimdNeuralAddConvolution5x5Forward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 5x5 convolution of 32-bit float image (forward propagation).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 4). [in] height - a height of the output image (input image height must be equal to output image height + 4). [in] weights - a pointer to the array with weights (its size must be at least 25). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution2x2Backward()
| void SimdNeuralAddConvolution2x2Backward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 2x2 convolution of 32-bit float image (backward propagation).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must be equal to input image width + 1). [in] height - a height of the input image (output image height must be equal to input image height + 1). [in] weights - a pointer to the array with weights (its size must be at least 4). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution3x3Backward()
| void SimdNeuralAddConvolution3x3Backward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 3x3 convolution of 32-bit float image (backward propagation).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must be equal to input image width + 2). [in] height - a height of the input image (output image height must be equal to input image height + 2). [in] weights - a pointer to the array with weights (its size must be at least 9). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution4x4Backward()
| void SimdNeuralAddConvolution4x4Backward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 4x4 convolution of 32-bit float image (backward propagation).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must be equal to input image width + 3). [in] height - a height of the input image (output image height must be equal to input image height + 3). [in] weights - a pointer to the array with weights (its size must be at least 16). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution5x5Backward()
| void SimdNeuralAddConvolution5x5Backward | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| const float * | weights, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Adds 5x5 convolution of 32-bit float image (backward propagation).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must be equal to input image width + 4). [in] height - a height of the input image (output image height must be equal to input image height + 4). [in] weights - a pointer to the array with weights (its size must be at least 25). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralAddConvolution2x2Sum()
| void SimdNeuralAddConvolution2x2Sum | ( | const float * | src, |
| size_t | srcStride, | ||
| const float * | dst, | ||
| size_t | dstStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | sums | ||
| ) |
Accumulates changes of weights for 2x2 convolution of 32-bit float image during backward propagation.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 1). [in] height - a height of the output image (input image height must be equal to output image height + 1). [in,out] sums - a pointer to the array with changes of weights (its size must be at least 4).
◆ SimdNeuralAddConvolution3x3Sum()
| void SimdNeuralAddConvolution3x3Sum | ( | const float * | src, |
| size_t | srcStride, | ||
| const float * | dst, | ||
| size_t | dstStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | sums | ||
| ) |
Accumulates changes of weights for 3x3 convolution of 32-bit float image during backward propagation.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 2). [in] height - a height of the output image (input image height must be equal to output image height + 2). [in,out] sums - a pointer to the array with changes of weights (its size must be at least 9).
◆ SimdNeuralAddConvolution4x4Sum()
| void SimdNeuralAddConvolution4x4Sum | ( | const float * | src, |
| size_t | srcStride, | ||
| const float * | dst, | ||
| size_t | dstStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | sums | ||
| ) |
Accumulates changes of weights for 4x4 convolution of 32-bit float image during backward propagation.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 3). [in] height - a height of the output image (input image height must be equal to output image height + 3). [in,out] sums - a pointer to the array with changes of weights (its size must be at least 16).
◆ SimdNeuralAddConvolution5x5Sum()
| void SimdNeuralAddConvolution5x5Sum | ( | const float * | src, |
| size_t | srcStride, | ||
| const float * | dst, | ||
| size_t | dstStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | sums | ||
| ) |
Accumulates changes of weights for 5x5 convolution of 32-bit float image during backward propagation.
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values). [in] width - a width of the output image (input image width must be equal to output image width + 4). [in] height - a height of the output image (input image height must be equal to output image height + 4). [in,out] sums - a pointer to the array with changes of weights (its size must be at least 25).
◆ SimdNeuralPooling1x1Max3x3()
| void SimdNeuralPooling1x1Max3x3 | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Takes maximum value in 3x3 window of input 32-bit float image and copies to the output image.
- Note
- This function is used in Simd::Neural. Output image must have the same size.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image. [in] height - a height of the input image. [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralPooling2x2Max2x2()
| void SimdNeuralPooling2x2Max2x2 | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Reduces input 32-bit float image in two times (takes maximum value in 2x2 window and copies to the output image).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must have size (width + 1)/2). [in] height - a height of the input image (output image height must have size (height + 1)/2). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralPooling2x2Max3x3()
| void SimdNeuralPooling2x2Max3x3 | ( | const float * | src, |
| size_t | srcStride, | ||
| size_t | width, | ||
| size_t | height, | ||
| float * | dst, | ||
| size_t | dstStride | ||
| ) |
Reduces input 32-bit float image in two times (takes maximum value in 3x3 window and copies to the output image).
- Note
- This function is used in Simd::Neural.
- Parameters
-
[in] src - a pointer to the input 32-bit float image. [in] srcStride - a row size of the input image (in 32-float values). [in] width - a width of the input image (output image width must have size width/2). [in] height - a height of the input image (output image height must have size height/2). [in,out] dst - a pointer to the output 32-bit float image. [in] dstStride - a row size of the output image (in 32-float values).
◆ SimdNeuralConvolutionForward()
| void SimdNeuralConvolutionForward | ( | const float * | src, |
| size_t | srcWidth, | ||
| size_t | srcHeight, | ||
| size_t | srcDepth, | ||
| const float * | weight, | ||
| size_t | kernelX, | ||
| size_t | kernelY, | ||
| size_t | padX, | ||
| size_t | padY, | ||
| size_t | strideX, | ||
| size_t | strideY, | ||
| size_t | dilationX, | ||
| size_t | dilationY, | ||
| void * | buffer, | ||
| size_t * | size, | ||
| float * | dst, | ||
| size_t | dstWidth, | ||
| size_t | dstHeight, | ||
| size_t | dstDepth, | ||
| int | add | ||
| ) |
Adds convolution of the input multichannel 32-bit float image to the output multichannel 32-bit float image.
- Note
- There is a restriction to the size of output image:
dstWidth = (srcWidth + 2 * padX - (dilationX * (kernelX - 1) + 1)) / strideX + 1. dstHeight = (srcHeight + 2 * padY - (dilationY * (kernelY - 1) + 1)) / strideY + 1.
- Parameters
-
[in] src - a pointer to the input multichannel 32-bit float image. Total size of the input image is equal to srcWidth*srcHeight*srcDepth. [in] srcWidth - a width of the input image. [in] srcHeight - a height of the input image. [in] srcDepth - a number of channels in the input image. [in] weight - a pointer to the convolution weights. Total size of the weights is equal to kernelX*kernelY*srcDepth*dstDepth.[in] kernelX - a width of the convolution kernel. [in] kernelY - a height of the convolution kernel. [in] padX - a pad to the x-coordinate of the input image. [in] padY - a pad to the y-coordinate of the input image. [in] strideX - a x-stride of the convolution. [in] strideY - a y-stride of the convolution. [in] dilationX - a x-stride of the convolution. [in] dilationY - a y-stride of the convolution. [in,out] buffer - a pointer to the external temporal buffer used by the algorithm. Can be NULL (the algorithm uses internal buffer). [in,out] size - a pointer to the size of the external temporal buffer. If the size is too small it will contain required value. Required size is approximately equal to dstWidth*dstHeight*srcDepth*kernelX*kernelY*sizeof(float). Can be NULL.[in,out] dst - a pointer to the output multichannel 32-bit float image. Total size of the output image is equal to dstWidth*dstHeight*dstDepth.[in] dstWidth - a width of the output image. [in] dstHeight - a height of the output image. [in] dstDepth - a number of channels in the output image. [in] add - a flag which signalizes that we want add or assign value of convolution to the output image.
◆ NeuralConvert()
| void NeuralConvert | ( | const View< A > & | src, |
| float * | dst, | ||
| size_t | stride, | ||
| bool | inversion | ||
| ) |
Converts a 8-bit gray image to the 32-bit float array.
The length of output array must be equal to the area of input image.
For every point:
dst[i] = inversion ? (255 - src[col]) / 255 : src[i]/255;
- Note
- This function is a C++ wrapper for function SimdNeuralConvert.
- Parameters
-
[in] src - an input image. [out] dst - a pointer to output array. [in] stride - a row size of the output array. [in] inversion - a flag of color inversion.