Intel® oneAPI Data Analytics Library
Learn from community members on how to build compute-intensive applications that run efficiently on Intel® architecture.

DAAL convolutional layer architecture

Alexandr_S_1
Beginner
852 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
853 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-to-add-user-defined-algorithm. 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

0 Kudos
3 Replies
Alexandr_S_1
Beginner
854 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.

0 Kudos
Ruslan_I_Intel
Employee
854 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-to-add-user-defined-algorithm. 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

0 Kudos
Alexandr_S_1
Beginner
853 Views

Thanks Ruslan for a lot of details in your answer.

0 Kudos
Reply