{"id":295785,"date":"2019-12-17T16:27:18","date_gmt":"2019-12-17T16:27:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=295785"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=295785","title":{"rendered":"\u0421\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u043b\u043e\u0439: \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0430 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0443 \u0428\u043c\u0443\u044d\u043b\u044f \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/477718\/\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <\/h2>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/habr.com\/post\/471074\/\">\u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 <br \/>  <a href=\"https:\/\/github.com\/ermig1979\/Synet\" rel=\"nofollow\">Synet<\/a> \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 CPU.<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/post\/448436\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438. \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0441\u0438\u043b\u0438\u044f\u043c\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u043e\u043b\u0435\u0435 80% \u043e\u0442 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0443 \u043a\u0443\u0434\u0430 \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c? \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0436\u043d\u043e! \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0421 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0443 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u043c\u044b \u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cx\/pv\/ui\/cxpvui1ducmtlzml9vx4omwzz5s.png\" alt=\"image\"><\/div>\n<p>  <i><b>\u0428\u043c\u0443\u044d\u043b\u044c \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434 (Shmuel Winograd) 1936.01.04 \u2014 2019.03.25<\/b> \u2014 \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u0437\u0440\u0430\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u0438 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0443\u0447\u0435\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a, \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0424\u0443\u0440\u044c\u0435. <\/i><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438<\/h2>\n<p>  \u0425\u043e\u0442\u044f, \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0441 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c, \u043c\u044b \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u041f\u0443\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0435 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4bd\/095\/f2b\/4bd095f2bcf86edc82281b0428ae8c63.svg\" alt=\"$1\\times4$\" data-tex=\"inline\"><\/math>:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1cb\/aa2\/3ed\/1cbaa23ed379ec56130a551c9d1eedd4.svg\" alt=\"$d= \\begin{bmatrix}d_0 &amp; d_1 &amp; d_2 &amp; d_3\\end{bmatrix}^T, $\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/29e\/23e\/ef6\/29e23eef60b22fca16d1d8cd6e00475f.svg\" alt=\"$1\\times3$\" data-tex=\"inline\"><\/math>:   <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/893\/32c\/dc4\/89332cdc44dfca50847410a7d9910a80.svg\" alt=\"$g= \\begin{bmatrix}g_0 &amp; g_1 &amp; g_2\\end{bmatrix}^T, $\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0442\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0431\u0443\u0434\u0435\u0442:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/938\/e92\/bfc\/938e92bfcabf5c393afa0218ae5c61b4.svg\" alt=\"$F(2,3)= \\begin{bmatrix}d_0 g_0+d_1 g_1+d_2 g_2 \\\\ d_1 g_0+d_2 g_1+d_3 g_2\\end{bmatrix}. $\" data-tex=\"display\"><\/math><\/p>\n<p>  \u042d\u0442\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/48a\/7b3\/c41\/48a7b3c4185bcbcfad563d3b4c4ea811.svg\" alt=\"$F(2,3)=\\begin{bmatrix}d_0 &amp; d_1 &amp; d_2 \\\\ d_1 &amp; d_2 &amp; d_3 \\end{bmatrix} \\begin{bmatrix}g_0 \\\\ g_1 \\\\ g_2\\end{bmatrix} = \\begin{bmatrix}d_0 g_0+d_1 g_1+d_2 g_2 \\\\ d_1 g_0+d_2 g_1+d_3 g_2\\end{bmatrix} = \\begin{bmatrix}m_1+m_2+m_3 \\\\ m_2 - m_3 - m_4\\end{bmatrix}, (1)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b9b\/bda\/764\/b9bbda7649e573ec29d44bf2cde53a44.svg\" alt=\"$m_1=(d_0-d_2)g_0 , \\\\ m_2=(d_1-d_3)g_2 , \\\\ m_3=(d_1+d_2)\\frac{g_0+g_1+g_2}{2} , \\\\ m_4=(d_2-d_1)\\frac{g_0-g_1+g_2}{2} .$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441\u0442\u0430\u043b\u043e \u044f\u0432\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u041d\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/886\/8b1\/629\/8868b16293347df30eb4f8c223d64dc6.svg\" alt=\"$\\frac{g_0+g_1+g_2}{2}$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d94\/5a2\/325\/d945a23259ee54c2f57a183780f63ffe.svg\" alt=\"$\\frac{g_0-g_1+g_2}{2}$\" data-tex=\"inline\"><\/math> \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e 4 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c 6.<br \/>  \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (1) \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437:   <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/762\/159\/29b\/76215929b83b9648a01e0002144822f8.svg\" alt=\"$F(2,3)=A^T[(G g)\\odot(B^T d)] , (2)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0433\u0434\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/671\/469\/35c\/67146935cf5aba0e5a807a03b1a373cb.svg\" alt=\"$\\odot$\" data-tex=\"inline\"><\/math> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/051\/3a6\/2fc\/0513a62fc9ab7715e04932ee67acc9f1.svg\" alt=\"$B^T=\\begin{bmatrix}1 &amp; 0 &amp; -1 &amp; 0 \\\\ 0 &amp; 1 &amp; 1 &amp; 0 \\\\ 0 &amp; -1 &amp; 1 &amp; 0 \\\\ 0 &amp; 1 &amp; 0 &amp; -1\\end{bmatrix} , (3)\\\\ G=\\begin{bmatrix}1 &amp; 0 &amp; 0 \\\\ \\frac{1}{2} &amp; \\frac{1}{2} &amp; \\frac{1}{2} \\\\ \\frac{1}{2} &amp; -\\frac{1}{2} &amp; \\frac{1}{2} \\\\ 0 &amp; 0 &amp; 1\\end{bmatrix} , (4)\\\\ A^T = \\begin{bmatrix}1 &amp; 1 &amp; 1 &amp; 0 \\\\ 0 &amp; 1 &amp; -1 &amp; -1\\end{bmatrix} . (5)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (2) \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/dc8\/335\/4c2\/dc83354c267b105316d09699314b1758.svg\" alt=\"$F(2\\times2,3\\times3)=A^T\\bigg[[G g G^T]\\odot[B^T d B]\\bigg] A. (6)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0422\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e76\/b12\/ac1\/e76b12ac13d5efcbd275fb7aaa8c1523.svg\" alt=\"$F(2\\times2,3\\times3)$\" data-tex=\"inline\"><\/math> \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0441 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a94\/2a7\/729\/a942a772925ff266e51768cb4bfbf62b.svg\" alt=\"$2\\times2\\times3\\times3=36$\" data-tex=\"inline\"><\/math> \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2a4\/de7\/377\/2a4de7377af29d41554cf00bf0a21bb9.svg\" alt=\"$4\\times4=16$\" data-tex=\"inline\"><\/math>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/69a\/4ba\/98a\/69a4ba98a0de3c28fcf7cb62d7ff3195.svg\" alt=\"$\\frac{36}{16}=2.25$\" data-tex=\"inline\"><\/math> \u0440\u0430\u0437\u0430. \u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043c\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/303\/35c\/97c\/30335c97ce60ce47f6b21cd4c3053ec6.svg\" alt=\"$2\\times2$\" data-tex=\"inline\"><\/math>:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dm\/vf\/qf\/dmvfqftfe9xvvojxu1hspubbzvo.png\" alt=\"image\"><br \/>  \u0412 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0441 \u043e\u043a\u043d\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff6\/1df\/052\/ff61df0523d867c53b086a124739a826.svg\" alt=\"$r\\times s$\" data-tex=\"inline\"><\/math> \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e9f\/bbe\/c2a\/e9fbbec2ad9c447d5cc57054439b7979.svg\" alt=\"$m\\times n$\" data-tex=\"inline\"><\/math> \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/687\/390\/ef1\/687390ef1be1160b0ea9b76d2de63905.svg\" alt=\"$count = (m + r - 1)\\times(n + s - 1) , (7)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0430 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2a4\/0e6\/fd5\/2a40e6fd562169c7fa0cfffe46bdefb0.svg\" alt=\"$k = \\frac{m\\times n\\times r\\times s}{(m + r - 1)\\times(n + s - 1)} . (8)$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u0435\u043b\u0435, \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0445 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e2e\/33f\/15a\/e2e33f15a96008ca33579599483c4531.svg\" alt=\"$m$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/08d\/9fa\/efb\/08d9faefbe272bdf8fbb80773542e343.svg\" alt=\"$n$\" data-tex=\"inline\"><\/math> \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435\u0433\u043e 1 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443! \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430 \u0432\u0435\u0434\u0435\u0442 \u043a \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f20\/2d8\/1a8\/f202d81a83db921511d33aee97202741.svg\" alt=\"$B^T d B$\" data-tex=\"inline\"><\/math> \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/115\/d24\/f33\/115d24f330d2997f85718960d54e3e96.svg\" alt=\"$A^T [...] A$\" data-tex=\"inline\"><\/math> \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/616\/2b0\/075\/6162b007533b0819f93a097c37aa2544.svg\" alt=\"$4\\times4$\" data-tex=\"inline\"><\/math>.<\/p>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u0441 \u044f\u0434\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/452\/196\/be2\/452196be208df9afad0549459c7c81e0.svg\" alt=\"$3\\times3$\" data-tex=\"inline\"><\/math> \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/303\/35c\/97c\/30335c97ce60ce47f6b21cd4c3053ec6.svg\" alt=\"$2\\times2$\" data-tex=\"inline\"><\/math>. \u0421 \u0446\u0435\u043b\u044c\u044e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u0434\u0434\u0438\u043d\u0433 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0440\u0430\u0442\u043d\u044b 2.<\/p>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438, \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434:<\/p>\n<pre><code class=\"cpp\">float relu(float value) {     return value &gt; 0 ? return value : 0; }  void gemm_nn(int M, int N, int K, float alpha, const float * A, int lda,      float beta, const float * B, int ldb, float * C, int ldc) {   for (int i = 0; i &lt; M; ++i)     for (int j = 0; j &lt; N; ++j)     {       C[i*ldc + j] = beta;       for (int k = 0; k &lt; K; ++k)         C[i*ldc + j] += alpha * A[i*lda + k] * B[k*ldb + j];     } }  void im2col(const float * src, int srcC, int srcH, int srcW,     int kernelY, int kernelX, float * buf) {   int dstH = srcH - kernelY + 1;   int dstW = srcW - kernelX + 1;   for (int sc = 0; sc &lt; srcC; ++sc)     for (int ky = 0; ky &lt; kernelY; ++ky)       for (int kx = 0; kx &lt; kernelX; ++kx)         for (int dy = 0; dy &lt; dstH; ++dy)           for (int dx = 0; dx &lt; dstW; ++dx)             *buf++ = src[((b * srcC + sc)*srcH + dy + ky)*srcW + dx + kx]; }  void convolution(const float * src, int batch, int srcC, int srcH, int srcW,     int kernelY, int kernelX, int dilationY, int dilationX,     int strideY, int strideX, int padY, int padX, int padH, int padW, int group,     const float * weight, const float * bias, float * dst, int dstC, float * buf) {   int dstH = srcH - kernelY + 1;   int dstW = srcW - kernelX + 1;   int M = dstC;   int N = dstH * dstW;   int K = srcC * kernelY * kernelX;   for (int b = 0; b &lt; batch; ++b)   {     im2col(src, srcC, srcH, srcW, kernelY, kernelX, buf);     gemm_nn(M, N, K, 1, weight, K, 0, buf, N, dst, N));     for (int i = 0; i &lt; M; ++i)       for (int j = 0; j &lt; N; ++j)         dst[i*N+ j] = relu(dst[i*N + j] + bias[i]);     src += srcC*srcH*srcW;     dst += dstC*dstH*dstW;   } } <\/code><\/pre>\n<p>  \u0422\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u043c\u043e\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/448436\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c:<\/p>\n<pre><code class=\"plaintext\">strideY = strideY = dilationY = dilationX = group = 1, padY = padX = padH = padW = 0. <\/code><\/pre>\n<p>  <\/p>\n<h4>M\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0432\u0435\u0440\u0442\u043a\u0438<\/h4>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u0437\u0434\u0435\u0441\u044c \u0435\u0449\u0435 \u0440\u0430\u0437 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 (6):  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2c4\/69c\/e19\/2c469ce19232231a84abcdad4e77ec5e.svg\" alt=\"$F(2\\times2,3\\times3)=A^T\\bigg[[G g G^T]\\odot[B^T d B]\\bigg] A.$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/303\/35c\/97c\/30335c97ce60ce47f6b21cd4c3053ec6.svg\" alt=\"$2\\times2$\" data-tex=\"inline\"><\/math> \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/303\/35c\/97c\/30335c97ce60ce47f6b21cd4c3053ec6.svg\" alt=\"$2\\times2$\" data-tex=\"inline\"><\/math>. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e43\/eab\/c5d\/e43eabc5dff2c9ec8bc5b693c82b2106.svg\" alt=\"$(2 + 3 - 1)\\times(2 + 3 - 1)=16$\" data-tex=\"inline\"><\/math> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 16 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f20\/2d8\/1a8\/f202d81a83db921511d33aee97202741.svg\" alt=\"$B^T d B$\" data-tex=\"inline\"><\/math> \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0434\u0432\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0417\u0430\u0442\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 16 \u043c\u0430\u0442\u0440\u0438\u0446 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u044e\u0449\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/28a\/381\/4a8\/28a3814a809323495c97563713ae73f4.svg\" alt=\"$G g G^T$\" data-tex=\"inline\"><\/math>. 16 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3b3\/98a\/d9e\/3b398ad9ed8da0c71523257d42e3e3cb.svg\" alt=\"$A^T\\bigg[...\\bigg] A$\" data-tex=\"inline\"><\/math>. \u041d\u0438\u0436\u0435 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d \u043d\u0430 \u0441\u0445\u0435\u043c\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yj\/g2\/zd\/yjg2zdr_tyv5c6tefegtijq_ne8.png\" alt=\"image\"><\/p>\n<p>  \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u0442\u0438\u0445 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u0442 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"plaintext\">void convolution(const float * src, int batch, int srcC, int srcH, int srcW,     int kernelY, int kernelX, int dilationY, int dilationX,     int strideY, int strideX, int padY, int padX, int padH, int padW, int group,     const float * weight, const float * bias, float * dst, int dstC, float * buf) {   const int block = 2, kernel = 3;   int count = (block + kernel - 1)*(block + kernel - 1); \/\/ 16   int dstH = srcH - kernelY + 1;   int dstW = srcW - kernelX + 1;   int tileH = dstH \/ block;   int tileW = dstW \/ block;   int sizeW = srcC * dstC;   int sizeS = srcC * tileH * tileW;   int sizeD = dstC * tileH * tileW;   int M = dstC;   int N = tileH * tileW;   int K = srcC;   float * bufW = buf;   float * bufS = bufW + sizeW*count;   float * bufD = bufS + sizeS*count;   set_filter(weight, sizeW, bufW);   for (int b = 0; b &lt; batch; ++b)   {     set_input(src, srcC, srcH, srcW, bufS, sizeS);     for (int i = 0; i &lt; count; ++i)       gemm_nn(M, N, K, 1, bufW + i * sizeW, K,          bufS + i * sizeS, N, 0, bufD + i * sizeD, N));     set_output(bufD, sizeD, dst, dstC, dstH, dstW);     for (int i = 0; i &lt; M; ++i)       for (int j = 0; j &lt; N; ++j)         dst[i*N+ j] = relu(dst[i*N + j] + bias[i]);     src += srcC*srcH*srcW;     dst += dstC*dstH*dstW;   } } <\/code><\/pre>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: <b>~srcC*dstC*dstH*dstW*count<\/b>. \u0414\u0430\u043b\u0435\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0441\u043e\u0432, \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h4>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432<\/h4>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (6), \u043d\u0430\u0434 \u0432\u0435\u0441\u0430\u043c\u0438 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435: <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/28a\/381\/4a8\/28a3814a809323495c97563713ae73f4.svg\" alt=\"$G g G^T$\" data-tex=\"inline\"><\/math>, \u0433\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/560\/bd9\/7f2\/560bd97f235311a36dff00db005e6ab5.svg\" alt=\"$G$\" data-tex=\"inline\"><\/math> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 (4). \u041a\u043e\u0434 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"plaintext\">void set_filter(const float * src, int size, float * dst) {   for (int i = 0; i &lt; size; i += 1, src += 9, dst += 1)   {     dst[0 * size] = src[0];     dst[1 * size] = (src[0] + src[2] + src[1])\/2;     dst[2 * size] = (src[0] + src[2] - src[1])\/2;     dst[3 * size] = src[2];     dst[4 * size] = (src[0] + src[6] + src[3])\/2;     dst[5 * size] = ((src[0] + src[6] + src[3]) +          (src[2] + src[8] + src[5]) + (src[1] + src[7] + src[4]))\/4;     dst[6 * size] = ((src[0] + src[6] + src[3]) +          (src[2] + src[8] + src[5]) - (src[1] + src[7] + src[4]))\/4;     dst[7 * size] = (src[2] + src[8] + src[5])\/2;     dst[8 * size] = (src[0] + src[6] - src[3])\/2;     dst[9 * size] = ((src[0] + src[6] - src[3]) +          (src[2] + src[8] - src[5]) + (src[1] + src[7] - src[4]))\/4;     dst[10 * size] = ((src[0] + src[6] - src[3]) +          (src[2] + src[8] - src[5]) - (src[1] + src[7] - src[4]))\/4;     dst[11 * size] = (src[2] + src[8] - src[5])\/2;     dst[12 * size] = src[6];     dst[13 * size] = (src[6] + src[8] + src[7])\/2;     dst[14 * size] = (src[6] + src[8] - src[7])\/2;     dst[15 * size] = src[8];   } } <\/code><\/pre>\n<p>  \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u044d\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0440\u0430\u0437. \u041f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h4>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (6), \u043d\u0430\u0434 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435: <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f20\/2d8\/1a8\/f202d81a83db921511d33aee97202741.svg\" alt=\"$B^T d B$\" data-tex=\"inline\"><\/math>, \u0433\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/009\/965\/086\/0099650863bd389858729267de5fd2bb.svg\" alt=\"$B^T$\" data-tex=\"inline\"><\/math> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 (3). \u041a\u043e\u0434 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"plaintext\">void set_input(const float * src, int srcC, int srcH, int srcW,      float * dst, int size) {   int dstH = srcH - 2;   int dstW = srcW - 2;   for (int c = 0; c &lt; srcC; ++c)   {     for (int row = 0; row &lt; dstH; row += 2)     {       for (int col = 0; col &lt; dstW; col += 2)       {         float tmp[16];         for (int r = 0; r &lt; 4; ++r)           for (int c = c; c &lt; 4; ++c)             tmp[r * 4 + c] = src[(row + r) * srcW + col + c];         dst[0 * size] = (tmp[0] - tmp[8]) - (tmp[2] - tmp[10]);         dst[1 * size] = (tmp[1] - tmp[9]) + (tmp[2] - tmp[10]);         dst[2 * size] = (tmp[2] - tmp[10]) - (tmp[1] - tmp[9]);         dst[3 * size] = (tmp[1] - tmp[9]) - (tmp[3] - tmp[11]);         dst[4 * size] = (tmp[4] + tmp[8]) - (tmp[6] + tmp[10]);         dst[5 * size] = (tmp[5] + tmp[9]) + (tmp[6] + tmp[10]);         dst[6 * size] = (tmp[6] + tmp[10]) - (tmp[5] + tmp[9]);         dst[7 * size] = (tmp[5] + tmp[9]) - (tmp[7] + tmp[11]);         dst[8 * size] = (tmp[8] - tmp[4]) - (tmp[10] - tmp[6]);         dst[9 * size] = (tmp[9] - tmp[5]) + (tmp[10] - tmp[6]);         dst[10 * size] = (tmp[10] - tmp[6]) - (tmp[9] - tmp[5]);         dst[11 * size] = (tmp[9] - tmp[5]) - (tmp[11] - tmp[7]);         dst[12 * size] = (tmp[4] - tmp[12]) - (tmp[6] - tmp[14]);         dst[13 * size] = (tmp[5] - tmp[13]) + (tmp[6] - tmp[14]);         dst[14 * size] = (tmp[6] - tmp[14]) - (tmp[5] - tmp[13]);         dst[15 * size] = (tmp[5] - tmp[13]) - (tmp[7] - tmp[15]);         dst++;       }     }     src += srcW * srcH;   } } <\/code><\/pre>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f: <b>~srcH*srcW*srcC*count<\/b>.<\/p>\n<h4>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (6), \u043d\u0430\u0434 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435: <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/115\/d24\/f33\/115d24f330d2997f85718960d54e3e96.svg\" alt=\"$A^T [...] A$\" data-tex=\"inline\"><\/math>, \u0433\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/009\/965\/086\/0099650863bd389858729267de5fd2bb.svg\" alt=\"$B^T$\" data-tex=\"inline\"><\/math> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 (5). \u041a\u043e\u0434 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"plaintext\">void set_output(const float * src, int size,      float * dst, int dstC, int dstH, int dstW) {   for (int c = 0; c &lt; dstC; ++c)   {     for (int row = 0; row &lt; dstH; row += 2)     {       for (int col = 0; col &lt; dstW; col += 2)       {         float tmp[8];         tmp[0] = src[0 * size] + src[1 * size] + src[2 * size];         tmp[1] = src[1 * size] - src[2 * size] - src[3 * size];         tmp[2] = src[4 * size] + src[5 * size] + src[6 * size];         tmp[3] = src[5 * size] - src[6 * size] - src[7 * size];         tmp[4] = src[8 * size] + src[9 * size] + src[10 * size];         tmp[5] = src[9 * size] - src[10 * size] - src[11 * size];         tmp[6] = src[12 * size] + src[13 * size] + src[14 * size];         tmp[7] = src[13 * size] - src[14 * size] - src[15 * size];         dst[col + 0] = tmp[0] + tmp[2] + tmp[4];         dst[col + 1] = tmp[1] + tmp[3] + tmp[5];         dst[dstW + col + 0] = tmp[2] - tmp[4] - tmp[6];         dst[dstW + col + 1] = tmp[3] - tmp[5] - tmp[7];         src++;       }       dst += 2*dstW;     }   } } <\/code><\/pre>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f: <b>~dstH*dstW*dstC*count<\/b>.<\/p>\n<h2>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>  \u0412 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/303\/35c\/97c\/30335c97ce60ce47f6b21cd4c3053ec6.svg\" alt=\"$2\\times2$\" data-tex=\"inline\"><\/math>. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430: <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff0\/a17\/777\/ff0a1777757b35c2a1c7e8ef67184ebf.svg\" alt=\"$F(4\\times4,3\\times3)$\" data-tex=\"inline\"><\/math>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/616\/2b0\/075\/6162b007533b0819f93a097c37aa2544.svg\" alt=\"$4\\times4$\" data-tex=\"inline\"><\/math>, \u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u2014 36. \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0448, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 (8) \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c <b>4<\/b>. \u041e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0442\u0430\u043a\u0430\u044f \u0436\u0435, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <a href=\"https:\/\/github.com\/andravin\/wincnn\" rel=\"nofollow\">\u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Github<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044f\u0434\u0440\u0430 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430.<\/p>\n<p>  \u041c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <b>NCHW<\/b>, \u043d\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0438 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <b>NHWC<\/b> (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/post\/448436\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439, \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 (\u043f\u0440\u0438 \u0435\u0433\u043e \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e) \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a.<\/p>\n<p>  \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/ermig1979\/Simd\" rel=\"nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h2>\u041f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430<\/h2>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u043b\u044e\u0441\u044b:<\/p>\n<ul>\n<li>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 (\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 2-3 \u0440\u0430\u0437\u0430) \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u00ab\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e\u00bb \u043f\u0440\u0435\u0434\u0435\u043b\u0430.<\/li>\n<li>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li>\u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439: <b>NCHW<\/b>, <b>NHWC<\/b>.<\/li>\n<li>\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u041d\u0443 \u0438 \u043a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432:<\/p>\n<ul>\n<li>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044f\u0434\u0440\u0430 \u0441\u0432\u0435\u0440\u0442\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u0437\u0434\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0441 \u044f\u0434\u0440\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/452\/196\/be2\/452196be208df9afad0549459c7c81e0.svg\" alt=\"$3\\times3$\" data-tex=\"inline\"><\/math>.<\/li>\n<li>\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0441\u0442\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/616\/2b0\/075\/6162b007533b0819f93a097c37aa2544.svg\" alt=\"$4\\times4$\" data-tex=\"inline\"><\/math>.<\/li>\n<li>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0432\u0435\u0440\u0442\u043a\u0438 <b>strideY = strideY = dilationY = dilationX = group = 1<\/b>. \u0425\u043e\u0442\u044f \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0440\u0443\u0448\u0430\u044e\u0442\u0441\u044f, \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u043d\u0430 \u043c\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0438\u0437\u043a\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0430\u0434\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043c\u0430\u043b\u043e (\u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439).<\/li>\n<li>\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c). <\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  \u041c\u0435\u0442\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043e\u043d \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u0435\u043d \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u0440\u044f\u0434\u0430 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0439 <a href=\"https:\/\/habr.com\/post\/471074\/\">\u0441\u0435\u0440\u0438\u0438<\/a>. \u0416\u0434\u0443 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u043e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e!<\/p>\n<p>  <b>P.S.<\/b> \u042d\u0442\u043e\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043c\u043d\u043e\u0439 \u0432 <a href=\"http:\/\/ermig1979.github.io\/Simd\/help\/group__synet__convolution.html\" rel=\"nofollow\">Convolution Framework<\/a> \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/ermig1979\/Simd\" rel=\"nofollow\">Simd<\/a>.<br \/>  \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 <a href=\"https:\/\/github.com\/ermig1979\/Synet\" rel=\"nofollow\">Synet<\/a> \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 CPU.<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/477718\/\"> https:\/\/habr.com\/ru\/post\/477718\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/477718\/\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <\/h2>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/habr.com\/post\/471074\/\">\u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 <br \/>  <a href=\"https:\/\/github.com\/ermig1979\/Synet\" rel=\"nofollow\">Synet<\/a> \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 CPU.<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/post\/448436\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438. \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0441\u0438\u043b\u0438\u044f\u043c\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u043e\u043b\u0435\u0435 80% \u043e\u0442 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0443 \u043a\u0443\u0434\u0430 \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c? \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0436\u043d\u043e! \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0421 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0443 \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434\u0430 \u043c\u044b \u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cx\/pv\/ui\/cxpvui1ducmtlzml9vx4omwzz5s.png\" alt=\"image\"><\/div>\n<p>  <i><b>\u0428\u043c\u0443\u044d\u043b\u044c \u0412\u0438\u043d\u043e\u0433\u0440\u0430\u0434 (Shmuel Winograd) 1936.01.04 \u2014 2019.03.25<\/b> \u2014 \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u0437\u0440\u0430\u0438\u043b\u044c\u0441\u043a\u0438\u0439 \u0438 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0443\u0447\u0435\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a, \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0424\u0443\u0440\u044c\u0435. <\/i>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-295785","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=295785"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295785\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}