Intel® oneAPI Data Analytics Library
Community support for building compute-intensive applications that run fast on Intel® architecture.

DAAL convolutional layer architecture

Alexandr_S_1
Beginner
216 Views

I have some questions about applying kernels for several input data matrixes.

For example, I have 3-channels image and convolutional layer with 4 kernels 5x5. My problem is how to apply filters(k1-k4) in the following way:

Red color is connection between the matrix of channel and the kernel. This connection means, which kernels I want to apply to this channel.

For example, I want to apply filter k1 to channel R and G and summ results of 2 convolutions to first output. Filter k2 must apply only to channel G. And so on. How to realise this network topology using DAAL?123.png

0 Kudos
1 Solution
Ruslan_I_Intel
Employee
217 Views

Hi Alexander,

Per our quick analysis, the problem admits this type of the decomposition:

asmirnov_net_small.png

where the arrows on the diagram denote connections (data flow) between layers. All convolutional layers have kernels of size 5x5 and strides equal to 1. You can find description of the layers mentioned on the diagram excluding Slice in the Developer Guide https://software.intel.com/en-us/node/681968. Respective examples are available at https://software.intel.com/en-us/node/564720.

Present version of the library does not provide support for such topology due to absence of Slice layer in Intel DAAL. We will analyze ways how to support this use-case.

In short term you can implement this Slice layer on your side by following conventions of the library API. Please, have a look at guide how to add user-defined algorithm to the library: https://software.intel.com/en-us/articles/intel-data-analytics-acceleration-library-intel-daal-how-t.... Intel DAAL is open sourced, and you can find out implementation of the similar layers in our official github repository https://github.com/01org/daal.

Please, let us know, if it addressed your question and/or if you need any help in development of the slice layer or on other library related aspects.

Ruslan

View solution in original post

3 Replies
Alexandr_S_1
Beginner
218 Views

There is a table of connections between feature maps of two layers in page 8 of research article written by Yann Lecun http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf. It explains, what I mean.

Ruslan_I_Intel
Employee
218 Views

Hi Alexander,

Per our quick analysis, the problem admits this type of the decomposition:

asmirnov_net_small.png

where the arrows on the diagram denote connections (data flow) between layers. All convolutional layers have kernels of size 5x5 and strides equal to 1. You can find description of the layers mentioned on the diagram excluding Slice in the Developer Guide https://software.intel.com/en-us/node/681968. Respective examples are available at https://software.intel.com/en-us/node/564720.

Present version of the library does not provide support for such topology due to absence of Slice layer in Intel DAAL. We will analyze ways how to support this use-case.

In short term you can implement this Slice layer on your side by following conventions of the library API. Please, have a look at guide how to add user-defined algorithm to the library: https://software.intel.com/en-us/articles/intel-data-analytics-acceleration-library-intel-daal-how-t.... Intel DAAL is open sourced, and you can find out implementation of the similar layers in our official github repository https://github.com/01org/daal.

Please, let us know, if it addressed your question and/or if you need any help in development of the slice layer or on other library related aspects.

Ruslan

Alexandr_S_1
Beginner
217 Views

Thanks Ruslan for a lot of details in your answer.

Reply