Compute Library
 22.11
FullyConnectedLayer.cpp File Reference
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h"
#include "arm_compute/runtime/Tensor.h"
#include "arm_compute/runtime/TensorAllocator.h"
#include "src/core/helpers/MemoryHelpers.h"
#include "src/cpu/operators/CpuFullyConnected.h"
#include "tests/NEON/Accessor.h"
#include "tests/PaddingCalculator.h"
#include "tests/datasets/FullyConnectedLayerDataset.h"
#include "tests/framework/Asserts.h"
#include "tests/framework/Macros.h"
#include "tests/framework/datasets/Datasets.h"
#include "tests/validation/Validation.h"
#include "tests/validation/fixtures/FullyConnectedLayerFixture.h"

Go to the source code of this file.

Namespaces

 arm_compute
 Copyright (c) 2017-2022 Arm Limited.
 
 arm_compute::test
 
 arm_compute::test::validation
 

Typedefs

template<typename T >
using NEFullyConnectedLayerFixture = FullyConnectedLayerValidationFixture< Tensor, Accessor, NEFullyConnectedLayer, T >
 
template<typename T >
using NEFullyConnectedLayerMixedDataLayoutFixture = FullyConnectedLayerValidationFixture< Tensor, Accessor, NEFullyConnectedLayer, T, true >
 
template<typename T >
using NEFullyConnectedLayerDynamicWeightsFixture = FullyConnectedWithDynamicWeightsFixture< Tensor, Accessor, NEFullyConnectedLayer, T >
 
template<typename T >
using NEFullyConnectedLayerDynamicBiasFixture = FullyConnectedWithDynamicBiasFixture< Tensor, Accessor, NEFullyConnectedLayer, T >
 
template<typename T >
using NEFullyConnectedLayerQuantizedFixture = FullyConnectedLayerValidationQuantizedFixture< Tensor, Accessor, NEFullyConnectedLayer, T >
 
template<typename T >
using NEFullyConnectedLayerQuantizedMixedDataLayoutFixture = FullyConnectedLayerValidationQuantizedFixture< Tensor, Accessor, NEFullyConnectedLayer, T, true >
 

Functions

 TEST_CASE (MemoryInjection, framework::DatasetMode::ALL)
 Test case for memory injection in cpu::CpuWinogradConv2d. More...
 
 TEST_CASE (MultipleExecutionWithConfigure, framework::DatasetMode::ALL)
 Test case for memory injection in NEWinogradConvolutionLayer. More...
 
 TEST_CASE (Quant8_Signed_Mult_gt_1, framework::DatasetMode::ALL)
 Unit test for cpu::CpuFullyConnected with quantized multipler > 1. More...
 
 DATA_TEST_CASE (Validate, framework::DatasetMode::ALL, zip(zip(zip(zip(zip(zip(framework::dataset::make("InputInfo", { TensorInfo(TensorShape(9U, 5U, 7U, 3U), 1, DataType::F32), TensorInfo(TensorShape(8U, 4U, 6U, 4U), 1, DataType::F32), TensorInfo(TensorShape(8U, 4U, 6U, 4U), 1, DataType::F32), TensorInfo(TensorShape(9U, 5U, 7U, 3U), 1, DataType::F32), TensorInfo(TensorShape(9U, 5U, 7U, 3U), 1, DataType::F32), TensorInfo(TensorShape(8U, 4U, 6U, 4U), 1, DataType::F32), }), framework::dataset::make("WeightsInfo",{ TensorInfo(TensorShape(315U, 271U), 1, DataType::F16), TensorInfo(TensorShape(192U, 192U), 1, DataType::F32), TensorInfo(TensorShape(192U, 192U), 1, DataType::F32), TensorInfo(TensorShape(217U, 315U), 1, DataType::F32), TensorInfo(TensorShape(217U, 315U), 1, DataType::F32), TensorInfo(TensorShape(192U, 192U), 1, DataType::F32), })), framework::dataset::make("BiasInfo",{ TensorInfo(TensorShape(271U), 1, DataType::F32), TensorInfo(TensorShape(192U), 1, DataType::F32), TensorInfo(TensorShape(192U), 1, DataType::F32), TensorInfo(TensorShape(271U), 1, DataType::F32), TensorInfo(TensorShape(271U), 1, DataType::F32), TensorInfo(TensorShape(192U), 1, DataType::F32), })), framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(271U, 3U), 1, DataType::F32), TensorInfo(TensorShape(192U, 4U), 1, DataType::F32), TensorInfo(TensorShape(192U, 4U), 1, DataType::F32), TensorInfo(TensorShape(271U, 3U), 1, DataType::F32), TensorInfo(TensorShape(271U, 3U), 1, DataType::F32), TensorInfo(TensorShape(192U, 4U), 1, DataType::F32), })), framework::dataset::make("TransposeWeights",{ true, true, false, true, true, true })), framework::dataset::make("ReshapedWeights",{ false, false, false, false, false, false})), framework::dataset::make("Expected", { false, true, true, false, false, true })), input_info, weights_info, bias_info, output_info, transpose_weights, reshaped_weights, expected)
 
 FIXTURE_DATA_TEST_CASE (RunSmall, NEFullyConnectedLayerFixture< float >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallFullyConnectedLayerDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::F32)), EmptyActivationFunctionDataset))
 
 FIXTURE_DATA_TEST_CASE (RunMixedDataLayout, NEFullyConnectedLayerMixedDataLayoutFixture< float >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(combine(framework::dataset::make("Input", TensorShape(9U, 5U, 7U)), framework::dataset::make("Weights", TensorShape(315U, 271U))), framework::dataset::make("Biases", TensorShape(271U))), framework::dataset::make("Output", TensorShape(271U))), FullyConnectedParameters), framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))))
 
 FIXTURE_DATA_TEST_CASE (RunWithActivation, NEFullyConnectedLayerFixture< float >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::FullyConnectedLayerWithActivationDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::F32)), ActivationFunctionsDataset))
 
 FIXTURE_DATA_TEST_CASE (RunLarge, NEFullyConnectedLayerFixture< float >, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeFullyConnectedLayerDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::F32)), EmptyActivationFunctionDataset))
 
 FIXTURE_DATA_TEST_CASE (RunDynamicWeights, NEFullyConnectedLayerDynamicWeightsFixture< float >, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallFullyConnectedLayerDataset(), framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))))
 
 FIXTURE_DATA_TEST_CASE (RunSmall, NEFullyConnectedLayerQuantizedFixture< uint8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallFullyConnectedLayerDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8)), QuantizationData), EmptyActivationFunctionDataset))
 
 FIXTURE_DATA_TEST_CASE (RunMixedDataLayout, NEFullyConnectedLayerQuantizedMixedDataLayoutFixture< uint8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(combine(combine(framework::dataset::make("Input", TensorShape(9U, 5U, 7U)), framework::dataset::make("Weights", TensorShape(315U, 271U))), framework::dataset::make("Biases", TensorShape(271U))), framework::dataset::make("Output", TensorShape(271U))), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8)), QuantizationData), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))))
 
 FIXTURE_DATA_TEST_CASE (RunWithActivation, NEFullyConnectedLayerQuantizedFixture< uint8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::FullyConnectedLayerWithActivationDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8)), QuantizationData), ActivationFunctionsQuantizedDataset))
 
 FIXTURE_DATA_TEST_CASE (RunLarge, NEFullyConnectedLayerQuantizedFixture< uint8_t >, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeFullyConnectedLayerDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8)), QuantizationData), EmptyActivationFunctionDataset))
 
 FIXTURE_DATA_TEST_CASE (RunDynamicBias, NEFullyConnectedLayerDynamicBiasFixture< uint8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallFullyConnectedLayerDataset(), framework::dataset::make("DataType", DataType::QASYMM8)), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))))
 
 FIXTURE_DATA_TEST_CASE (RunSmall, NEFullyConnectedLayerQuantizedFixture< int8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallFullyConnectedLayerDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)), QuantizationData), EmptyActivationFunctionDataset))
 
 FIXTURE_DATA_TEST_CASE (RunMixedDataLayout, NEFullyConnectedLayerQuantizedMixedDataLayoutFixture< int8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(combine(combine(combine(framework::dataset::make("Input", TensorShape(9U, 5U, 7U)), framework::dataset::make("Weights", TensorShape(315U, 271U))), framework::dataset::make("Biases", TensorShape(271U))), framework::dataset::make("Output", TensorShape(271U))), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)), QuantizationData), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))))
 
 FIXTURE_DATA_TEST_CASE (RunWithActivation, NEFullyConnectedLayerQuantizedFixture< int8_t >, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::FullyConnectedLayerWithActivationDataset(), FullyConnectedParameters), framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)), QuantizationData), ActivationFunctionsQuantizedDataset))