diff options
author | Mike Kelly <mike.kelly@arm.com> | 2019-08-21 09:36:58 +0100 |
---|---|---|
committer | Mike Kelly <mike.kelly@arm.com> | 2019-08-21 09:36:58 +0100 |
commit | 675fa4f1aac534dbcf73b9f2e9405d832c2e9d8c (patch) | |
tree | f5035b451824af750540677c57ce60a920646384 /src/backends/reference/workloads/TransposeConvolution2d.cpp | |
parent | 581742d8b6c25bf0917d6bdcd5f9b8a5e72b370d (diff) | |
download | armnn-675fa4f1aac534dbcf73b9f2e9405d832c2e9d8c.tar.gz |
IVGCVSW-3642 Fixed VTS Test Failures
* Fixed Quant8 VTS test failures where an output value should have been greater than 255 before a negative bias was applied.
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: Ie0084c1c8c4a4b5f069112d523765ed338277e58
Diffstat (limited to 'src/backends/reference/workloads/TransposeConvolution2d.cpp')
-rw-r--r-- | src/backends/reference/workloads/TransposeConvolution2d.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/backends/reference/workloads/TransposeConvolution2d.cpp b/src/backends/reference/workloads/TransposeConvolution2d.cpp index 52cc18c17a..1b89ef9262 100644 --- a/src/backends/reference/workloads/TransposeConvolution2d.cpp +++ b/src/backends/reference/workloads/TransposeConvolution2d.cpp @@ -49,12 +49,7 @@ void TransposeConvolution2dImpl(const TransposeConvolution2dDescriptor& descript unsigned int strideX = descriptor.m_StrideX; unsigned int strideY = descriptor.m_StrideY; - // Set the initial output values to be logically 0 otherwise the algorithm doesn't work. - for (unsigned int i = 0u; i < outputShape.GetNumElements(); ++i) - { - outputEncoder.Set(0.f); - ++outputEncoder; - } + std::vector<float> outputBuffer(outputShape.GetNumElements(), 0); for (unsigned int batch = 0u; batch < numBatches; ++batch) { @@ -90,10 +85,9 @@ void TransposeConvolution2dImpl(const TransposeConvolution2dDescriptor& descript dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput); outputEncoder[outputIndex]; - float output = outputEncoder.Get(); + float output = outputBuffer[outputIndex]; output += inputDecoder.Get() * weightsDecoder.Get(); - - outputEncoder.Set(output); + outputBuffer[outputIndex] = output; } } } @@ -120,14 +114,18 @@ void TransposeConvolution2dImpl(const TransposeConvolution2dDescriptor& descript { const unsigned int outputIndex = dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput); - - outputEncoder[outputIndex]; - outputEncoder.Set(outputEncoder.Get() + rBiasesDecoder.Get()); + outputBuffer[outputIndex] += rBiasesDecoder.Get(); } } } } } + outputEncoder[0]; + for (float output : outputBuffer) + { + outputEncoder.Set(output); + ++outputEncoder; + } } } // namespace armnn |