issue : #38 (closed), aidge#252 (closed)
Conv1D
& Conv2D
backward functions have been optimized : indexing is now done by only incrementing the index counters without using multiplication.
for (DimSize_t kX = 0; kX < kDim[0]; ++kX) {
kOffsets[2] = kX * kStrides[2] + kOffsets[1];
iDilKernelOffsets[0] = kX * dilation[0] * iStrides[2];
// DOING STUFF ...........
}
iDilKernelOffsets[0] = 0;
kOffsets[2] = kOffsets[1];
for (DimSize_t kX = 0; kX < kDims[0]; ++kX,
kOffsets[2] += kStrides[2],
iDilKernelOffsets[0] += dilation[0] *
iStrides[2]) {
// DOING STUFF ...........
}
NOTE : This implies a bit of unconventionnal over-crowding the for loops. That is usually written as :
for (DimSize_t kX = 0; kX < kDims[0]; ++kX) {
// DOING STUFF ...........
kOffsets[2] += kStrides[2];
iDilKernelOffsets[0] += dilation[0] * iStrides[2];
}
but since the the //DOING STUFF.......
usually contains 3+ nested loops, this would quickly be un-readable. Hence I chose to use the 1st "overcrowded for loop" syntax.
Copyright © Eclipse Foundation, Inc. All Rights Reserved. Privacy Policy | Terms of Use | Copyright Agent