Synet Framework
Functions for accelerating of Synet Framework. More...
Enumerations | |
enum | SimdSynetEltwiseOperationType { SimdSynetEltwiseOperationProduct, SimdSynetEltwiseOperationSum, SimdSynetEltwiseOperationMax } |
Functions | |
SIMD_API void | SimdSynetAddBias (const float *bias, size_t count, size_t size, float *dst) |
Adds a bias to given vector. More... | |
SIMD_API void | SimdSynetEltwiseLayerForward (float const *const *src, const float *weight, size_t count, size_t size, SimdSynetEltwiseOperationType type, float *dst) |
This function is used for forward propagation of EltwiseLayer. More... | |
SIMD_API void | SimdSynetLrnLayerCrossChannels (const float *src, size_t half, size_t count, size_t size, const float *k, float *dst) |
This function is used for forward propagation of LrnLayer (cross channels normalization). More... | |
SIMD_API void | SimdSynetScaleLayerForward (const float *src, const float *scale, const float *bias, size_t count, size_t size, float *dst) |
This function is used for forward propagation of ScaleLayer. More... | |
Detailed Description
Functions for accelerating of Synet Framework.
Enumeration Type Documentation
◆ SimdSynetEltwiseOperationType
Describes operation type used in function SimdSynetEltwiseLayerForward.
Enumerator | |
---|---|
SimdSynetEltwiseOperationProduct | Product. |
SimdSynetEltwiseOperationSum | Weighted sum. |
SimdSynetEltwiseOperationMax | Maximum. |
Function Documentation
◆ SimdSynetAddBias()
void SimdSynetAddBias | ( | const float * | bias, |
size_t | count, | ||
size_t | size, | ||
float * | dst | ||
) |
Adds a bias to given vector.
Algorithm's details:
for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) dst[i*size + j] += bias[i];
- Note
- This function is used in Synet Framework.
- Parameters
-
[in] bias - a pointer to the 32-bit float array with bias coefficients. [in] count - a size of bias array. [in] size - an internal size of bias addition. [in,out] dst - a pointer to cumulative 32-bit float array. The size of the array must be equal to count*size.
◆ SimdSynetEltwiseLayerForward()
void SimdSynetEltwiseLayerForward | ( | float const *const * | src, |
const float * | weight, | ||
size_t | count, | ||
size_t | size, | ||
SimdSynetEltwiseOperationType | type, | ||
float * | dst | ||
) |
This function is used for forward propagation of EltwiseLayer.
Algorithm's details for SimdSynetEltwiseOperationProduct:
for(j = 0; j < size; ++j) dst[j] = 1; for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) dst[j] *= src[i][j];
Algorithm's details for SimdSynetEltwiseOperationSum:
for(j = 0; j < size; ++j) dst[j] = 0; for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) dst[j] += src[i][j]*weight[i];
Algorithm's details for SimdSynetEltwiseOperationMax:
for(j = 0; j < size; ++j) dst[j] = -FLT_MAX; for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) dst[j] = max(dst[j], src[i][j]);
- Note
- This function is used in Synet Framework.
- Parameters
-
[in] src - a pointer to poitres to the input 32-bit float arrays. [in] weight - a pointer to the 32-bit float array with sum coefficients. It is need only for SimdSynetEltwiseOperationSum operation type otherwise it can be NULL. [in] count - a count of input arrays. Must be at least 2. [in] size - a size of the input and output arrays. [in] type - a type of operation (see SimdSynetEltwiseOperationType). [out] dst - a pointer to the output 32-bit float array.
◆ SimdSynetLrnLayerCrossChannels()
void SimdSynetLrnLayerCrossChannels | ( | const float * | src, |
size_t | half, | ||
size_t | count, | ||
size_t | size, | ||
const float * | k, | ||
float * | dst | ||
) |
This function is used for forward propagation of LrnLayer (cross channels normalization).
Algorithm's details:
for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) { lo = Max(0, i - half); ln = Min(count, i + half + 1); sum = 0; for(l = lo; l < ln; ++l) sum += Square(src[l*size + j]); dst[i*size + j] = src[i*size + j]*Pow(k[0] + sum*k[1], k[2]); }
- Note
- This function is used in Synet Framework.
- Parameters
-
[in] src - a pointer to the input 32-bit float array. The size of the array must be equal to count*size. [in] half - a local normalization half size. [in] count - a channels count. [in] size - an internal size of the operation. [in] k - a pointer to the 32-bit float array with 3 coefficients (see algorithm details). [out] dst - a pointer to the output 32-bit float array. The size of the array must be equal to count*size.
◆ SimdSynetScaleLayerForward()
void SimdSynetScaleLayerForward | ( | const float * | src, |
const float * | scale, | ||
const float * | bias, | ||
size_t | count, | ||
size_t | size, | ||
float * | dst | ||
) |
This function is used for forward propagation of ScaleLayer.
Algorithm's details:
for(i = 0; i < count; ++i) for(j = 0; j < size; ++j) dst[i*size + j] = src[i*size + j]*scale[i] + (bias ? bias[i] : 0);
- Note
- This function is used in Synet Framework.
- Parameters
-
[in] src - a pointer to the input 32-bit float array. The size of the array must be equal to count*size. [in] scale - a pointer to the 32-bit float array with scale coefficients. [in] bias - a pointer to the 32-bit float array with bias coefficients. Can be NULL. [in] count - a size of scale and bias arrays. [in] size - an internal size of the operation. [out] dst - a pointer to the output 32-bit float array. The size of the array must be equal to count*size.