majianjia / nnom

A higher-level Neural Network library for microcontrollers.
Apache License 2.0
815 stars 235 forks source link

关于使用DW_Conv2D与Conv2D的移植后使用耗时的问题 #209

Open panhu opened 7 months ago

panhu commented 7 months ago

您好,我在移植后发现在权重很少的情况下,DW_Conv2D的耗时很短但是一旦接上Conv2D后耗时就急剧上升,可能单单DW_Conv2D时是几百微秒,后面接上Conv2D就到了4+毫秒了,权重差异不大都很少,为啥它们会有这么明显的区别?

layer[0] = Input(shape(1, 129, 2), nnom_input_data);
layer[1] = model.hook(DW_Conv2D(1, kernel(2, 5), stride(1, 1), dilation(1, 1), PADDING_SAME, &depthwise_conv2d_w, &depthwise_conv2d_b), layer[0]);
layer[2] = model.hook(Conv2D(32, kernel(1, 1), stride(1, 1), dilation(1, 1), PADDING_SAME, &conv2d_w, &conv2d_b), layer[1]);
majianjia commented 6 months ago

DW 计算量远小于 Conv2D(Pointwise) 看MobileNet原文可以发现pointwise占很大一部分的时间