Why is my 1D convolution implementation not working?
The output shape comes out to 0x0x0.
Also where is the C API documenation?
More info:
I am linking against the arm64-v8a version for an android device with a qualcomm soc.
Secondary question
How do I get max performance for a 1d convolution. Where's the implementation for that max performance conv?
#include <iostream>
#include "ncnn/cpu.h"
#include "ncnn/net.h"
#include "ncnn/layer.h"
int main() {
int input_length = 1 << 16;
int kernel_length = 4;
ncnn::Mat input(input_length);
ncnn::Mat kernel(kernel_length);
std::cout << input.h << ' ' << input.w << ' ' << input.c << std::endl;
std::cout << kernel.h << ' ' << kernel.w << ' ' << kernel.c << std::endl;
ncnn::Mat output;
ncnn::Option opt;
opt.num_threads = 1;
ncnn::Layer* conv1d = ncnn::create_layer(81);
ncnn::ParamDict pd;
pd.set(0, 1);
pd.set(1, 1);
pd.set(2, 1);
pd.set(3, 0);
pd.set(4, (float)(kernel.w));
conv1d->load_param(pd);
conv1d->load_model(ncnn::ModelBinFromMatArray(&kernel));
conv1d->create_pipeline(opt);
conv1d->forward(input, output, opt);
conv1d->destroy_pipeline(opt);
delete conv1d;
std::cout << "Output shape: " << output.w << " x " << output.h << " x " << output.c << std::endl;
}
1条答案
按热度按时间gdrx4gfi1#
see #2568
use high level api