dnn模块的权重和偏差的内存布局是什么?

时间:2017-07-02 01:16:36

标签: c++ opencv deep-learning

我想知道dnn模块的内存布局,所以我可以将权重移植到另一个库。

我可以按照以下方式访问权重和偏见

cv::Mat weight = input_net.getParam(input_layer_name.c_str(), 0);
cv::Mat bias = input_net.getParam(input_layer_name.c_str(), 1);

如果我有一个卷积层,有3个输入滤波器,64个输出滤波器和3x3内核,那么内存布局怎么样?如果是卷积层,我应该有3 * 3 * 3 * 64权重和64偏差。我怎么知道每个重量和偏差在重量和偏差矩阵中的位置?

更确切地说,我如何访问图表中显示的权重(A,C,N)?

example

1 个答案:

答案 0 :(得分:2)

它有W x H x InCh x OutCh布局。从最低到最高指数。类似的东西:

w[0]: (x1, y1, inc1, outc1)
w[1]: (x2, y1, inc1, outc1)
...
w[n-1]: (xn, y1, inc1, outc1)
w[n]:   (x1, y2, inc1, outc1)
w[n+1]: (x2, y2, inc1, outc1)
...

并且进一步。