14 #include <arm_compute/runtime/NEON/functions/NEPoolingLayer.h> 18 using namespace armcomputetensorutils;
24 const arm_compute::TensorInfo aclInputInfo =
25 BuildArmComputeTensorInfo(input, descriptor.
m_DataLayout);
26 const arm_compute::TensorInfo aclOutputInfo =
27 BuildArmComputeTensorInfo(output, descriptor.
m_DataLayout);
29 arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);
31 return arm_compute::NEPoolingLayer::validate(&aclInputInfo, &aclOutputInfo, layerInfo);
40 arm_compute::ITensor& input = boost::polymorphic_downcast<IAclTensorHandle*>(
m_Data.
m_Inputs[0])->GetTensor();
41 arm_compute::ITensor& output = boost::polymorphic_downcast<IAclTensorHandle*>(
m_Data.
m_Outputs[0])->GetTensor();
44 input.info()->set_data_layout(aclDataLayout);
45 output.info()->set_data_layout(aclDataLayout);
47 arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(
m_Data.
m_Parameters);
49 auto layer = std::make_unique<arm_compute::NEPoolingLayer>();
50 layer->configure(&input, &output, layerInfo);
51 m_PoolingLayer.reset(layer.release());
57 m_PoolingLayer->run();
#define ARMNN_SCOPED_PROFILING_EVENT_NEON(name)
LayerDescriptor m_Parameters
void Execute() const override
const Pooling2dQueueDescriptor m_Data
NeonPooling2dWorkload(const Pooling2dQueueDescriptor &descriptor, const WorkloadInfo &info)
void ValidateInputsOutputs(const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const
A Pooling2dDescriptor for the Pooling2dLayer.
std::vector< ITensorHandle * > m_Outputs
std::vector< ITensorHandle * > m_Inputs
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
arm_compute::Status NeonPooling2dWorkloadValidate(const TensorInfo &input, const TensorInfo &output, const Pooling2dDescriptor &descriptor)