1 // 2 // Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "SoftmaxTestHelper.hpp" 7 8 #include <armnn_delegate.hpp> 9 10 #include <flatbuffers/flatbuffers.h> 11 #include <schema_generated.h> 12 13 #include <doctest/doctest.h> 14 15 namespace armnnDelegate 16 { 17 TEST_SUITE ("Softmax_GpuAccTests") 18 { 19 20 TEST_CASE ("Softmax_Standard_Beta_GpuAcc_Test") 21 { 22 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc }; 23 std::vector<float> expectedOutput = {0.00994190481, 0.0445565246, 0.0734612942, 0.329230666, 0.542809606, 24 0.710742831, 0.158588171, 0.0961885825, 0.0214625746, 0.0130177103}; 25 SoftmaxTestCase(tflite::BuiltinOperator_SOFTMAX, backends, 1, expectedOutput); 26 } 27 28 TEST_CASE ("Softmax_Different_Beta_GpuAcc_Test") 29 { 30 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc }; 31 std::vector<float> expectedOutput = {0.0946234912, 0.148399189, 0.172415257, 0.270400971, 0.314161092, 0.352414012, 32 0.224709094, 0.193408906, 0.123322964, 0.106145054}; 33 SoftmaxTestCase(tflite::BuiltinOperator_SOFTMAX, backends, 0.3, expectedOutput); 34 35 } 36 37 TEST_CASE ("Log_Softmax_GpuAcc_Test") 38 { 39 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc }; 40 std::vector<float> expectedOutput = 41 {-4.61099672, -3.11099672, -2.61099672, -1.11099672, -0.610996664, 42 -0.341444582, -1.84144461, -2.34144449, -3.84144449, -4.34144449}; 43 SoftmaxTestCase(tflite::BuiltinOperator_LOG_SOFTMAX, backends, 0, expectedOutput); 44 } 45 } // TEST_SUITE ("Softmax_GpuAccTests") 46 47 TEST_SUITE ("Softmax_CpuRefTests") 48 { 49 50 TEST_CASE ("Softmax_Standard_Beta_CpuRef_Test") 51 { 52 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef }; 53 std::vector<float> expectedOutput = { 54 0.00994190481, 0.0445565246, 0.0734612942, 0.329230666, 0.542809606, 55 0.710742831, 0.158588171, 0.0961885825, 0.0214625746, 0.0130177103}; 56 SoftmaxTestCase(tflite::BuiltinOperator_SOFTMAX, backends, 1, expectedOutput); 57 } 58 59 TEST_CASE ("Softmax_Different_Beta_CpuRef_Test") 60 { 61 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef }; 62 std::vector<float> expectedOutput = { 63 0.0946234912, 0.148399189, 0.172415257, 0.270400971, 0.314161092, 64 0.352414012, 0.224709094, 0.193408906, 0.123322964, 0.106145054}; 65 SoftmaxTestCase(tflite::BuiltinOperator_SOFTMAX, backends, 0.3, expectedOutput); 66 } 67 68 TEST_CASE ("Log_Softmax_CpuRef_Test") 69 { 70 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef }; 71 std::vector<float> expectedOutput = 72 {-4.61099672, -3.11099672, -2.61099672, -1.11099672, -0.610996664, 73 -0.341444582, -1.84144461, -2.34144449, -3.84144449, -4.34144449}; 74 SoftmaxTestCase(tflite::BuiltinOperator_LOG_SOFTMAX, backends, 0, expectedOutput); 75 } 76 } // TEST_SUITE ("Softmax_CpuRefTests") 77 } // namespace armnnDelegate 78