58 Star 280 Fork 3

腾讯开源/ncnn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.ci
.github
benchmark
cmake
docs
examples
images
python
src
tests
CMakeLists.txt
prng.h
test_absval.cpp
test_batchnorm.cpp
test_bias.cpp
test_binaryop.cpp
test_binaryop_1.cpp
test_binaryop_2.cpp
test_binaryop_3.cpp
test_bnll.cpp
test_c_api.cpp
test_cast.cpp
test_celu.cpp
test_clip.cpp
test_command.cpp
test_concat.cpp
test_concat_oom.cpp
test_convolution.cpp
test_convolution1d.cpp
test_convolution3d.cpp
test_convolution_1.cpp
test_convolution_2.cpp
test_convolution_3.cpp
test_convolution_oom.cpp
test_convolutiondepthwise.cpp
test_convolutiondepthwise1d.cpp
test_convolutiondepthwise3d.cpp
test_convolutiondepthwise_1.cpp
test_copyto.cpp
test_copyto_1.cpp
test_cpu.cpp
test_crop.cpp
test_crop_1.cpp
test_crop_2.cpp
test_crop_3.cpp
test_crop_oom.cpp
test_cumulativesum.cpp
test_deconvolution.cpp
test_deconvolution1d.cpp
test_deconvolution3d.cpp
test_deconvolutiondepthwise.cpp
test_deconvolutiondepthwise1d.cpp
test_deconvolutiondepthwise3d.cpp
test_deconvolutiondepthwise_1.cpp
test_deepcopy.cpp
test_deformableconv2d.cpp
test_deformableconv2d_1.cpp
test_deformableconv2d_2.cpp
test_deformableconv2d_3.cpp
test_deformableconv2d_4.cpp
test_dequantize.cpp
test_diag.cpp
test_dropout.cpp
test_einsum.cpp
test_eltwise.cpp
test_elu.cpp
test_embed.cpp
test_erf.cpp
test_expanddims.cpp
test_expression.cpp
test_flatten.cpp
test_fold.cpp
test_gelu.cpp
test_gemm.cpp
test_gemm_1.cpp
test_gemm_3.cpp
test_gemm_4.cpp
test_glu.cpp
test_gridsample.cpp
test_groupnorm.cpp
test_gru.cpp
test_hardsigmoid.cpp
test_hardswish.cpp
test_innerproduct.cpp
test_instancenorm.cpp
test_interp.cpp
test_interp_1.cpp
test_inversespectrogram.cpp
test_layernorm.cpp
test_lrn.cpp
test_lstm.cpp
test_mat_pixel.cpp
test_mat_pixel_affine.cpp
test_mat_pixel_drawing.cpp
test_mat_pixel_resize.cpp
test_mat_pixel_rotate.cpp
test_matmul.cpp
test_memorydata.cpp
test_mish.cpp
test_multiheadattention.cpp
test_multiheadattention_1.cpp
test_multiheadattention_oom.cpp
test_noop.cpp
test_normalize.cpp
test_packing.cpp
test_padding.cpp
test_paramdict.cpp
test_permute.cpp
test_pixelshuffle.cpp
test_pooling.cpp
test_pooling1d.cpp
test_pooling3d.cpp
test_power.cpp
test_prelu.cpp
test_priorbox.cpp
test_quantize.cpp
test_quantize_oom.cpp
test_reduction.cpp
test_relu.cpp
test_reorg.cpp
test_requantize.cpp
test_requantize_oom.cpp
test_reshape.cpp
test_reshape_1.cpp
test_reshape_oom.cpp
test_rmsnorm.cpp
test_rnn.cpp
test_roialign.cpp
test_roipooling.cpp
test_scale.cpp
test_selu.cpp
test_shrink.cpp
test_shufflechannel.cpp
test_sigmoid.cpp
test_slice.cpp
test_slice_oom.cpp
test_softmax.cpp
test_softmax_oom.cpp
test_softplus.cpp
test_spectrogram.cpp
test_squeeze.cpp
test_squeezenet.cpp
test_swish.cpp
test_tanh.cpp
test_tile.cpp
test_unaryop.cpp
test_unfold.cpp
test_yolov3detectionoutput.cpp
testutil.cpp
testutil.h
toolchains
tools
.astylerc
.clang-format
.gitattributes
.gitignore
.gitmodules
CITATION.cff
CMakeLists.txt
CONTRIBUTING.md
Info.plist
LICENSE.txt
MANIFEST.in
README.md
build-android.cmd
build.sh
codeformat.sh
package.sh
pyproject.toml
setup.py
克隆/下载
test_concat.cpp 7.14 KB
一键复制 编辑 原始数据 按行查看 历史
// Tencent is pleased to support the open source community by making ncnn available.
//
// Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
// in compliance with the License. You may obtain a copy of the License at
//
// https://opensource.org/licenses/BSD-3-Clause
//
// Unless required by applicable law or agreed to in writing, software distributed
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
#include "testutil.h"
static int test_concat(const std::vector<ncnn::Mat>& a, int axis)
{
ncnn::ParamDict pd;
pd.set(0, axis); //axis
std::vector<ncnn::Mat> weights(0);
int ret = test_layer("Concat", pd, weights, a);
if (ret != 0)
{
fprintf(stderr, "test_concat failed a[0].dims=%d a[0]=(%d %d %d %d) axis=%d\n", a[0].dims, a[0].w, a[0].h, a[0].d, a[0].c, axis);
}
return ret;
}
static int test_concat_0()
{
ncnn::Mat a[] = {
RandomMat(15, 5, 6, 13),
RandomMat(15, 5, 6, 20),
RandomMat(15, 5, 6, 24),
RandomMat(15, 5, 6, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
std::vector<ncnn::Mat> as(4);
as[0] = a[i];
as[1] = a[j];
as[2] = a[k];
as[3] = a[k];
int ret = test_concat(as, 0) || test_concat(as, -4);
if (ret != 0)
return ret;
}
}
}
return 0;
}
static int test_concat_1()
{
ncnn::Mat a[] = {
RandomMat(15, 3, 15, 13),
RandomMat(15, 3, 16, 20),
RandomMat(15, 3, 17, 24),
RandomMat(15, 3, 18, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 1) || test_concat(as, -3);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_2()
{
ncnn::Mat a[] = {
RandomMat(15, 15, 6, 13),
RandomMat(15, 16, 6, 20),
RandomMat(15, 17, 6, 24),
RandomMat(15, 18, 6, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 2) || test_concat(as, -2);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_3()
{
ncnn::Mat a[] = {
RandomMat(15, 5, 7, 13),
RandomMat(16, 5, 7, 20),
RandomMat(17, 5, 7, 24),
RandomMat(18, 5, 7, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 3) || test_concat(as, -1);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_4()
{
ncnn::Mat a[] = {
RandomMat(15, 13, 13),
RandomMat(15, 13, 20),
RandomMat(15, 13, 24),
RandomMat(15, 13, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
std::vector<ncnn::Mat> as(4);
as[0] = a[i];
as[1] = a[j];
as[2] = a[k];
as[3] = a[k];
int ret = test_concat(as, 0) || test_concat(as, -3);
if (ret != 0)
return ret;
}
}
}
return 0;
}
static int test_concat_5()
{
ncnn::Mat a[] = {
RandomMat(15, 15, 13),
RandomMat(15, 16, 20),
RandomMat(15, 17, 24),
RandomMat(15, 18, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 1) || test_concat(as, -2);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_6()
{
ncnn::Mat a[] = {
RandomMat(15, 13, 13),
RandomMat(16, 13, 20),
RandomMat(17, 13, 24),
RandomMat(18, 13, 48)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 2) || test_concat(as, -1);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_7()
{
ncnn::Mat a[] = {
RandomMat(19, 29),
RandomMat(19, 44),
RandomMat(19, 56),
RandomMat(19, 80)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
std::vector<ncnn::Mat> as(4);
as[0] = a[i];
as[1] = a[j];
as[2] = a[k];
as[3] = a[k];
int ret = test_concat(as, 0) || test_concat(as, -2);
if (ret != 0)
return ret;
}
}
}
return 0;
}
static int test_concat_8()
{
ncnn::Mat a[] = {
RandomMat(19, 29),
RandomMat(16, 44),
RandomMat(17, 56),
RandomMat(18, 80)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
std::vector<ncnn::Mat> as(3);
as[0] = a[i];
as[1] = a[i];
as[2] = a[i];
int ret = test_concat(as, 1) || test_concat(as, -1);
if (ret != 0)
return ret;
}
return 0;
}
static int test_concat_9()
{
ncnn::Mat a[] = {
RandomMat(29),
RandomMat(44),
RandomMat(56),
RandomMat(80)
};
const int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
std::vector<ncnn::Mat> as(4);
as[0] = a[i];
as[1] = a[j];
as[2] = a[k];
as[3] = a[k];
int ret = test_concat(as, 0) || test_concat(as, -1);
if (ret != 0)
return ret;
}
}
}
return 0;
}
int main()
{
SRAND(7767517);
return 0
|| test_concat_0()
|| test_concat_1()
|| test_concat_2()
|| test_concat_3()
|| test_concat_4()
|| test_concat_5()
|| test_concat_6()
|| test_concat_7()
|| test_concat_8()
|| test_concat_9();
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/Tencent/ncnn.git
git@gitee.com:Tencent/ncnn.git
Tencent
ncnn
ncnn
master

搜索帮助