diff options
author | Kevin May <kevin.may@arm.com> | 2024-02-26 09:12:23 +0000 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2024-03-12 16:59:29 +0000 |
commit | e3cc71663e39a2d46bad3ef7e6c146ff9a9e5b0e (patch) | |
tree | 2559295d707eb88b0370370ccca36f250856a6a5 /src/armnnSerializer/test | |
parent | 70dc5e9dc375c2feb306c7e709078c9f61ef8b1a (diff) | |
download | armnn-e3cc71663e39a2d46bad3ef7e6c146ff9a9e5b0e.tar.gz |
IVGCVSW-8230 Add ScatterNd to Serializer and Deserializer
* Added parsing functions to the serializer and deserializer
* Added ScatterNd and its Descriptor to the ArmnnSchema.fbs
* Added Unittest for Serializer and Deserializer
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I1ed674dc32d2e2d0d84dca4c7018984ea367ea50
Diffstat (limited to 'src/armnnSerializer/test')
-rw-r--r-- | src/armnnSerializer/test/SerializerTests.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp index bfe3fc6467..37acb0c1a5 100644 --- a/src/armnnSerializer/test/SerializerTests.cpp +++ b/src/armnnSerializer/test/SerializerTests.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2020-2023 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2020-2024 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -3065,4 +3065,46 @@ TEST_CASE("SerializeTile") deserializedNetwork->ExecuteStrategy(verifier); } +TEST_CASE("SerializeScatterNd") +{ + const std::string layerName("ScatterNd"); + const armnn::TensorInfo inputInfo ({ 5 }, armnn::DataType::Float32); + const armnn::TensorInfo outputInfo ({ 5 }, armnn::DataType::Float32); + const armnn::TensorInfo indicesInfo({ 3, 1 }, armnn::DataType::Float32, 0.0f, 0, true); + const armnn::TensorInfo updatesInfo ({ 3 }, armnn::DataType::Float32,0.0f, 0, true); + std::vector<float> indicesData = { 0, 2, 3 }; + const armnn::ConstTensor indices(indicesInfo, indicesData); + + std::vector<float> updatesData = { 4, 5, 6 }; + const armnn::ConstTensor updates(updatesInfo, updatesData); + + armnn::ScatterNdDescriptor desc; + + armnn::INetworkPtr network = armnn::INetwork::Create(); + armnn::IConnectableLayer* const inputLayer = network->AddInputLayer(0); + armnn::IConnectableLayer* const indicesLayer = network->AddConstantLayer(indices, "Indices"); + armnn::IConnectableLayer* const updatesLayer = network->AddConstantLayer(updates, "Updates"); + armnn::IConnectableLayer* const scatterNdLayer = network->AddScatterNdLayer(desc, layerName.c_str()); + armnn::IConnectableLayer* const outputLayer = network->AddOutputLayer(0); + + inputLayer->GetOutputSlot(0).Connect(scatterNdLayer->GetInputSlot(0)); + indicesLayer->GetOutputSlot(0).Connect(scatterNdLayer->GetInputSlot(1)); + updatesLayer->GetOutputSlot(0).Connect(scatterNdLayer->GetInputSlot(2)); + scatterNdLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0)); + + inputLayer->GetOutputSlot(0).SetTensorInfo(inputInfo); + indicesLayer->GetOutputSlot(0).SetTensorInfo(indicesInfo); + updatesLayer->GetOutputSlot(0).SetTensorInfo(updatesInfo); + scatterNdLayer->GetOutputSlot(0).SetTensorInfo(outputInfo); + + armnn::INetworkPtr deserializedNetwork = DeserializeNetwork(SerializeNetwork(*network)); + CHECK(deserializedNetwork); + + LayerVerifierBaseWithDescriptor<armnn::ScatterNdDescriptor> verifier(layerName, + {inputInfo, indicesInfo, updatesInfo}, + {outputInfo}, + desc); + deserializedNetwork->ExecuteStrategy(verifier); +} + } |