{"id":374087,"date":"2024-05-21T05:51:44","date_gmt":"2024-05-21T05:51:44","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=374087"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=374087","title":{"rendered":"<span>\u041a\u0430\u043a \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PyTorch<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. PyTorch \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. <\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/cbf\/410\/2a0\/cbf4102a07d3879bc91722bad060bbf6.jpg\" width=\"1280\" height=\"999\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cbf\/410\/2a0\/cbf4102a07d3879bc91722bad060bbf6.jpg\" data-blurred=\"true\"\/><\/figure>\n<h2>\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u0434\u0438\u0444\u0444\u0443\u0440\u044b. <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0437 \u0442\u0435\u043e\u0440\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0448\u0438\u043c \u0435\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\ddot{x}+\\dot{x}+x=u\" alt=\"\\ddot{x}+\\dot{x}+x=u\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/788\/e35\/7a4\/788e357a43de4ee8dd519617e381a4a1.svg\" width=\"119\" height=\"17\"\/><\/p>\n<p>\u042d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u0433\u0434\u0435<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x(t)\" alt=\"x(t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a40\/eba\/a6c\/a40ebaa6c1caf2a865eeceada2d0fee8.svg\" width=\"34\" height=\"22\"\/>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0445\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, <em><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"u\" alt=\"u\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fb1\/623\/840\/fb1623840ab7e7f3128b298b67993e00.svg\" width=\"11\" height=\"12\"\/><\/em> &#8212; \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\dot{x}\" alt=\"\\dot{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/334\/738\/6d0\/3347386d0cdb8c824b6f12b1290b7a09.svg\" width=\"11\" height=\"16\"\/>\u200b \u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\ddot{x}\" alt=\"\\ddot{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/84e\/cd0\/ba0\/84ecd0ba0c2807bcc778d39c6fe230ee.svg\" width=\"11\" height=\"16\"\/>\u200b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0435\u0440\u0432\u0443\u044e \u0438 \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x(t)\" alt=\"x(t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b72\/674\/397\/b7267439742b43322eb86b3249418f2d.svg\" width=\"34\" height=\"22\"\/> \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 <em><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"t\" alt=\"t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/19d\/709\/b85\/19d709b85e5255086cf825c4573038b4.svg\" width=\"7\" height=\"16\"\/><\/em>.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\lambda^2+\\lambda+1=0\\\\\\lambda=-\\frac{1}{2}\\pm\\sqrt{3}i\" alt=\"\\lambda^2+\\lambda+1=0\\\\\\lambda=-\\frac{1}{2}\\pm\\sqrt{3}i\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f9\/d39\/2fc\/0f9d392fccbed1e8f46aed94846f72f6.svg\" width=\"685\" height=\"70\"\/><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0440\u043d\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u042d\u0439\u043b\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0432 \u0438 \u0441\u0438\u043d\u0443\u0441\u043e\u0432<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"x(t)=C_1\\cdot e^{-\\frac{1}{2}t}\\cos(\\sqrt{3}t) + C_2 \\cdot e^{-\\frac{1}{2}t}\\sin(\\sqrt{3}t)\" alt=\"x(t)=C_1\\cdot e^{-\\frac{1}{2}t}\\cos(\\sqrt{3}t) + C_2 \\cdot e^{-\\frac{1}{2}t}\\sin(\\sqrt{3}t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/490\/a96\/696\/490a9669632de0fcc800369513eb84f6.svg\" width=\"390\" height=\"29\"\/><\/p>\n<p>\u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"C_1\" alt=\"C_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/963\/f79\/143\/963f791436b1adfc979d732e7c6c9a7b.svg\" width=\"23\" height=\"19\"\/>\u200b \u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"C_2\" alt=\"C_2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a48\/153\/1a6\/a481531a62ae426ef68999024a757288.svg\" width=\"23\" height=\"19\"\/>\u200b &#8212; \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0438\u0445 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x(0)=1\" alt=\"x(0)=1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/747\/363\/20d\/74736320d23ff227572da1e8361050e8.svg\" width=\"72\" height=\"22\"\/>\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\dot{x}(0)=2\" alt=\"\\dot{x}(0)=2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d95\/f79\/ca9\/d95f79ca9655e64d60c06e70f6a95445.svg\" width=\"72\" height=\"22\"\/>. \u0422\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"x(t)=\\frac{4}{\\sqrt{3}} \\cdot e^{-\\frac{t}{2}} sin(\\frac{\\sqrt{3}t}{2}) - 2 e^{-\\frac{t}{2}} cos(\\frac{\\sqrt{3}t}{2})\" alt=\"x(t)=\\frac{4}{\\sqrt{3}} \\cdot e^{-\\frac{t}{2}} sin(\\frac{\\sqrt{3}t}{2}) - 2 e^{-\\frac{t}{2}} cos(\\frac{\\sqrt{3}t}{2})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be6\/927\/fef\/be6927fef7ad79b7290ee2a292953629.svg\" width=\"375\" height=\"55\"\/><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u043a\u043b\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"[x, \\dot x]=[1, 2]\" alt=\"[x, \\dot x]=[1, 2]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/416\/839\/085\/416839085694459b84cecd6b31749575.svg\" width=\"108\" height=\"22\"\/> \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>control<\/code> <\/p>\n<pre><code class=\"python\">init_state = [1, 2] dt = 0.001 time = np.linspace(0, 10, int(time\/dt))  # create transfer function numerator = [1] denominator = [1, 1, 1] system = ctrl.tf(numerator, denominator)  # get respomse from the TF response = ctrl.initial_response(system, time, init_state).outputs plt.plot(time, response, label=\"Impulse response of the system\")<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e <code>time<\/code>, <code>response<\/code> \u043c\u044b \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<pre><code class=\"python\">class Analytic:     def __init__(self, alpha, beta, c_1, c_2):         self.alpha = alpha         self.beta = beta          self.c_1 = c_1         self.c_2 = c_2           def calculate(self, t: float) -> float:         return self.c_1 * np.exp(self.alpha * t) * np.sin(self.beta * t) \\              + self.c_2 * np.exp(self.alpha * t) * np.cos(self.beta * t)          def __call__(self, t: list[float]) -> list[float]:         return np.vectorize(self.calculate)(t)  analytic = Analytic(     alpha = -0.5,     beta = np.sqrt(3)\/2,     c_1 = 4\/np.sqrt(3),     c_2 = 2 )  plt.plot(time, analytic(time), linestyle=\"--\",           label=\"Analityc solution\")<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/924\/d62\/c80\/924d62c80d7011be464b3b9b75468173.png\" alt=\"\u0421\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435.\" title=\"\u0421\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435.\" width=\"1189\" height=\"590\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/924\/d62\/c80\/924d62c80d7011be464b3b9b75468173.png\"\/><\/p>\n<div><figcaption>\u0421\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435.<\/figcaption><\/div>\n<\/figure>\n<h2>\u0428\u0430\u0433 2: \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432\u0438\u0434\u0430<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" alt=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6f\/026\/87a\/f6f02687a5c1c24df62e38455cc21ba8.svg\" width=\"361\" height=\"24\"\/><\/p>\n<p>\u0433\u0434\u0435 <\/p>\n<ul>\n<li>\n<p>\u03b1: \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u03b2:  \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\frac{\\sqrt{3}}{2}\" alt=\"\\frac{\\sqrt{3}}{2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd7\/286\/ec8\/dd7286ec8a1ca1d4b90f11801554751b.svg\" width=\"33\" height=\"48\"\/>): \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0441\u043e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0441\u0446\u0438\u043b\u043b\u044f\u0446\u0438\u0438. \u041f\u043e\u0437\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0447\u0435\u043c\u0443 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"C_1\" alt=\"C_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a30\/934\/ebc\/a30934ebca3a95e85a001c0c405c028f.svg\" width=\"23\" height=\"19\"\/> \u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"C_2\" alt=\"C_2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bdd\/44d\/a2d\/bdd44da2d0cb6deba6e5604c0783a567.svg\" width=\"23\" height=\"19\"\/>: \u041e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438:<\/p>\n<pre><code class=\"python\">class Model(nn.Module):     \"\"\"Our class that will be trained\"\"\"      def __init__(self):         super().__init__()         self.alpha = nn.Parameter(torch.zeros(1))         self.beta = np.sqrt(3)\/2                       self.c_1 = nn.Parameter(torch.zeros(1))         self.c_2 = nn.Parameter(torch.zeros(1))              def forward(self, t):         return self.c_1 * torch.exp(self.alpha * t) * torch.sin(self.beta * t) \\              + self.c_2 * torch.exp(self.alpha * t) * torch.cos(self.beta * t)<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>Model<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <code>nn.Module<\/code> \u0432 PyTorch. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>init<\/code> \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <code>alpha<\/code>, <code>C1<\/code> \u0438 <code>C2<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 <code>beta<\/code>. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>forward<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438, \u0433\u0434\u0435 \u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>output<\/code> \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>t<\/code> \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430 <code>torch.utils.data.Dataset<\/code>. <\/p>\n<pre><code class=\"python\">class TimeResponseDataset(Dataset):     \"\"\"Torch Dataset for x=time and y=response\"\"\"     def __init__(self, time, response):         self.time = torch.Tensor(time)         self.response = torch.Tensor(response)              def __len__(self):         return len(self.time)          def __getitem__(self, idx):         return {'time': self.time[idx], 'response': self.response[idx]}<\/code><\/pre>\n<p>\u041e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0436\u0435 \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 <code>torch.utils.data.DataLoader<\/code>. \u041e\u043d \u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0430\u0442\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"python\">dataset = TimeResponseDataset(time, response) dataloader = DataLoader(dataset, batch_size=512, shuffle=True)<\/code><\/pre>\n<h2>\u0428\u0430\u0433 3: \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">model = Model() print(f\"trainable params: {len(model.parameters())}\")<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043a\u0430\u043a \u043c\u044b \u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438, \u0440\u0430\u0432\u0435\u043d 3.<\/p>\n<p>\u041f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440. \u041b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u043c \u043a\u0430\u043a \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0430\u043c \u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0443\u043c\u0430, \u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0435\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"python\">lr = 0.01 betas = (0.9, 0.999) history = []  criterion = nn.MSELoss()  optimizer = torch.optim.Adam(model.parameters(), lr=lr, betas=betas, eps=1e-8)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0443\u0447\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 150 \u044d\u043f\u043e\u0445\u0430\u0445, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<pre><code class=\"python\">epochs = 150 for epoch in tqdm(range(epochs)):     for data in dataloader:         optimizer.zero_grad()         pred = model(data['time'])         loss = criterion(pred, data['response'])         loss.backward()         optimizer.step()                  history.append(loss.detach().numpy())<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f epochs \u0440\u0430\u0437 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443. \u041a\u043b\u0430\u0441\u0441 <code>DataLoader<\/code> \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0442\u043e\u043f\u043a\u0443 (\u0431\u0430\u0442\u0447) \u0434\u0430\u043d\u043d\u044b\u0445 . \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438 \u043d\u0430\u0439\u0434\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"L(y_\\text{pred},y_\\text{true})=\\text{MSE}(y_\\text{pred},y_\\text{true})=\\frac{1}{n}\\sum\\limits_{i=0}^N(y_\\text{pred}^i-y_\\text{pred}^i)^2\" alt=\"L(y_\\text{pred},y_\\text{true})=\\text{MSE}(y_\\text{pred},y_\\text{true})=\\frac{1}{n}\\sum\\limits_{i=0}^N(y_\\text{pred}^i-y_\\text{pred}^i)^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/438\/ffc\/c15\/438ffcc15eaf1b5f584332f47e4f83b4.svg\" width=\"482\" height=\"61\"\/><\/p>\n<p>\u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 <code>optimizer.step()<\/code>, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b <code>optimizer.zero_grad()<\/code> \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u0432\u043d\u043e\u0432\u044c \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043c\u043e\u0434\u0435\u043b\u0438 <code>loss.backward()<\/code>.<\/p>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/287\/5f9\/fbf\/2875f9fbfaed3283eb7c9d50806f90db.png\" alt=\"MSE \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.\" title=\"MSE \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.\" width=\"547\" height=\"413\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/287\/5f9\/fbf\/2875f9fbfaed3283eb7c9d50806f90db.png\"\/><\/p>\n<div><figcaption>MSE \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0430\u0442\u0447\u0435\u0439 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u043d\u0430 500 \u0448\u0430\u0433\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0410 \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 torch.autograd? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438 \u043d\u0430\u0439\u0434\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432.<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0418 \u043f\u0440\u0430\u0432\u0434\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0439\u0434\u0435\u043c! \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430, \u0442\u043e, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0432 \u044d\u0442\u043e\u0442 \u043f\u0443\u043d\u043a\u0442, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442.<\/p>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e \u0432\u0430\u0448 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442? \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u044e. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442 &#8212; \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418 \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0442\u0435\u0442 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b. \u0418 \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u0438\u0431\u044b\u0441\u0442\u0440\u0435\u0439\u0448\u0435\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0423\u043c\u043d\u043e\u0436\u0438\u043c \u043d\u0430 \u043c\u0438\u043d\u0443\u0441 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0443\u0434\u0430 \u0431\u044b \u043d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u0441\u044c \u043f\u043e\u0439\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/24c\/d74\/a71\/24cd74a71163ca1083cb337e90a8e8bf.jpg\" alt=\"\u0413\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\" title=\"\u0413\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\" width=\"699\" height=\"393\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/24c\/d74\/a71\/24cd74a71163ca1083cb337e90a8e8bf.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0413\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u0438\u043d\u0438\u043c\u0443\u043c \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0447\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" alt=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c7\/983\/1f6\/1c79831f64c40997f2573f074c4ea030.svg\" width=\"361\" height=\"24\"\/><\/p>\n<p>\u0418 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043d\u0430\u0439\u0442\u0438 <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\nabla \\text{MSELoss}=\\begin{bmatrix} \\frac{\\partial\\text{MSELoss}}{\\partial C_1}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial C_2}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial \\alpha}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial \\beta} \\end{bmatrix}\" alt=\"\\nabla \\text{MSELoss}=\\begin{bmatrix} \\frac{\\partial\\text{MSELoss}}{\\partial C_1}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial C_2}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial \\alpha}\\\\  \\frac{\\partial\\text{MSELoss}}{\\partial \\beta} \\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e25\/fcb\/b45\/e25fcbb4578d09bea001bb354f46d76a.svg\" width=\"226\" height=\"139\"\/><\/p>\n<p>\u0410 \u0441\u0430\u043c\u0438 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0440\u0430\u0432\u043d\u044b<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{\\partial \\text{MSELoss}}{\\partial C_1} =\\frac{\\partial \\text{MSELoss}}{\\partial y} \\frac{\\partial y}{\\partial C_1} =\\\\ \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot e^{\\alpha \\cdot t_i} \\cdot \\sin(\\beta t_i)\" alt=\"\\frac{\\partial \\text{MSELoss}}{\\partial C_1} =\\frac{\\partial \\text{MSELoss}}{\\partial y} \\frac{\\partial y}{\\partial C_1} =\\\\ \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot e^{\\alpha \\cdot t_i} \\cdot \\sin(\\beta t_i)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/419\/ac8\/455\/419ac8455c2c28553758dfbd920938ba.svg\" width=\"603\" height=\"114\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{\\partial \\text{MSELoss}}{\\partial C_2} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot e^{\\alpha \\cdot t_i} \\cdot \\cos(\\beta t_i)\" alt=\"\\frac{\\partial \\text{MSELoss}}{\\partial C_2} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot e^{\\alpha \\cdot t_i} \\cdot \\cos(\\beta t_i)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2b\/ca6\/e63\/c2bca6e63f5a5ff3d833be802d57a567.svg\" width=\"446\" height=\"61\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{\\partial \\text{MSELoss}}{\\partial \\alpha} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot (C_1 \\cdot t_i \\cdot e^{\\alpha \\cdot t_i} \\cdot \\sin(\\beta t_i) + C_2 \\cdot t_i \\cdot e^{\\alpha \\cdot t_i} \\cdot \\cos(\\beta t_i))\" alt=\"\\frac{\\partial \\text{MSELoss}}{\\partial \\alpha} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot (C_1 \\cdot t_i \\cdot e^{\\alpha \\cdot t_i} \\cdot \\sin(\\beta t_i) + C_2 \\cdot t_i \\cdot e^{\\alpha \\cdot t_i} \\cdot \\cos(\\beta t_i))\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3db\/4c3\/0d9\/3db4c30d9a7b00c02404e607df37f758.svg\" width=\"728\" height=\"61\"\/><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{\\partial \\text{MSELoss}}{\\partial \\beta} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot (C_1 \\cdot e^{\\alpha \\cdot t_i} \\cdot t_i \\cdot \\cos(\\beta t_i) - C_2 \\cdot e^{\\alpha \\cdot t_i} \\cdot t_i \\cdot \\sin(\\beta t_i))\" alt=\"\\frac{\\partial \\text{MSELoss}}{\\partial \\beta} = \\frac{1}{N} \\sum_{i=1}^{N} 2(y(t_i) - y_{\\text{true}, i}) \\cdot (C_1 \\cdot e^{\\alpha \\cdot t_i} \\cdot t_i \\cdot \\cos(\\beta t_i) - C_2 \\cdot e^{\\alpha \\cdot t_i} \\cdot t_i \\cdot \\sin(\\beta t_i))\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9c\/15c\/2a1\/e9c15c2a17fd452da0bfc1ae4cfaca80.svg\" width=\"728\" height=\"61\"\/><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u0445 \u0441\u0442\u043e\u0438\u0442 \u0441\u0443\u043c\u043c\u0430 \u043e\u0442 1 \u0434\u043e N, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430 \u0440\u0430\u0437 \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u0435\u0440\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 (\u0431\u0430\u0442\u0447) \u0438\u0437 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u044e\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u043d\u0435\u043c\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433? \u042d\u0442\u043e \u0443\u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0443. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u044d\u0442\u043e \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b\u0439 \u0441\u043f\u0443\u0441\u043a (SGD)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\omega_{t+1} =\\omega_t - \\alpha \\nabla\\text{MSELoss} \" alt=\"\\omega_{t+1} =\\omega_t - \\alpha \\nabla\\text{MSELoss} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e8\/2ac\/34f\/5e82ac34faca3d10cc32ed6cd0eb3090.svg\" width=\"215\" height=\"21\"\/><\/p>\n<p>\u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\alpha\" alt=\"\\alpha\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a9d\/d81\/dee\/a9dd81dee14d15fa410ff69517bbeb94.svg\" width=\"13\" height=\"12\"\/> \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a learning rate. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 Adam.<\/p>\n<\/div>\n<\/details>\n<h3>\u0428\u0430\u0433 4: \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/h3>\n<pre><code class=\"python\">analytic.alpha, analytic.c_1, analytic.c_2<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"[-0.5, 2.3094, 2]\" alt=\"[-0.5, 2.3094, 2]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd4\/4e6\/8bc\/fd44e68bcb28edea50e0c93963a6a1c5.svg\" width=\"133\" height=\"22\"\/><\/p>\n<pre><code class=\"python\">estimation = [float(param.data) for param in model.parameters()] estimation<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"[-0.49999, 2.30939, 2.00000]\" alt=\"[-0.49999, 2.30939, 2.00000]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ec\/6cd\/4dc\/5ec6cd4dc433a80b7d6563753dbda6a9.svg\" width=\"237\" height=\"22\"\/><\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"0.01\\%\" alt=\"0.01\\%\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f1\/02a\/147\/9f102a14749a0d6d02a4f04e248d126a.svg\" width=\"51\" height=\"19\"\/>. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u0435\u0433\u043b\u0430 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<pre><code class=\"python\">approx = Analytic(     alpha=estimation[0],     beta=model.beta,      c_1=estimation[1],     c_2=estimation[2] )  # Analytic, we defined earlier plt.plot(time, analytic(time), color[0],          label=\"$y=4\/\\sqrt{3} \\cdot e^{-t\/2} sin(\\sqrt{3}t\/2) - 2 e^{-t\/2} cos(\\sqrt{3}t\/2)$.\")  # Approximation plt.plot(time, approx(time), color[2], linestyle='--', label='Approximation')<\/code><\/pre>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/298\/9fc\/eb8\/2989fceb8755b749bb2aa91a143a1d15.png\" alt=\"\u0410\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 torch \u043c\u043e\u0434\u0435\u043b\u044c\u044e.\" title=\"\u0410\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 torch \u043c\u043e\u0434\u0435\u043b\u044c\u044e.\" width=\"571\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/298\/9fc\/eb8\/2989fceb8755b749bb2aa91a143a1d15.png\"\/><\/p>\n<div><figcaption>\u0410\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 torch \u043c\u043e\u0434\u0435\u043b\u044c\u044e.<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0438\u0436\u0435. \u042d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u044d\u043f\u043e\u0445\u0430\u0445 <code>0, 10, 20<\/code> .<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c8\/fd9\/3fb\/5c8fd93fbbdd96042511d4b5cde3d809.png\" width=\"1489\" height=\"690\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c8\/fd9\/3fb\/5c8fd93fbbdd96042511d4b5cde3d809.png\"\/><\/figure>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/h2>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u044b\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u043c\u0438. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\beta\" alt=\"\\beta\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/848\/737\/cae\/848737cae1f59300d0637a9c2c9eb618.svg\" width=\"11\" height=\"20\"\/>, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0441\u0442\u043e\u044f\u0442\u044c \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u0431\u044b\u043b \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e? \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5e8\/ee7\/152\/5e8ee71525a2f7814b4514543c5cac56.png\" width=\"582\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e8\/ee7\/152\/5e8ee71525a2f7814b4514543c5cac56.png\"\/><\/figure>\n<p>\u041e\u0431\u044a\u044f\u0441\u043d\u044f\u044e. \u041a\u043e\u0441\u0438\u043d\u0443\u0441 \u0438 \u0441\u0438\u043d\u0443\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u044f\u0442 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" alt=\"y(t)=C_1\\cdot e^{\\alpha\\cdot t} \\cdot \\sin(\\beta t)+ C_2 \\cdot e^{\\alpha\\cdot t} \\cdot \\cos(\\beta t)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/85e\/972\/a24\/85e972a24469748351e4f7b924e8a75d.svg\" width=\"361\" height=\"24\"\/><\/p>\n<p>\u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0444\u043e\u0440\u043c\u0443 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0434\u0435\u043b\u0430\u044f \u0435\u0435 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 (\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432). \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0438\u0445 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043e\u043c \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430\u043c \u0438 \u043f\u043b\u043e\u0445\u043e\u0439 \u0441\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u043a \u0442\u0430\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\alpha=-0.79,\\quad \\beta=0.0,\\quad C_1=0.0,\\quad  C_2=3.00\" alt=\"\\alpha=-0.79,\\quad \\beta=0.0,\\quad C_1=0.0,\\quad  C_2=3.00\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/689\/c68\/ff5\/689c68ff531cd6f8339c376d0eb2c2bd.svg\" width=\"395\" height=\"20\"\/><\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u044f\u043b\u0430 \u0432\u0438\u0434 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y(t)=3e^{-0.79t}\" alt=\"y(t)=3e^{-0.79t}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aab\/a22\/42b\/aaba2242b80cc28e898acef1787a65ab.svg\" width=\"120\" height=\"25\"\/>, \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u0430 \u043e\u0442 \u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439.<\/p>\n<h2>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0440\u0447\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c autograd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043f\u0440\u044f\u043c\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c \u0443\u0433\u043e\u0434\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0451 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c &#171;\u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438&#187; \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u043c \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c. \u0421\u043c\u0435\u043b\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0434\u0435\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0438\u0431\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 PyTorch.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 <a href=\"https:\/\/www.kaggle.com\/code\/dmitryellison\/how-to-approximate-any-function-with-pytorch\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0433\u043b\u0435<\/a>, \u0430 \u043c\u0435\u043d\u044f \u0432 <a href=\"https:\/\/t.me\/dimkablin\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0435<\/a>. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430\u043c \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/808867\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0441\u0442?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">56.41% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f<\/span><span class=\"tm-article-poll__answer-votes\">22<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 56.41%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">17.95% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435 \u043c\u043e\u0433\u0443 \u043e\u0446\u0435\u043d\u0438\u0442\u044c<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 17.95%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">5.13% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 5.13%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">15.38% <\/span><span class=\"tm-article-poll__answer-label\">\u043c\u0435\u043c \u0441\u043c\u0435\u0448\u043d\u043e\u0439<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 15.38%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">5.13% <\/span><span class=\"tm-article-poll__answer-label\">\u0442\u044b\u043a<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 5.13%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 39 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f 1 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/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\/808867\/\"> https:\/\/habr.com\/ru\/articles\/808867\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. PyTorch \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. <\/p>\n<figure class=\"bordered full-width\"><\/figure>\n<h2>\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u0434\u0438\u0444\u0444\u0443\u0440\u044b. <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0437 \u0442\u0435\u043e\u0440\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0448\u0438\u043c \u0435\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <\/p>\n<p>\u042d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u0433\u0434\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0445\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, <em><\/em> &#8212; \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u0430 \u200b \u0438 \u200b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0435\u0440\u0432\u0443\u044e \u0438 \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435  \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 <em><\/em>.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0440\u043d\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u042d\u0439\u043b\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0432 \u0438 \u0441\u0438\u043d\u0443\u0441\u043e\u0432<\/p>\n<p>\u0433\u0434\u0435 \u200b \u0438 \u200b &#8212; \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0438\u0445 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0438 . \u0422\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u043a\u043b\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439  \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>control<\/code> <\/p>\n<pre><code class=\"python\">init_state = [1, 2] dt = 0.001 time = np.linspace(0, 10, int(time\/dt))  # create transfer function numerator = [1] denominator = [1, 1, 1] system = ctrl.tf(numerator, denominator)  # get respomse from the TF response = ctrl.initial_response(system, time, init_state).outputs plt.plot(time, response, label=\"Impulse response of the system\")<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e <code>time<\/code>, <code>response<\/code> \u043c\u044b \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<pre><code class=\"python\">class Analytic:     def __init__(self, alpha, beta, c_1, c_2):         self.alpha = alpha         self.beta = beta          self.c_1 = c_1         self.c_2 = c_2           def calculate(self, t: float) -> float:         return self.c_1 * np.exp(self.alpha * t) * np.sin(self.beta * t) \\              + self.c_2 * np.exp(self.alpha * t) * np.cos(self.beta * t)          def __call__(self, t: list[float]) -> list[float]:         return np.vectorize(self.calculate)(t)  analytic = Analytic(     alpha = -0.5,     beta = np.sqrt(3)\/2,     c_1 = 4\/np.sqrt(3),     c_2 = 2 )  plt.plot(time, analytic(time), linestyle=\"--\",           label=\"Analityc solution\")<\/code><\/pre>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435.<\/figcaption><\/div>\n<\/figure>\n<h2>\u0428\u0430\u0433 2: \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432\u0438\u0434\u0430<\/p>\n<p>\u0433\u0434\u0435 <\/p>\n<ul>\n<li>\n<p>\u03b1: \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u03b2:  \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 ): \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0441\u043e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0441\u0446\u0438\u043b\u043b\u044f\u0446\u0438\u0438. \u041f\u043e\u0437\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0447\u0435\u043c\u0443 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435.<\/p>\n<\/li>\n<li>\n<p> \u0438 : \u041e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PyTorch. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438:<\/p>\n<pre><code class=\"python\">class Model(nn.Module):     \"\"\"Our class that will be trained\"\"\"      def __init__(self):         super().__init__()         self.alpha = nn.Parameter(torch.zeros(1))         self.beta = np.sqrt(3)\/2                       self.c_1 = nn.Parameter(torch.zeros(1))         self.c_2 = nn.Parameter(torch.zeros(1))              def forward(self, t):         return self.c_1 * torch.exp(self.alpha * t) * torch.sin(self.beta * t) \\              + self.c_2 * torch.exp(self.alpha * t) * torch.cos(self.beta * t)<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>Model<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <code>nn.Module<\/code> \u0432 PyTorch. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>init<\/code> \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <code>alpha<\/code>, <code>C1<\/code> \u0438 <code>C2<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 <code>beta<\/code>. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>forward<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438, \u0433\u0434\u0435 \u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>output<\/code> \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>t<\/code> \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430 <code>torch.utils.data.Dataset<\/code>. <\/p>\n<pre><code class=\"python\">class TimeResponseDataset(Dataset):     \"\"\"Torch Dataset for x=time and y=response\"\"\"     def __init__(self, time, response):         self.time = torch.Tensor(time)         self.response = torch.Tensor(response)              def __len__(self):         return len(self.time)          def __getitem__(self, idx):         return {'time': self.time[idx], 'response': self.response[idx]}<\/code><\/pre>\n<p>\u041e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0436\u0435 \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 <code>torch.utils.data.DataLoader<\/code>. \u041e\u043d \u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0430\u0442\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"python\">dataset = TimeResponseDataset(time, response) dataloader = DataLoader(dataset, batch_size=512, shuffle=True)<\/code><\/pre>\n<h2>\u0428\u0430\u0433 3: \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\">model = Model() print(f\"trainable params: {len(model.parameters())}\")<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043a\u0430\u043a \u043c\u044b \u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438, \u0440\u0430\u0432\u0435\u043d 3.<\/p>\n<p>\u041f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440. \u041b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u043c \u043a\u0430\u043a \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0430\u043c \u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0443\u043c\u0430, \u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0435\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"python\">lr = 0.01 betas = (0.9, 0.999) history = []  criterion = nn.MSELoss()  optimizer = torch.optim.Adam(model.parameters(), lr=lr, betas=betas, eps=1e-8)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0443\u0447\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 150 \u044d\u043f\u043e\u0445\u0430\u0445, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<pre><code class=\"python\">epochs = 150 for epoch in tqdm(range(epochs)):     for data in dataloader:         optimizer.zero_grad()         pred = model(data['time'])         loss = criterion(pred, data['response'])         loss.backward()         optimizer.step()                  history.append(loss.detach().numpy())<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f epochs \u0440\u0430\u0437 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443. \u041a\u043b\u0430\u0441\u0441 <code>DataLoader<\/code> \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0442\u043e\u043f\u043a\u0443 (\u0431\u0430\u0442\u0447) \u0434\u0430\u043d\u043d\u044b\u0445 . \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438 \u043d\u0430\u0439\u0434\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435<\/p>\n<p>\u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 <code>optimizer.step()<\/code>, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b <code>optimizer.zero_grad()<\/code> \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u0432\u043d\u043e\u0432\u044c \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043c\u043e\u0434\u0435\u043b\u0438 <code>loss.backward()<\/code>.<\/p>\n<figure class=\"float full-width\">\n<div><figcaption>MSE \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0430\u0442\u0447\u0435\u0439 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u043d\u0430 500 \u0448\u0430\u0433\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0410 \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 torch.autograd? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438 \u043d\u0430\u0439\u0434\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432.<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0418 \u043f\u0440\u0430\u0432\u0434\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0439\u0434\u0435\u043c! \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430, \u0442\u043e, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0432 \u044d\u0442\u043e\u0442 \u043f\u0443\u043d\u043a\u0442, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442.<\/p>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e \u0432\u0430\u0448 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442? \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u044e. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442 &#8212; \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418 \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0442\u0435\u0442 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b. \u0418 \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u0438\u0431\u044b\u0441\u0442\u0440\u0435\u0439\u0448\u0435\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0423\u043c\u043d\u043e\u0436\u0438\u043c \u043d\u0430 \u043c\u0438\u043d\u0443\u0441 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0443\u0434\u0430 \u0431\u044b \u043d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u0441\u044c \u043f\u043e\u0439\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0413\u0440\u0430\u0444\u0438\u043a \u043b\u043e\u0441\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u0438\u043d\u0438\u043c\u0443\u043c \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0447\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<p>\u0418 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043d\u0430\u0439\u0442\u0438 <\/p>\n<p>\u0410 \u0441\u0430\u043c\u0438 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0440\u0430\u0432\u043d\u044b<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u0445 \u0441\u0442\u043e\u0438\u0442 \u0441\u0443\u043c\u043c\u0430 \u043e\u0442 1 \u0434\u043e N, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430 \u0440\u0430\u0437 \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u0435\u0440\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 (\u0431\u0430\u0442\u0447) \u0438\u0437 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u044e\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u043d\u0435\u043c\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433? \u042d\u0442\u043e \u0443\u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0443. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u044d\u0442\u043e \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b\u0439 \u0441\u043f\u0443\u0441\u043a (SGD)<\/p>\n<p>\u0433\u0434\u0435  \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a learning rate. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 Adam.<\/p>\n<\/div>\n<\/details>\n<h3>\u0428\u0430\u0433 4: \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/h3>\n<pre><code class=\"python\">analytic.alpha, analytic.c_1, analytic.c_2<\/code><\/pre>\n<pre><code class=\"python\">estimation = [float(param.data) for param in model.parameters()] estimation<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 . \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u0435\u0433\u043b\u0430 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<pre><code class=\"python\">approx = Analytic(     alpha=estimation[0],     beta=model.beta,      c_1=estimation[1],     c_2=estimation[2] )  # Analytic, we defined earlier plt.plot(time, analytic(time), color[0],          label=\"$y=4\/\\sqrt{3} \\cdot e^{-t\/2} sin(\\sqrt{3}t\/2) - 2 e^{-t\/2} cos(\\sqrt{3}t\/2)$.\")  # Approximation plt.plot(time, approx(time), color[2], linestyle='--', label='Approximation')<\/code><\/pre>\n<figure class=\"bordered full-width\">\n<div><figcaption>\u0410\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 torch \u043c\u043e\u0434\u0435\u043b\u044c\u044e.<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0438\u0436\u0435. \u042d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u044d\u043f\u043e\u0445\u0430\u0445 <code>0, 10, 20<\/code> .<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/h2>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u044b\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u043c\u0438. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 , \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0441\u0442\u043e\u044f\u0442\u044c \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u0431\u044b\u043b \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e? \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e.<\/p>\n<figure class=\"bordered full-width\"><\/figure>\n<p>\u041e\u0431\u044a\u044f\u0441\u043d\u044f\u044e. \u041a\u043e\u0441\u0438\u043d\u0443\u0441 \u0438 \u0441\u0438\u043d\u0443\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u044f\u0442 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 <\/p>\n<p>\u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0444\u043e\u0440\u043c\u0443 \u043b\u043e\u0441\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0434\u0435\u043b\u0430\u044f \u0435\u0435 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 (\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432). \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0438\u0445 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043e\u043c \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430\u043c \u0438 \u043f\u043b\u043e\u0445\u043e\u0439 \u0441\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u043a \u0442\u0430\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u044f\u043b\u0430 \u0432\u0438\u0434 , \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u0430 \u043e\u0442 \u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439.<\/p>\n<h2>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0440\u0447\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c autograd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043f\u0440\u044f\u043c\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c \u0443\u0433\u043e\u0434\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0451 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c &#171;\u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438&#187; \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u043c \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c. \u0421\u043c\u0435\u043b\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0434\u0435\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0438\u0431\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 PyTorch.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 <a href=\"https:\/\/www.kaggle.com\/code\/dmitryellison\/how-to-approximate-any-function-with-pytorch\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0433\u043b\u0435<\/a>, \u0430 <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-374087","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374087","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=374087"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374087\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=374087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=374087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=374087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}