Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ncnn如何处理float浮点型数据? #373

Closed
shentu521 opened this issue Apr 24, 2018 · 6 comments
Closed

ncnn如何处理float浮点型数据? #373

shentu521 opened this issue Apr 24, 2018 · 6 comments

Comments

@shentu521
Copy link

我们caffe的模型数据是float*型的三个单通道数据,这个输入数据在ncnn上如何进行表示呢?

举例来说,比如我的输入数据是:2562564 × 3 ,但是ncnn一次性只能输入最大256×256*4的矩阵大小.

我是不是可以用:

ex.input("input_param", in)

输入是三个这样的。

或者:

cnn::Mat in = ncnn::Mat::from_pixels((const unsigned char*)input_data, ncnn::Mat::PIXEL_RGBA, input_size.width*3, input_size.height); 把width放大三倍??

@nihui
Copy link
Member

nihui commented Apr 27, 2018

float* data; // assume 3 * 256 * 256, RRR... GGG... BBB...
Mat in(256*256*3, data);
in = in.reshape(256, 256, 3);

@shentu521
Copy link
Author

老大,你这个真的是帮了大忙啊

@hdwf02
Copy link

hdwf02 commented Apr 15, 2019

float* data; // assume 3 * 256 * 256, RRR... GGG... BBB...
Mat in(256*256*3, data);
in = in.reshape(256, 256, 3);

大佬 我现在的输入数据是一个非图像类型的float数组(50乘50大小的),而且初始的模型是tensorflow格式的,通过->coreml->onnx->ncnn后,用您这种方法算出的数据不论输入什么数据,输出结果都是一样的。我如下方法调用的:
float* data; // assume50* 50...
Mat in(50* 50* 3, data);
in = in.reshape(50, 50, 1);
不论输入什么数据结果都一样,意思为上面的data数组,不管内容换为什么,模型运算输出结果都一样

@shenchao8607
Copy link

float* data; // assume 3 * 256 * 256, RRR... GGG... BBB...
Mat in(256*256*3, data);
in = in.reshape(256, 256, 3);

大佬 我现在的输入数据是一个非图像类型的float数组(50乘50大小的),而且初始的模型是tensorflow格式的,通过->coreml->onnx->ncnn后,用您这种方法算出的数据不论输入什么数据,输出结果都是一样的。我如下方法调用的:
float* data; // assume50* 50...
Mat in(50* 50* 3, data);
in = in.reshape(50, 50, 1);
不论输入什么数据结果都一样,意思为上面的data数组,不管内容换为什么,模型运算输出结果都一样

是的,我也遇到了同样的问题。无论输入是什么输出都不变。我的model是从caffe转ncnn的,也是处理非图片数据。调用方法和以上类似:
float * data;
Mat in(w,h,c, data)

希望大佬@nihui 解答!!

@nihui
Copy link
Member

nihui commented Jul 3, 2019

输出数据不对,建议 extract 前面几层的 blob 观察,找到计算出错的是哪一层

@nihui nihui closed this as completed Jul 3, 2019
@mei123hao
Copy link

mei123hao commented Apr 12, 2021

我想问下,现在我模型有一个opencv表示为cv_f32c3的三通道mat输入,我按照上面的提示用ncnn这样写我的输入:
cv::Mat img;
ncnn::Mat input6(img.rowsimg.cols3, (float*)img.data);
input6 = input6.reshape(img.cols, img.rows, 3);
但是貌似还是没办法得到正确的结果,请问是这样输入有问题吗?还是什么情况呢? @nihui 大佬能解答下吗?谢谢了!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants