{"id":483060,"date":"2026-06-09T22:07:56","date_gmt":"2026-06-09T22:07:56","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=483060"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=483060","title":{"rendered":"\u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<blockquote>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (AGI). \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u0439 \u0438 \u0440\u0430\u043d\u0435\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 LOR. \u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u0435\u0451 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043e\u0445\u0432\u0430\u0442\u0430 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u043e\u043c \u0441 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0430\u043c\u0438.<\/p>\n<\/blockquote>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 [<a href=\"https:\/\/habr.com\/ru\/articles\/1045518\/\" rel=\"noopener noreferrer nofollow\">1<\/a>] \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0435\u0451 \u043d\u0430 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>\u0412 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e: \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0434\u0430\u0451\u0442 \u0447\u0438\u0441\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0441\u0435\u0442\u0438. \u041d\u0435\u0439\u0440\u043e\u043d\u044b \u0432 \u0441\u043b\u043e\u044f\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u2014 \u0432\u0441\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043b\u043e\u044e.<\/p>\n<p>\u0411\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438\u043d\u0430\u0447\u0435. \u041e\u043d\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043f\u0430\u0439\u043a\u0430\u043c\u0438. \u0421\u043f\u0430\u0439\u043a \u2014 \u044d\u0442\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: \u043b\u0438\u0431\u043e \u043d\u0435\u0439\u0440\u043e\u043d \u201c\u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u043b\u201d, \u043b\u0438\u0431\u043e \u043d\u0435\u0442. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0432 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u0430 \u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438 \u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 [<a href=\"https:\/\/link.springer.com\/article\/10.1007\/s11047-025-10026-9\" rel=\"noopener noreferrer nofollow\">2<\/a>]. \u041c\u043e\u0437\u0433 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u044d\u0442\u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432: \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u0439\u0440\u043e\u043d \u201c\u0449\u0435\u043b\u043a\u0430\u0435\u0442\u201d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0432 \u043c\u043e\u0437\u0433\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u0435\u0439. \u041e\u0434\u0438\u043d \u043d\u0435\u0439\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 3 \u0441\u043f\u0430\u0439\u043a\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 10, \u0438 \u043c\u043e\u0437\u0433 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u043e, \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u044b, \u043d\u043e \u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0438\u0442\u043c \u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432.<\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u043d\u0435\u0439\u0440\u043e\u043d \u0441 \u0443\u0442\u0435\u0447\u043a\u043e\u0439\u201d (Leaky Integrate-and-Fire, LIF). \u041e\u043d \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430: \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u201c\u0443\u0442\u0435\u043a\u0430\u0435\u0442\u201d \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0435\u0439\u0440\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0430\u0439\u043a \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e [<a href=\"https:\/\/link.springer.com\/article\/10.1007\/s11047-025-10026-9\" rel=\"noopener noreferrer nofollow\">2<\/a>].<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c brain_spiking.py \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python3import torchfrom torch import nnimport torch.nn.functional as Fimport networkx as nximport math<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<ul>\n<li>\n<p><code>tau_mem<\/code> \u2014 \u00ab\u0432\u0440\u0435\u043c\u044f \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u0435\u043c \u0434\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0439\u0440\u043e\u043d \u00ab\u043f\u043e\u043c\u043d\u0438\u0442\u00bb \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b.<\/p>\n<\/li>\n<li>\n<p><code>tau_syn<\/code> \u2014 \u00ab\u0432\u0440\u0435\u043c\u044f \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u043e\u043a\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0437\u0430\u0442\u0443\u0445\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><code>threshold<\/code> \u2014 \u043f\u043e\u0440\u043e\u0433, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u043f\u0430\u0439\u043a\u0430\u0435\u0442, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<\/li>\n<li>\n<p><code>reset<\/code> \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043f\u0430\u0439\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class LIFNeuron(nn.Module):    def __init__(self, tau_mem: float = 20.0, tau_syn: float = 5.0, threshold: float = 2.0, reset: float = 0.0):        super().__init__()        self.threshold = threshold        self.reset = reset        self.register_buffer('alpha', torch.tensor(math.exp(-1.0 \/ tau_mem)))        self.register_buffer('beta', torch.tensor(math.exp(-1.0 \/ tau_syn)))            def forward(self, input_current, mem, syn):        syn = self.beta * syn + input_current        mem = self.alpha * mem + syn        spike = (mem &gt;= self.threshold).float()        mem = mem * (1.0 - spike) + self.reset * spike        return spike, mem, syn<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <code>input_current<\/code> \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u043e\u043a <code>syn<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b <code>mem<\/code>. \u0415\u0441\u043b\u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435\u0439\u0440\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043f\u0430\u0439\u043a \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u0443 \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e <code>self.reset<\/code>. \u041f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u043c \u0442\u043e\u043a\u0435 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u044f <code>self.alpha<\/code>.<\/p>\n<p>\u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0441 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043d\u0430 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0435 LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u044b. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0432 \u0442\u043e\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430. \u042d\u0442\u0438 \u0442\u043e\u043a\u0438 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043b\u043e\u0438 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 80% \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u0438 20% \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 [<a href=\"https:\/\/link.springer.com\/article\/10.1007\/s00422-025-01030-4\" rel=\"noopener noreferrer nofollow\">3<\/a>]. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u043e\u0433\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0443\u0442\u0435\u0447\u043a\u0438. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0430\u0438\u043c\u0438\u043d\u0433\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u0438 ReLU, \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<pre><code class=\"python\">class SpikeColumn(nn.Module):    def __init__(self, in_feat: int, out_feat: int, e_i_ratio: float = 0.8, tau_mem: float = 20.0, tau_syn: float = 5.0):        super().__init__()        self.out_feat = out_feat        self.n_exc = int(out_feat * e_i_ratio)        self.n_inh = out_feat - self.n_exc        self.fc_exc = nn.Linear(in_feat, self.n_exc, bias=False)        self.fc_inh = nn.Linear(in_feat, self.n_inh, bias=False)        self.lif_exc = LIFNeuron(tau_mem=tau_mem, tau_syn=tau_syn, threshold=2.5)        self.lif_inh = LIFNeuron(tau_mem=tau_mem*0.8, tau_syn=tau_syn*0.8, threshold=2.0)        nn.init.kaiming_normal_(self.fc_exc.weight, nonlinearity='relu')        nn.init.kaiming_normal_(self.fc_inh.weight, nonlinearity='relu')                with torch.no_grad():            self.fc_exc.weight *= 0.3            self.fc_inh.weight *= -0.3            def init_state(self, batch_size, device):        return {            'mem_exc': torch.zeros(batch_size, self.n_exc, device=device),            'syn_exc': torch.zeros(batch_size, self.n_exc, device=device),            'mem_inh': torch.zeros(batch_size, self.n_inh, device=device),            'syn_inh': torch.zeros(batch_size, self.n_inh, device=device),        }        def forward(self, spike_input, state):        current_exc = self.fc_exc(spike_input)        current_inh = self.fc_inh(spike_input)        spike_exc, mem_exc, syn_exc = self.lif_exc(current_exc, state['mem_exc'], state['syn_exc'])        spike_inh, mem_inh, syn_inh = self.lif_inh(current_inh, state['mem_inh'], state['syn_inh'])        spikes = torch.cat([spike_exc, -spike_inh], dim=1)        new_state = {            'mem_exc': mem_exc,            'syn_exc': syn_exc,            'mem_inh': mem_inh,            'syn_inh': syn_inh,        }        return spikes, new_state<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 (\u043c\u0435\u0442\u043e\u0434 forward) \u043d\u0430\u0448\u0430 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043f\u0430\u0439\u043a\u0438 \u0432 \u0442\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0430 \u201c\u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430\u201d \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<pre><code class=\"python\">def make_small_world(num_nodes: int, k: int = 4, p: float = 0.1) -&gt; torch.Tensor:    G = nx.watts_strogatz_graph(num_nodes, k, p)    adj = torch.zeros(num_nodes, num_nodes, dtype=torch.float32)    for i, j in G.edges():        adj[i, j] = 1.0        adj[j, i] = 1.0    return adj<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0441\u043f\u0430\u0439\u043a\u0438 \u2014 \u043e\u043d\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e: \u0435\u0441\u043b\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u0438\u0445 \u0441\u0432\u044f\u0437\u044c \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f; \u0435\u0441\u043b\u0438 \u0440\u0435\u0434\u043a\u043e \u2014 \u043e\u0441\u043b\u0430\u0431\u0435\u0432\u0430\u0435\u0442. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u201c\u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430\u201d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c STDP (Spike-Timing-Dependent Plasticity), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043b\u0443 \u044d\u0442\u0438\u0445 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a:<\/p>\n<pre><code class=\"python\">class STDP(nn.Module):    def __init__(self, num_columns: int, tau_plus: float = 20.0, tau_minus: float = 20.0, a_plus: float = 0.01, a_minus: float = 0.012, formation_threshold: float = 0.8, pruning_threshold: float = 0.05, max_density: float = 0.25):        super().__init__()        self.num_columns = num_columns        self.a_plus = a_plus        self.a_minus = a_minus        self.formation_threshold = formation_threshold        self.pruning_threshold = pruning_threshold        self.max_density = max_density        self.register_buffer('decay_plus', torch.tensor(math.exp(-1.0 \/ tau_plus)))        self.register_buffer('decay_minus', torch.tensor(math.exp(-1.0 \/ tau_minus)))        self.register_buffer('connection_potential', torch.zeros(num_columns, num_columns))        self.register_buffer('connection_usage', torch.zeros(num_columns, num_columns))            def compute_update(self, pre_spikes, post_spikes, pre_trace, post_trace):        pre_trace = self.decay_plus * pre_trace + pre_spikes        post_trace = self.decay_minus * post_trace + post_spikes        ltp = self.a_plus * torch.ger(post_spikes, pre_trace)        ltd = -self.a_minus * torch.ger(post_trace, pre_spikes)        return ltp + ltd, pre_trace, post_trace        def update_connection_potential(self, pre_activity, post_activity):        correlation = torch.ger(post_activity, pre_activity)        self.connection_potential = 0.99 * self.connection_potential + 0.01 * correlation            def update_connection_usage(self, adjacency_mask, weight_strength):        usage = adjacency_mask * weight_strength.abs()        self.connection_usage = 0.95 * self.connection_usage + 0.05 * usage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p>\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c: STDP \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0430 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 (CPU \u0438\u043b\u0438 GPU), \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 STDP \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c \u0441\u043f\u0430\u0439\u043a\u0430\u0442\u044c \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 [<a href=\"https:\/\/www.frontiersin.org\/journals\/computational-neuroscience\/articles\/10.3389\/fncom.2025.1737839\/full\" rel=\"noopener noreferrer nofollow\">4<\/a>]. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0432 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 [<a href=\"https:\/\/www.nature.com\/articles\/s41528-025-00512-6\" rel=\"noopener noreferrer nofollow\">5<\/a>] \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/blockquote>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b pre_spikes \u0438 post_spikes \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043e\u043a (\u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0432\u0441\u0435\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435) [<a href=\"https:\/\/arxiv.org\/pdf\/2509.03281\" rel=\"noopener noreferrer nofollow\">6<\/a>]. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u044b \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0447\u0430\u0441\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0441\u0430 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u044b STDP \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0432\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430:<\/p>\n<ul>\n<li>\n<p>Long-Term Potentiation (LTP) \u2014 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439<\/p>\n<\/li>\n<li>\n<p>Long-Term Depression (LTD) \u2014 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:<\/p>\n<ul>\n<li>\n<p>connection_potential \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>connection_usage \u2014 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e-\u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a:<\/p>\n<pre><code class=\"python\">class DynamicTopologyNetwork(nn.Module):    def __init__(self,                 num_columns: int = 64,                 in_dim: int = 784,                 col_out: int = 128,                 top_out: int = 10,                 graph_k: int = 8,                 graph_p: float = 0.15,                 time_steps: int = 50,                 e_i_ratio: float = 0.8,                 tau_mem: float = 20.0,                 tau_syn: float = 5.0,                 use_dynamic_topology: bool = True,                 topology_update_freq: int = 100,                 stdp_lr: float = 5e-5):        super().__init__()        self.num_columns = num_columns        self.time_steps = time_steps        self.col_out = col_out        self.use_dynamic_topology = use_dynamic_topology        self.topology_update_freq = topology_update_freq        self.stdp_lr = stdp_lr        self.register_buffer('training_step', torch.tensor(0))        self.input_scale = nn.Parameter(torch.ones(in_dim) * 0.5)        self.columns = nn.ModuleList([SpikeColumn(in_dim, col_out, e_i_ratio=e_i_ratio, tau_mem=tau_mem, tau_syn=tau_syn) for _ in range(num_columns)])        initial_topology = make_small_world(num_columns, k=graph_k, p=graph_p)        if use_dynamic_topology:            self.topology = nn.Parameter(initial_topology, requires_grad=False)        else:            self.register_buffer('topology', initial_topology)        self.inter_weights = nn.Parameter(torch.randn(num_columns, num_columns) * 0.05)        self.stdp = STDP(num_columns)        self.register_buffer('pre_trace', torch.zeros(num_columns))        self.register_buffer('post_trace', torch.zeros(num_columns))        self.readout = nn.Sequential(            nn.Linear(num_columns * col_out, 512),            nn.ReLU(),            nn.Dropout(0.2),            nn.Linear(512, top_out)        )        self.register_buffer('spike_rate_avg', torch.ones(num_columns) * 0.05)        self.register_buffer('target_rate', torch.tensor(0.05))            def _update_topology(self):        with torch.no_grad():            current_density = self.topology.sum().item() \/ (self.num_columns ** 2)            no_connection = (self.topology.data == 0)            high_potential = (self.stdp.connection_potential &gt; self.stdp.formation_threshold)            candidates_for_formation = no_connection &amp; high_potential            if current_density &lt; self.stdp.max_density:                num_to_add = int((self.stdp.max_density - current_density) * self.num_columns ** 2)                if num_to_add &gt; 0 and candidates_for_formation.sum() &gt; 0:                    potential_flat = self.stdp.connection_potential[candidates_for_formation]                    if len(potential_flat) &gt; num_to_add:                        threshold = torch.topk(potential_flat, num_to_add).values[-1]                        to_add = candidates_for_formation &amp; (self.stdp.connection_potential &gt;= threshold)                    else:                        to_add = candidates_for_formation                    self.topology.data[to_add] = 1.0                    num_added = to_add.sum().item()            has_connection = (self.topology.data &gt; 0)            low_usage = (self.stdp.connection_usage &lt; self.stdp.pruning_threshold)            weak_weights = (self.inter_weights.data.abs() &lt; 0.1)            candidates_for_pruning = has_connection &amp; low_usage &amp; weak_weights            num_to_remove = candidates_for_pruning.sum().item()            if num_to_remove &gt; 0:                self.topology.data[candidates_for_pruning] = 0.0                self.inter_weights.data[candidates_for_pruning] = 0.0    def _poisson_encode(self, x, deterministic=False):        x_scaled = torch.sigmoid(x * self.input_scale) * 0.5        if deterministic:            k = int(x.shape[1] * 0.1)            topk_vals, topk_idx = torch.topk(x_scaled, k, dim=1)            spikes = torch.zeros_like(x_scaled)            spikes.scatter_(1, topk_idx, (topk_vals &gt; 0.3).float())        else:            spikes = (torch.rand_like(x_scaled) &lt; x_scaled).float()                return spikes        def forward(self, x, learn: bool = False):        batch_size = x.shape[0]        device = x.device        column_states = [col.init_state(batch_size, device) for col in self.columns]        spike_accumulator = torch.zeros(batch_size, self.num_columns, self.col_out, device=device)        inter_weights = torch.sigmoid(self.inter_weights) * self.topology        if learn:            pre_spikes_history = []            post_spikes_history = []        for t in range(self.time_steps):            input_spikes = self._poisson_encode(x, deterministic=not self.training)            current_column_spikes = []            for col_idx, column in enumerate(self.columns):                spikes, new_state = column(input_spikes, column_states[col_idx])                column_states[col_idx] = new_state                current_column_spikes.append(spikes)            all_spikes = torch.stack(current_column_spikes, dim=1)            col_spike_rates = all_spikes.mean(dim=2)            inter_influence = torch.matmul(col_spike_rates, inter_weights.t())            modulated_spikes = all_spikes * (1.0 + 0.1 * inter_influence.unsqueeze(-1))            spike_accumulator += modulated_spikes            if learn:                current_activity = col_spike_rates.mean(dim=0).detach()                if t &lt; self.time_steps - 1:                    pre_spikes_history.append(current_activity)                if t &gt; 0:                    post_spikes_history.append(current_activity)        if learn and len(pre_spikes_history) &gt; 1:            with torch.no_grad():                current_avg_rate = spike_accumulator.abs().mean() \/ self.time_steps                adaptive_lr = self.stdp_lr * (self.target_rate \/ (current_avg_rate + 1e-6)).clamp(0.5, 2.0)                for i in range(0, len(pre_spikes_history), 10):                    pre = pre_spikes_history[i]                    post = post_spikes_history[i]                    self.stdp.update_connection_potential(pre, post)                    self.stdp.update_connection_usage(self.topology, self.inter_weights)                    delta, self.pre_trace, self.post_trace = self.stdp.compute_update(                        pre, post, self.pre_trace, self.post_trace                    )                    delta = delta * self.topology                    self.inter_weights.data += adaptive_lr * delta                    self.inter_weights.data.clamp_(-2.0, 2.0)                if self.use_dynamic_topology:                    self.training_step += 1                    if self.training_step % self.topology_update_freq == 0:                        self._update_topology()        spike_rates = spike_accumulator \/ self.time_steps        with torch.no_grad():            current_rates = spike_rates.abs().mean(dim=(0, 2))            self.spike_rate_avg = 0.95 * self.spike_rate_avg + 0.05 * current_rates            if self.training:                mean_rate = current_rates.mean()                if mean_rate &lt; 0.03:                    self.target_rate = torch.clamp(self.target_rate * 1.1, 0.03, 0.08)                elif mean_rate &gt; 0.08:                    self.target_rate = torch.clamp(self.target_rate * 0.9, 0.03, 0.08)        scale = torch.clamp(self.target_rate \/ (self.spike_rate_avg.unsqueeze(-1) + 1e-6), 0.3, 3.0)        spike_rates = spike_rates * scale.unsqueeze(0)        features = spike_rates.reshape(batch_size, -1)        logits = self.readout(features)                return logits, current_rates<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c (SNN) \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0449\u0430\u044f\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f (\u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e) \u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u0442\u044c (\u043a\u043e\u0433\u0434\u0430 \u0441\u0432\u044f\u0437\u044c \u0441\u043b\u0430\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f), \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u043c \u0441\u0435\u0442\u044f\u043c [<a href=\"https:\/\/arxiv.org\/pdf\/2512.11743\" rel=\"noopener noreferrer nofollow\">7<\/a>]. STDP \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0432\u0435\u0441\u0430, \u0433\u0434\u0435 small world \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u044c.<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0438: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b:<\/p>\n<ul>\n<li>\n<p>LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u044b \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 (80%) \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 (20%) \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u2014 \u044d\u0442\u043e \u201c\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u201d \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430. \u041e\u043d \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0443\u0442\u0435\u043a\u0430\u0435\u0442 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 tau_mem). \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u0430, \u043d\u0435\u0439\u0440\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043f\u0430\u0439\u043a \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0430\u0439\u043a\u0438 \u2014 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043e\u0439, \u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u0442\u043e\u0447\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u043f\u0430\u0439\u043a\u043e\u0432. \u041d\u0435\u0439\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 3, 10 \u0438\u043b\u0438 50 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d.<\/p>\n<\/li>\n<li>\n<p>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u2014 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0422\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0442 \u043e\u0431\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u044b\u0449\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f.<\/p>\n<p>2. \u041c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438: \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0430\u043c\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0435\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>STDP (Spike-Timing-Dependent Plasticity) \u2014 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u0430\u0440 \u043a\u043e\u043b\u043e\u043d\u043e\u043a. \u0415\u0441\u043b\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 B \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 A, \u0438\u0445 \u0441\u0432\u044f\u0437\u044c \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f (LTP). \u0415\u0441\u043b\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u2014 \u0441\u0432\u044f\u0437\u044c \u043e\u0441\u043b\u0430\u0431\u043b\u044f\u0435\u0442\u0441\u044f (LTD).<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u2014 STDP \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 connection_potential \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0438\u0437\u043c\u0435\u0440\u044f\u044f, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435. \u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u2014 \u0435\u0441\u043b\u0438 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0439 connection_potential (\u0432\u044b\u0448\u0435 \u043f\u043e\u0440\u043e\u0433\u0430 formation_threshold), \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u044c. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0435\u0442\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 (pruning) \u2014 \u0441\u043b\u0430\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u0438\u0437\u043a\u0438\u043c connection_usage \u0438 \u043c\u0430\u043b\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0435\u0442\u0438 \u2014 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 <em>update<\/em>topology() \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 (\u043a\u0430\u0436\u0434\u044b\u0435 topology_update_freq \u0448\u0430\u0433\u043e\u0432) \u043f\u0435\u0440\u0435\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u0444 \u0441\u0432\u044f\u0437\u0435\u0439: \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435. \u0421\u0435\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u201c\u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u044f\u201d \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0445 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 \u2014 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0445 \u0441\u043e\u0442\u0435\u043d \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u042d\u0442\u0438 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0433\u0438\u0431\u043a\u0443\u044e \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b train_spiking_brain.py \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0438 \u043d\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 MNIST. \u041c\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043d\u0430 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435. \u0426\u0435\u043b\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u2014 \u043d\u0435 \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0449\u0430\u044f \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0441\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u043e\u0433\u0430\u0442\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 [<a href=\"https:\/\/www.mdpi.com\/2306-5354\/12\/6\/628\" rel=\"noopener noreferrer nofollow\">8<\/a>]. \u041a\u043e\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435:<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python3import torchimport torch.nn.functional as Ffrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderfrom brain_spiking import DynamicTopologyNetworkimport timebatch_size    = 128               # \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044fepochs        = 40                # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u044b\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432 \u043f\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443learning_rate = 5e-4              # \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430weight_decay  = 1e-4              # L2-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044fhyperparams = {    \"num_columns\": 64,            # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u0441\u0435\u0442\u0438    \"in_dim\": 784,                # \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u0430 (28\u00d728 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 MNIST)    \"col_out\": 128,               # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 (\u0432\u043e\u0437\u0431.+\u0442\u043e\u0440\u043c.) \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435    \"top_out\": 10,                # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 (\u0446\u0438\u0444\u0440\u044b 0-9)    \"graph_k\": 8,                 # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0432 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430    \"graph_p\": 0.15,              # \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0432 \u0433\u0440\u0430\u0444\u0435 \u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430    \"time_steps\": 50,             # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u043a\u0438 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438    \"e_i_ratio\": 0.8,             # \u0434\u043e\u043b\u044f \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432    \"tau_mem\": 20.0,              # \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0442\u0435\u0447\u043a\u0438 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 (\u0431\u043e\u043b\u044c\u0448\u0435 = \u0434\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u044c)    \"tau_syn\": 5.0,               # \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0442\u0435\u0447\u043a\u0438 \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u043e\u043a\u0430 (\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u0430)    \"use_dynamic_topology\": True, # \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0440\u043e\u0441\u0442 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438    \"topology_update_freq\": 100,  # \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 (\u043a\u0430\u0436\u0434\u044b\u0435 N \u0448\u0430\u0433\u043e\u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f)    \"stdp_lr\": 5e-5               # \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 STDP}# \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 MNISTtransform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)), transforms.Lambda(lambda x: x.view(-1))])train_set = datasets.MNIST(root='.\/data', train=True, download=True, transform=transform)test_set = datasets.MNIST(root='.\/data', train=False, download=True, transform=transform)train_loader = DataLoader(train_set, batch_size=batch_size, shuffle=True, num_workers=4, pin_memory=True)test_loader = DataLoader(test_set, batch_size=batch_size, shuffle=False, num_workers=4, pin_memory=True)# \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')model = DynamicTopologyNetwork(**hyperparams).to(device)# \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044foptimizer = torch.optim.AdamW([    {'params': model.readout.parameters(), 'lr': learning_rate},    {'params': model.input_scale, 'lr': learning_rate * 0.05},    {'params': model.inter_weights, 'lr': learning_rate * 0.1}], lr=learning_rate, weight_decay=weight_decay)scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(    optimizer,    T_max=len(train_loader) * epochs,    eta_min=learning_rate * 0.01)# \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438@torch.no_grad()def evaluate(model, loader, device):    model.eval()    correct = 0    total = 0    all_spike_rates = []    for x, y in loader:        x, y = x.to(device), y.to(device)        logits, spike_rates = model(x)        preds = logits.argmax(dim=1)        correct += (preds == y).sum().item()        total += y.size(0)        all_spike_rates.append(spike_rates.mean().item())    accuracy = correct \/ total    avg_spike_rate = sum(all_spike_rates) \/ len(all_spike_rates)    return accuracy, avg_spike_rate# \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u043f\u043e\u0445\u0438def train_epoch(model, train_loader, optimizer, scheduler, device, epoch):    model.train()    epoch_loss = 0.0    correct = 0    total = 0    epoch_spike_rates = []    for batch_idx, (x, y) in enumerate(train_loader, start=1):        x, y = x.to(device), y.to(device)        optimizer.zero_grad(set_to_none=True)        logits, spike_rates = model(x, learn=True)        loss = F.cross_entropy(logits, y)        target_rate = model.target_rate        rate_loss = torch.mean((spike_rates - target_rate) ** 2)        total_loss = loss + 0.05 * rate_loss        total_loss.backward()        torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=0.5)        optimizer.step()        scheduler.step()        with torch.no_grad():            preds = logits.argmax(dim=1)            correct += (preds == y).sum().item()            total += y.size(0)        epoch_loss += loss.item()        epoch_spike_rates.append(spike_rates.mean().item())        if batch_idx % 100 == 0:            print(f'Epoch {epoch:02d} [{batch_idx:3d}\/{len(train_loader)}] Loss={loss.item():.4f} Accuracy={(correct \/ total)*100:.2f}% LR={scheduler.get_last_lr()[0]:.6f}')    train_loss = epoch_loss \/ len(train_loader)    train_acc = correct \/ total    avg_spike_rate = sum(epoch_spike_rates) \/ len(epoch_spike_rates)    return train_loss, train_acc, avg_spike_rate# \u0446\u0438\u043a\u043b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044fhistory = {'train_loss': [], 'train_acc': [], 'test_acc': [], 'spike_rates': []}total_start = time.time()for epoch in range(1, epochs + 1):    train_loss, train_acc, train_spike_rate = train_epoch(model, train_loader, optimizer, scheduler, device, epoch)    test_acc, test_spike_rate = evaluate(model, test_loader, device)    history['train_loss'].append(train_loss)    history['train_acc'].append(train_acc)    history['test_acc'].append(test_acc)    history['spike_rates'].append(test_spike_rate)    print(f\"\\nEpoch {epoch}\/{epochs} - Train Loss: {train_loss:.4f} | Train Accuracy: {train_acc*100:.2f}% | Test Accuracy: {test_acc*100:.2f}%\")    total_time = time.time() - total_start# \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435final_acc, final_spike_rate = evaluate(model, test_loader, device)torch.save({    \"epoch\": epochs,    \"model_state_dict\": model.state_dict(),    \"test_accuracy\": final_acc,    \"spike_rate\": final_spike_rate,    \"hyperparams\": hyperparams,    \"history\": history,    \"training_time\": total_time}, \"DynamicTopologyNetwork.pth\")print(f\"\\n\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e \u0437\u0430 {total_time\/60:.1f} \u043c\u0438\u043d\")print(f\"\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c: {final_acc*100:.2f}%\")<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c 64 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043d\u0430 40 \u044d\u043f\u043e\u0445\u0430\u0445 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f: <code>python train.py<\/code><\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0435 100 \u0448\u0430\u0433\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>Epoch 01 [100\/469] Loss=1.4257 Accuracy=46.41% LR=0.000500Epoch 01 [200\/469] Loss=0.8772 Accuracy=59.13% LR=0.000499Epoch 01 [300\/469] Loss=0.6398 Accuracy=65.66% LR=0.000499Epoch 01 [400\/469] Loss=0.6708 Accuracy=69.41% LR=0.000498EPOCH 1\/40 - Train Loss: 1.0290 | Train Accuracy: 71.49% | Test Accuracy: 69.99%Epoch 02 [100\/469] Loss=0.5339 Accuracy=83.44% LR=0.000496Epoch 02 [200\/469] Loss=0.4850 Accuracy=83.86% LR=0.000494Epoch 02 [300\/469] Loss=0.4401 Accuracy=84.17% LR=0.000492Epoch 02 [400\/469] Loss=0.5152 Accuracy=84.34% LR=0.000490EPOCH 2\/40 - Train Loss: 0.5100 | Train Accuracy: 84.44% | Test Accuracy: 83.30%...Epoch 20 [100\/469] Loss=0.3904 Accuracy=92.73% LR=0.000007Epoch 20 [200\/469] Loss=0.2344 Accuracy=92.82% LR=0.000006Epoch 20 [300\/469] Loss=0.2745 Accuracy=92.76% LR=0.000005Epoch 20 [400\/469] Loss=0.2477 Accuracy=92.87% LR=0.000005 Epoch 20\/40 - Train Loss: 0.2373 | Train Accuracy: 91.93% | Test Accuracy: 91.87%...Epoch 40 [100\/469] Loss=0.0102 Accuracy=92.73% LR=0.000003Epoch 40 [200\/469] Loss=0.0089 Accuracy=92.82% LR=0.000002Epoch 40 [300\/469] Loss=0.0091 Accuracy=92.76% LR=0.000001Epoch 40 [400\/469] Loss=0.0072 Accuracy=92.87% LR=0.000002 Epoch 40\/40 - Train Loss: 0.0056 | Train Accuracy: 97.14% | Test Accuracy: 96.02%\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e \u0437\u0430 387 \u043c\u0438\u043d\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c: 96.02%<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u043b\u043e \u043c\u0435\u043d\u0435\u0435 1 Gb \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0437\u0430\u043d\u044f\u043b\u043e 6.5 \u0447\u0430\u0441\u043e\u0432. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: 96.02% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u0430\u0445. \u041e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0414\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 98%+ \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0442\u044c \u043d\u0430 100-150 \u044d\u043f\u043e\u0445\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0435\u043c \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0441\u0435\u0442\u044c, \u0442\u0435\u043c \u0434\u043e\u043b\u044c\u0448\u0435 (\u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043f\u043e\u0445) \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043e\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043a\u0430\u043a \u0441 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0412 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u0445 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442: \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e, \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434. \u0412\u0440\u0435\u043c\u044f \u0442\u0430\u043c \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0448\u0430 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u0441\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443 STDP \u0438 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435, \u043e\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 (time_steps = 50). \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u0430\u043a \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441\u043f\u0430\u0439\u043a\u043e\u0432, \u0438 \u0441\u0435\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443, \u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<ul>\n<li>\n<p>LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>STDP \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a: \u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 B \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 A, \u0438\u0445 \u0441\u0432\u044f\u0437\u044c \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f (LTP); \u0435\u0441\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u043e\u0441\u043b\u0430\u0431\u043b\u044f\u0435\u0442\u0441\u044f (LTD)<\/p>\n<\/li>\n<li>\n<p>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u0435\u0434\u044b (pre_trace, post_trace) \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u044e\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b, \u043d\u043e \u0438 \u043f\u043e \u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0414\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u043d\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0438\u0445 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435\u043c. \u0421\u0435\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044f\u043c: \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0440\u0438\u0442\u043c\u0430\u043c, \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442 \u0435\u0451 \u043a \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u043e\u0437\u0433\u0430, \u0433\u0434\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u0435\u0439 \u0438\u0433\u0440\u0430\u0435\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0440\u043e\u043b\u044c \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041d\u0430\u0448\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0430: \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043f\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0430\u043d\u0430\u0445\u0440\u043e\u043d\u0438\u0437\u043c\u0430\u043c\u0438 \u2014 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0438. \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0439 \u2014 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0442\u043e\u043a\u0438 \u0434\u043b\u044f LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u2014 \u0438\u0433\u0440\u0430\u0435\u0442 \u0440\u043e\u043b\u044c \u0441\u0435\u0442\u0447\u0430\u0442\u043a\u0438 \u0433\u043b\u0430\u0437\u0430. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c: \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u044b \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0430\u0439\u043a\u0438 \u0438\u0437 \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e.<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"python\">self.readout = nn.Sequential(    nn.Linear(num_columns * col_out, 512),    nn.ReLU(),    nn.Dropout(0.2),    nn.Linear(512, top_out))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0446\u0435\u043f\u0442\u0440\u043e\u043d. \u041e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u0435\u0439\u0448\u0443\u044e \u0441\u0438\u043c\u0444\u043e\u043d\u0438\u044e \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0439, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u2014 \u0438 \u0440\u0435\u0434\u0443\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u043a \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432\u0435\u0441\u043e\u0432. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043d\u043e \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u044b\u0432. \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u043e\u0437\u0433 \u043d\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u043e\u0435?<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430, \u0447\u0442\u043e \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u043c\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c\u0438: \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0435\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438. \u041e\u0442 \u043c\u0438\u043a\u0440\u043e\u0442\u0440\u0443\u0431\u043e\u0447\u0435\u043a \u041f\u0435\u043d\u0440\u043e\u0443\u0437\u0430 \u0434\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u043e\u0439 \u043a\u043e\u0433\u0435\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u044f\u0445 \u2014 \u0438\u0434\u0435\u044f \u0441\u043f\u043e\u0440\u043d\u0430, \u043d\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u0447\u0432\u0435\u043d\u043d\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u0435\u0440\u043d\u0430, \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 readout \u2014 \u044d\u0442\u043e \u0431\u0443\u0442\u044b\u043b\u043e\u0447\u043d\u043e\u0435 \u0433\u043e\u0440\u043b\u044b\u0448\u043a\u043e, \u0433\u0434\u0435 \u0433\u0430\u0441\u043d\u0443\u0442 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435.<\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0448\u0430\u0433\u043d\u0451\u043c \u0437\u0430 \u044d\u0442\u0443 \u0433\u0440\u0430\u043d\u0438\u0446\u0443. \u0417\u0430\u043c\u0435\u043d\u0438\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0430 \u0441\u043b\u043e\u0439 \u043a\u0443\u0431\u0438\u0442\u043e\u0432 \u2014 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430. \u0421\u043f\u0430\u0439\u043a\u0438 \u0441\u0442\u0430\u043d\u0443\u0442 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438, \u0430 \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0442\u0438 \u0440\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u043b\u043b\u0430\u043f\u0441\u0430 \u0432\u043e\u043b\u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0438. \u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u043d\u0430\u0443\u0447\u043d\u0430\u044f \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0430, \u043d\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u0445 \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c, \u043d\u0430 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043d\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442.<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0438\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u0443 \u0434\u0432\u0435\u0440\u044c.<\/p>\n<p>\u0410 \u043f\u043e\u043a\u0430 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. <\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f49\/888\/16c\/f4988816c2e06b7bae01f75f670a107a.png\" width=\"2182\" height=\"894\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f49\/888\/16c\/f4988816c2e06b7bae01f75f670a107a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f49\/888\/16c\/f4988816c2e06b7bae01f75f670a107a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043e\u0431\u0443\u0447\u0438\u043b\u0438. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u043a\u0440\u043e\u043c\u0435 \u043e\u0434\u043d\u043e\u0433\u043e, \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0432 5 \u0441 6. \u0425\u043e\u0442\u044f, \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u0442\u043e\u0436\u0435 \u0432\u0438\u0436\u0443 6. \u0410 \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u044b? \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>References<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1045518\/\" rel=\"noopener noreferrer nofollow\">ToxaBes et al., \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438, Habr (2026)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/link.springer.com\/article\/10.1007\/s11047-025-10026-9\" rel=\"noopener noreferrer nofollow\">P. Sos\u00edk et al., A survey on learning models of spiking neural membrane systems, Springer Nature (2025)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/link.springer.com\/article\/10.1007\/s00422-025-01030-4\" rel=\"noopener noreferrer nofollow\">Y. Zhu, Cross-stimulus inhibition in trained SNNs, Springer Nature (2026)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.frontiersin.org\/journals\/computational-neuroscience\/articles\/10.3389\/fncom.2025.1737839\/full\" rel=\"noopener noreferrer nofollow\">M. Zhang et al., Bridging neuromorphic computing and deep learning for next-generation neural data interpretation, Frontiers in Computational Neuroscience (2026)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.nature.com\/articles\/s41528-025-00512-6\" rel=\"noopener noreferrer nofollow\">M. Hosseini et al., An organic spiking artificial neuron with excitatory and inhibitory synapses: towards soft and flexible organic neuromorphic processing, Nature (2026)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/pdf\/2509.03281\" rel=\"noopener noreferrer nofollow\">Q. Bai et al., A Brain\u2011Inspired Gating Mechanism Unlocks Robust Computation in SNNs, arXiv (2025)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/pdf\/2512.11743\" rel=\"noopener noreferrer nofollow\">Y. Huang et al., CogniSNN: Enabling Neuron-Expandability, Pathway-Reusability, and Dynamic-Configurability with Random Graph Architectures in Spiking Neural Networks, arXiv (2025)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.mdpi.com\/2306-5354\/12\/6\/628(\" rel=\"noopener noreferrer nofollow\">O. Garcia-Palencia et al., Spiking Neural Networks for Multimodal Neuroimaging: A Comprehensive Review of Current Trends and the NeuCube Brain-Inspired Architecture, mdpi, (2025)<\/a><\/p>\n<\/li>\n<\/ol>\n<\/div>\n<p>\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\/articles\/1045696\/\">https:\/\/habr.com\/ru\/articles\/1045696\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (AGI). \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043c\u043d\u043e\u0439 \u0438 \u0440\u0430\u043d\u0435\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 LOR. \u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u0435\u0451 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043e\u0445\u0432\u0430\u0442\u0430 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u043e\u043c \u0441 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0430\u043c\u0438.\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 [1] \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0435\u0451 \u043d\u0430 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.\u0412 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e: \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0434\u0430\u0451\u0442 \u0447\u0438\u0441\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0441\u0435\u0442\u0438. \u041d\u0435\u0439\u0440\u043e\u043d\u044b \u0432 \u0441\u043b\u043e\u044f\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u2014 \u0432\u0441\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043b\u043e\u044e.\u0411\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438\u043d\u0430\u0447\u0435. \u041e\u043d\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043f\u0430\u0439\u043a\u0430\u043c\u0438. \u0421\u043f\u0430\u0439\u043a \u2014 \u044d\u0442\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: \u043b\u0438\u0431\u043e \u043d\u0435\u0439\u0440\u043e\u043d \u201c\u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u043b\u201d, \u043b\u0438\u0431\u043e \u043d\u0435\u0442. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0432 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u0430 \u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0438 \u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 [2]. \u041c\u043e\u0437\u0433 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u044d\u0442\u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432: \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u0439\u0440\u043e\u043d \u201c\u0449\u0435\u043b\u043a\u0430\u0435\u0442\u201d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0432 \u043c\u043e\u0437\u0433\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u0435\u0439. \u041e\u0434\u0438\u043d \u043d\u0435\u0439\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 3 \u0441\u043f\u0430\u0439\u043a\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 10, \u0438 \u043c\u043e\u0437\u0433 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u043e, \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u044b, \u043d\u043e \u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0438\u0442\u043c \u0438\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432.\u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u043d\u0435\u0439\u0440\u043e\u043d \u0441 \u0443\u0442\u0435\u0447\u043a\u043e\u0439\u201d (Leaky Integrate-and-Fire, LIF). \u041e\u043d \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430: \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u201c\u0443\u0442\u0435\u043a\u0430\u0435\u0442\u201d \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0435\u0439\u0440\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0430\u0439\u043a \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e [2].\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c brain_spiking.py \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:#!\/usr\/bin\/env python3import torchfrom torch import nnimport torch.nn.functional as Fimport networkx as nximport math\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:tau_mem \u2014 \u00ab\u0432\u0440\u0435\u043c\u044f \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u0435\u043c \u0434\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0439\u0440\u043e\u043d \u00ab\u043f\u043e\u043c\u043d\u0438\u0442\u00bb \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b.tau_syn \u2014 \u00ab\u0432\u0440\u0435\u043c\u044f \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u043e\u043a\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0437\u0430\u0442\u0443\u0445\u0430\u0435\u0442.threshold \u2014 \u043f\u043e\u0440\u043e\u0433, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u043f\u0430\u0439\u043a\u0430\u0435\u0442, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u0430\u043b\u044c\u0448\u0435.reset \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043f\u0430\u0439\u043a\u0430.class LIFNeuron(nn.Module):    def __init__(self, tau_mem: float = 20.0, tau_syn: float = 5.0, threshold: float = 2.0, reset: float = 0.0):        super().__init__()        self.threshold = threshold        self.reset = reset        self.register_buffer(&#8216;alpha&#8217;, torch.tensor(math.exp(-1.0 \/ tau_mem)))        self.register_buffer(&#8216;beta&#8217;, torch.tensor(math.exp(-1.0 \/ tau_syn)))            def forward(self, input_current, mem, syn):        syn = self.beta * syn + input_current        mem = self.alpha * mem + syn        spike = (mem &gt;= self.threshold).float()        mem = mem * (1.0 &#8212; spike) + self.reset * spike        return spike, mem, syn\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b input_current \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u043e\u043a syn, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b mem. \u0415\u0441\u043b\u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435\u0439\u0440\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043f\u0430\u0439\u043a \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u0443 \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e self.reset. \u041f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u043c \u0442\u043e\u043a\u0435 \u043c\u0435\u043c\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u044f self.alpha.\u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0441 \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043d\u0430 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u044b\u0435 LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u044b. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0432 \u0442\u043e\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430. \u042d\u0442\u0438 \u0442\u043e\u043a\u0438 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043b\u043e\u0438 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u0438 \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 80% \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u0438 20% \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0445 [3]. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u043e\u0433\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0443\u0442\u0435\u0447\u043a\u0438. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043b\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0430\u0438\u043c\u0438\u043d\u0433\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u0438 ReLU, \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:class SpikeColumn(nn.Module):    def __init__(self, in_feat: int, out_feat: int, e_i_ratio: float = 0.8, tau_mem: float = 20.0, tau_syn: float = 5.0):        super().__init__()        self.out_feat = out_feat        self.n_exc = int(out_feat * e_i_ratio)        self.n_inh = out_feat &#8212; self.n_exc        self.fc_exc = nn.Linear(in_feat, self.n_exc, bias=False)        self.fc_inh = nn.Linear(in_feat, self.n_inh, bias=False)        self.lif_exc = LIFNeuron(tau_mem=tau_mem, tau_syn=tau_syn, threshold=2.5)        self.lif_inh = LIFNeuron(tau_mem=tau_mem*0.8, tau_syn=tau_syn*0.8, threshold=2.0)        nn.init.kaiming_normal_(self.fc_exc.weight, nonlinearity=&#8217;relu&#8217;)        nn.init.kaiming_normal_(self.fc_inh.weight, nonlinearity=&#8217;relu&#8217;)                with torch.no_grad():            self.fc_exc.weight *= 0.3            self.fc_inh.weight *= -0.3            def init_state(self, batch_size, device):        return {            &#8216;mem_exc&#8217;: torch.zeros(batch_size, self.n_exc, device=device),            &#8216;syn_exc&#8217;: torch.zeros(batch_size, self.n_exc, device=device),            &#8216;mem_inh&#8217;: torch.zeros(batch_size, self.n_inh, device=device),            &#8216;syn_inh&#8217;: torch.zeros(batch_size, self.n_inh, device=device),        }        def forward(self, spike_input, state):        current_exc = self.fc_exc(spike_input)        current_inh = self.fc_inh(spike_input)        spike_exc, mem_exc, syn_exc = self.lif_exc(current_exc, state[&#8216;mem_exc&#8217;], state[&#8216;syn_exc&#8217;])        spike_inh, mem_inh, syn_inh = self.lif_inh(current_inh, state[&#8216;mem_inh&#8217;], state[&#8216;syn_inh&#8217;])        spikes = torch.cat([spike_exc, -spike_inh], dim=1)        new_state = {            &#8216;mem_exc&#8217;: mem_exc,            &#8216;syn_exc&#8217;: syn_exc,            &#8216;mem_inh&#8217;: mem_inh,            &#8216;syn_inh&#8217;: syn_inh,        }        return spikes, new_state\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 (\u043c\u0435\u0442\u043e\u0434 forward) \u043d\u0430\u0448\u0430 \u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0430\u044f \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u043f\u0430\u0439\u043a\u0438 \u0432 \u0442\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f LIF-\u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043f\u0430\u0439\u043a\u043e\u0432.\u0422\u0435\u043f\u0435\u0440\u044c, \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0430 \u201c\u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430\u201d \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:def make_small_world(num_nodes: int, k: int = 4, p: float = 0.1) -&gt; torch.Tensor:    G = nx.watts_strogatz_graph(num_nodes, k, p)    adj = torch.zeros(num_nodes, num_nodes, dtype=torch.float32)    for i, j in G.edges():        adj[i, j] = 1.0        adj[j, i] = 1.0    return adj\u0411\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0441\u043f\u0430\u0439\u043a\u0438 \u2014 \u043e\u043d\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e: \u0435\u0441\u043b\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u0438\u0445 \u0441\u0432\u044f\u0437\u044c \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f; \u0435\u0441\u043b\u0438 \u0440\u0435\u0434\u043a\u043e \u2014 \u043e\u0441\u043b\u0430\u0431\u0435\u0432\u0430\u0435\u0442. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u201c\u043c\u0430\u043b\u043e\u0433\u043e \u043c\u0438\u0440\u0430\u201d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c STDP (Spike-Timing-Dependent Plasticity), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043b\u0443 \u044d\u0442\u0438\u0445 \u043c\u0435\u0436\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a:class STDP(nn.Module):    def __init__(self, num_columns: int, tau_plus: float = 20.0, tau_minus: float = 20.0, a_plus: float = 0.01, a_minus: float = 0.012, formation_threshold: float = 0.8, pruning_threshold: float = 0.05, max_density: float = 0.25):        super().__init__()        self.num_columns = num_columns        self.a_plus = a_plus        self.a_minus = a_minus        self.formation_threshold = formation_threshold        self.pruning_threshold = pruning_threshold        self.max_density = max_density        self.register_buffer(&#8216;decay_plus&#8217;, torch.tensor(math.exp(-1.0 \/ tau_plus)))        self.register_buffer(&#8216;decay_minus&#8217;, torch.tensor(math.exp(-1.0 \/ tau_minus)))        self.register_buffer(&#8216;connection_potential&#8217;, torch.zeros(num_columns, num_columns))        self.register_buffer(&#8216;connection_usage&#8217;, torch.zeros(num_columns, num_columns))            def compute_update(self, pre_spikes, post_spikes, pre_trace, post_trace):        pre_trace = self.decay_plus * pre_trace + pre_spikes        post_trace = self.decay_minus * post_trace + post_spikes        ltp = self.a_plus * torch.ger(post_spikes, pre_trace)        ltd = -self.a_minus * torch.ger(post_trace, pre_spikes)        return ltp + ltd, pre_trace, post_trace        def update_connection_potential(self, pre_activity, post_activity):        correlation = torch.ger(post_activity, pre_activity)        self.connection_potential = 0.99 * self.connection_potential + 0.01 * correlation            def update_connection_usage(self, adjacency_mask, weight_strength):        usage = adjacency_mask * weight_strength.abs()        self.connection_usage = 0.95 * self.connection_usage + 0.05 * usage\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c: STDP \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0430 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 (CPU \u0438\u043b\u0438 GPU), \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 STDP \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c \u0441\u043f\u0430\u0439\u043a\u0430\u0442\u044c \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 [4]. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0432 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 [5] \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u0435\u0439\u0440\u043e\u043c\u043e\u0440\u0444\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b pre_spikes \u0438 post_spikes \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043e\u043a (\u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0441\u043f\u0430\u0439\u043a\u043e\u0432 \u0432\u0441\u0435\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435) [6]. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u044b \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0447\u0430\u0441\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0441\u0430 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u044b STDP \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0432\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430:Long-Term Potentiation (LTP) \u2014 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0441\u0438\u043d\u0430\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439Long-Term Depression (LTD) \u2014 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:connection_potential \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438connection_usage \u2014 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439\u041c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e-\u0441\u043f\u0430\u0439\u043a\u043e\u0432\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-483060","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/483060","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=483060"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/483060\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=483060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=483060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=483060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}