IVGCVSW-3977 Add deserialization test for LOG_SOFTMAX
authorAron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Mon, 14 Oct 2019 15:43:13 +0000 (16:43 +0100)
committerÁron Virginás-Tar <aron.virginas-tar@arm.com>
Tue, 15 Oct 2019 13:17:19 +0000 (13:17 +0000)
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: I0139e521188381c789fdf2ceceeeaaa48427c6ab

CMakeLists.txt
src/armnnDeserializer/test/DeserializeLogSoftmax.cpp [new file with mode: 0644]

index 8973126..6bc6573 100644 (file)
@@ -767,6 +767,7 @@ if(BUILD_UNIT_TESTS)
             src/armnnDeserializer/test/DeserializeGreater.cpp
             src/armnnDeserializer/test/DeserializeInstanceNormalization.cpp
             src/armnnDeserializer/test/DeserializeL2Normalization.cpp
+            src/armnnDeserializer/test/DeserializeLogSoftmax.cpp
             src/armnnDeserializer/test/DeserializeMean.cpp
             src/armnnDeserializer/test/DeserializeMultiplication.cpp
             src/armnnDeserializer/test/DeserializeNormalization.cpp
diff --git a/src/armnnDeserializer/test/DeserializeLogSoftmax.cpp b/src/armnnDeserializer/test/DeserializeLogSoftmax.cpp
new file mode 100644 (file)
index 0000000..bcf4825
--- /dev/null
@@ -0,0 +1,128 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "ParserFlatbuffersSerializeFixture.hpp"
+#include "../Deserializer.hpp"
+
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_SUITE(Deserializer)
+
+struct LogSoftmaxFixture : public ParserFlatbuffersSerializeFixture
+{
+    explicit LogSoftmaxFixture(const std::string &shape,
+                               const std::string &beta,
+                               const std::string &axis,
+                               const std::string &dataType)
+    {
+        m_JsonString = R"(
+        {
+            inputIds: [0],
+            outputIds: [2],
+            layers: [
+                {
+                layer_type: "InputLayer",
+                layer: {
+                    base: {
+                        layerBindingId: 0,
+                        base: {
+                            index: 0,
+                            layerName: "InputLayer",
+                            layerType: "Input",
+                            inputSlots: [{
+                                index: 0,
+                                connection: { sourceLayerIndex:0, outputSlotIndex:0 },
+                                }],
+                            outputSlots: [{
+                                index: 0,
+                                tensorInfo: {
+                                    dimensions: )" + shape + R"(,
+                                    dataType: ")" + dataType + R"(",
+                                    quantizationScale: 0.5,
+                                    quantizationOffset: 0
+                                    },
+                                }]
+                            },
+                        }
+                    },
+                },
+            {
+            layer_type: "LogSoftmaxLayer",
+            layer : {
+                base: {
+                    index:1,
+                    layerName: "LogSoftmaxLayer",
+                    layerType: "LogSoftmax",
+                    inputSlots: [{
+                            index: 0,
+                            connection: { sourceLayerIndex:0, outputSlotIndex:0 },
+                        }],
+                    outputSlots: [{
+                        index: 0,
+                        tensorInfo: {
+                            dimensions: )" + shape + R"(,
+                            dataType: ")" + dataType + R"("
+                        },
+                        }],
+                    },
+                descriptor: {
+                    beta: ")" + beta + R"(",
+                    axis: )" + axis + R"(
+                    },
+                },
+            },
+            {
+            layer_type: "OutputLayer",
+            layer: {
+                base:{
+                    layerBindingId: 0,
+                    base: {
+                        index: 2,
+                        layerName: "OutputLayer",
+                        layerType: "Output",
+                        inputSlots: [{
+                            index: 0,
+                            connection: { sourceLayerIndex:1, outputSlotIndex:0 },
+                        }],
+                        outputSlots: [ {
+                            index: 0,
+                            tensorInfo: {
+                                dimensions: )" + shape + R"(,
+                                dataType: ")" + dataType + R"("
+                            },
+                        }],
+                    }
+                }},
+            }]
+        })";
+        SetupSingleInputSingleOutput("InputLayer", "OutputLayer");
+    }
+};
+
+struct LogSoftmaxFloat32Fixture : LogSoftmaxFixture
+{
+    LogSoftmaxFloat32Fixture() :
+        LogSoftmaxFixture("[ 1, 1, 2, 4 ]", // inputShape
+                          "1.0",            // beta
+                          "3",              // axis
+                          "Float32")        // dataType
+    {}
+};
+
+BOOST_FIXTURE_TEST_CASE(LogSoftmaxFloat32, LogSoftmaxFloat32Fixture)
+{
+    RunTest<4, armnn::DataType::Float32>(
+        0,
+        {
+            0.f, -6.f,  2.f, 4.f,
+            3.f, -2.f, 10.f, 1.f
+        },
+        {
+            -4.14297f, -10.14297f, -2.14297f, -0.14297f,
+            -7.00104f, -12.00104f, -0.00105f, -9.00104f
+        });
+}
+
+BOOST_AUTO_TEST_SUITE_END()