33 return std::move(layer);
38 const auto inputDims = inputShapes[0].GetNumDimensions();
40 std::vector<unsigned int> dimSizes(inputDims);
42 for (
unsigned i = 0; i < inputDims; ++i)
44 dimSizes[i] = inputShapes[0][i];
47 TensorShape outputShape({ inputDims, dimSizes.data() });
49 return std::vector<TensorShape>({ outputShape });
67 if (inferredShapes.size() != 1) {
69 std::to_string(inferredShapes.size()) +
70 " elements - should only have 1.");
83 if (shapeDims != outputDims)
86 std::to_string(shapeDims) +
87 " and output dimension " +
88 std::to_string(outputDims) +
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const =0
Backends should implement their own CreateWorkload function with a switch statement.
void VerifyLayerConnections(unsigned int expectedConnections, const CheckLocation &location) const
const InputSlot & GetInputSlot(unsigned int index) const override
Get a const input slot handle by slot index.
void VerifyShapeInferenceType(const TensorShape &outputShape, ShapeInferenceMethod shapeInferenceMethod)
const OutputSlot & GetOutputSlot(unsigned int index=0) const override
Get the const output slot handle by slot index.
LayerType * CloneBase(Graph &graph, Params &&... params) const
const char * GetName() const override
Returns the name of the layer.
void ValidateAndCopyShape(const TensorShape &outputShape, const TensorShape &inferredShape, const ShapeInferenceMethod shapeInferenceMethod, const std::string &layerName, const unsigned int outputSlotIndex=0)
void SetAdditionalInfo(QueueDescriptor &descriptor) const
ShapeInferenceMethod m_ShapeInferenceMethod
LayerWithParameters(unsigned int numInputSlots, unsigned int numOutputSlots, LayerType type, const ScatterNdDescriptor ¶m, const char *name)
WorkloadInfo PrepInfoAndDesc(QueueDescriptor &descriptor) const
ScatterNdDescriptor m_Param
const TensorInfo & GetTensorInfo() const override
std::vector< TensorShape > InferOutputShapes(const std::vector< TensorShape > &inputShapes) const override
Infers the output shapes from given input shapes and layer properties.
void ValidateTensorShapesFromInputs() override
Check if the input tensor shape(s) will lead to a valid configuration of ScatterNdLayer.
ScatterNdLayer * Clone(Graph &graph) const override
Creates a dynamically-allocated copy of this layer.
virtual std::unique_ptr< IWorkload > CreateWorkload(const IWorkloadFactory &factory) const override
Makes a workload for the ScatterNd type.
ScatterNdLayer(const ScatterNdDescriptor ¶m, const char *name)
Constructor to create a ScatterNdLayer.
const TensorShape & GetShape() const
unsigned int GetNumDimensions() const
unsigned int GetNumElements() const
Function that calculates the tensor elements by multiplying all dimension size which are Specified.
Copyright (c) 2021 ARM Limited and Contributors.
void ScatterNd(const TensorInfo &inputInfo, const TensorInfo &indicesInfo, const TensorInfo &updatesInfo, Decoder< float > &input, Decoder< int > &indices, Decoder< float > &updates, Encoder< float > &output, ScatterNdDescriptor descriptor)
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below.
A ScatterNdDescriptor for the ScatterNdLayer.