ncnn

Форк
0
/
test_softmax.cpp 
111 строк · 2.9 Кб
1
// Tencent is pleased to support the open source community by making ncnn available.
2
//
3
// Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4
//
5
// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
6
// in compliance with the License. You may obtain a copy of the License at
7
//
8
// https://opensource.org/licenses/BSD-3-Clause
9
//
10
// Unless required by applicable law or agreed to in writing, software distributed
11
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
// specific language governing permissions and limitations under the License.
14

15
#include "testutil.h"
16

17
static int test_softmax(const ncnn::Mat& a, int axis)
18
{
19
    ncnn::ParamDict pd;
20
    pd.set(0, axis); // axis
21
    pd.set(1, 1);    // fixbug0
22

23
    std::vector<ncnn::Mat> weights(0);
24

25
    int ret = test_layer("Softmax", pd, weights, a);
26
    if (ret != 0)
27
    {
28
        fprintf(stderr, "test_softmax failed a.dims=%d a=(%d %d %d) axis=%d\n", a.dims, a.w, a.h, a.c, axis);
29
    }
30

31
    return ret;
32
}
33

34
static int test_softmax_0()
35
{
36
    ncnn::Mat a = RandomMat(25, 27, 32);
37
    ncnn::Mat b = RandomMat(27, 29, 28);
38
    ncnn::Mat c = RandomMat(23, 25, 27);
39

40
    return 0
41
           || test_softmax(a, 0)
42
           || test_softmax(a, 1)
43
           || test_softmax(a, 2)
44
           || test_softmax(a, -1)
45
           || test_softmax(a, -2)
46
           || test_softmax(a, -3)
47

48
           || test_softmax(b, 0)
49
           || test_softmax(b, 1)
50
           || test_softmax(b, 2)
51
           || test_softmax(b, -1)
52
           || test_softmax(b, -2)
53
           || test_softmax(b, -3)
54

55
           || test_softmax(c, 0)
56
           || test_softmax(c, 1)
57
           || test_softmax(c, 2)
58
           || test_softmax(c, -1)
59
           || test_softmax(c, -2)
60
           || test_softmax(c, -3);
61
}
62

63
static int test_softmax_1()
64
{
65
    ncnn::Mat a = RandomMat(25, 32);
66
    ncnn::Mat b = RandomMat(27, 28);
67
    ncnn::Mat c = RandomMat(29, 27);
68

69
    return 0
70
           || test_softmax(a, 0)
71
           || test_softmax(a, 1)
72
           || test_softmax(a, -1)
73
           || test_softmax(a, -2)
74

75
           || test_softmax(b, 0)
76
           || test_softmax(b, 1)
77
           || test_softmax(b, -1)
78
           || test_softmax(b, -2)
79

80
           || test_softmax(c, 0)
81
           || test_softmax(c, 1)
82
           || test_softmax(c, -1)
83
           || test_softmax(c, -2);
84
}
85

86
static int test_softmax_2()
87
{
88
    ncnn::Mat a = RandomMat(128);
89
    ncnn::Mat b = RandomMat(124);
90
    ncnn::Mat c = RandomMat(127);
91

92
    return 0
93
           || test_softmax(a, 0)
94
           || test_softmax(a, -1)
95

96
           || test_softmax(b, 0)
97
           || test_softmax(b, -1)
98

99
           || test_softmax(c, 0)
100
           || test_softmax(c, -1);
101
}
102

103
int main()
104
{
105
    SRAND(7767517);
106

107
    return 0
108
           || test_softmax_0()
109
           || test_softmax_1()
110
           || test_softmax_2();
111
}
112

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.