
рд╣рд╛рдп, рд╣рдмреНрд░реЛрдЬрд╝рд┐рддреЗрд▓реА! рдкреБрд╕реНрддрдХ рдЧрд╣рд░реА рд╕реАрдЦрдиреЗ рдХреА рддрдХрдиреАрдХ рдХреА рдЖрдЧреЗ рдХреА рдорд╣рд╛рд░рдд рдХреА рдиреАрдВрд╡ рд░рдЦрддреА рд╣реИред рдпрд╣ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рддреЛрдВ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рдкреБрд╕реНрддрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдХрдо рд╕рдВрднрд╡ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реАрдорд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЗрд░рд╛рджреЗ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╣реИред рдЖрдкрдХреЛ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡рд┐рдзрд┐рдпреЛрдВ, рдЙрддреНрддрд▓ рдЕрдиреБрдХреВрд▓рди, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЧрд╣рд░реА рд╕реАрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рддреЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдВред
рд╣рдо рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рддреЗ рд╣реИрдВ рдХрд┐ "рдПрдХ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪрд╛ рдХреНрдпрд╛ рд╣реИ?"
рдЕрдЪреНрдЫреЗ рдЙрдкрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рдЧрддрд┐ рд╡рд┐рдХрд╛рд╕, рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рддреЗ рд╣реИрдВредрдпрджрд┐ рдЖрдк рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдРрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдврд╛рдВрдЪреЗ рдЬреИрд╕реЗ PyTorch, TensorFlow, Theano (рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдШреЛрд╖рд┐рдд), Keras, Lasagne рдФрд░ DyNet рдореЗрдВ рдЖ рдЧрдПред рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП рд╣реИрдВ, рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрди рд╕рднреА рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдореБрдлреНрдд рдФрд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдФрд░ рдКрд╣рд╛рдкреЛрд╣ рдХреА рднрд╛рд╡рдирд╛ рд╣реИред
рдЕрдм рддрдХ, рдореИрдВрдиреЗ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЬрд╝рд░реВрд░реА рдерд╛ рдХрд┐ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рдерд╛, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ (рдХреЗрд╡рд▓ NumPy рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдРрд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд┐рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдореЗрдореЛрд░реА (LSTM) рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ, рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдЬреЛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ NumPy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛, рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ (рдЧреНрд░реЗрдбрд░ рдЗрд╕ рдХреЛрдб рдореЗрдВ) рд╕рднреА рдЬрдЧрд╣ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
рдпрд╣ рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЧрд╣рд░реЗ рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧрд╣рд░реА рд╕реАрдЦрдиреЗ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреА рд╣реИ (рд╕рд╛рде рд╣реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ (рдЬреАрдкреАрдпреВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ 10-100 рдЧреБрдирд╛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЕрдиреБрд╕рдВрдзрд╛рди рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдЪреМрдЦрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдХрд╛рдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЖрдкрдХреЗ рдХреИрд░рд┐рдпрд░ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдПрдХ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рд╢реЛрдзрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╣рдо рдЦреБрдж рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдХреЗ рдврд╛рдВрдЪреЗ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕реАрдЦрдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ рдХрд┐ рдпреЗ рд╕рднреА рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ (рдЬреИрд╕реЗ рдПрд▓рдПрд╕рдЯреАрдПрдо) рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдирд╡реАрдирддрдо рд░реБрдЭрд╛рдиреЛрдВ рдХреЗ рдмрд╛рдж, рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╣рд▓реНрдХрд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рдПрдВрдЧреЗред рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЬрдЯрд┐рд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЙрдирдХреА рдорджрдж рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдХреНрдпрд╛ рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрдиреЗ рджрдо рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЫреЛрдЯрд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрд╣рд░реА рд╕реАрдЦрдиреЗ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдПрдкреАрдЖрдИ) рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗред рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдерд╛, рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдореЙрдбрд▓ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред
рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ? рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЧрд╣рд░реА рд╕реАрдЦрдиреЗ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреА рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмреИрдХрдкреНрд░реЛрдкреИрдЬреЗрд╢рди рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддрд░рдг рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлреНрд░реЗрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреАрдЫреЗ рд╡рд┐рддрд░рдг рдФрд░ рд╡рдЬрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдЪреМрдЦрдЯреЗ рднреА рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рддреЛрдВ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╡рд┐рддрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдЯреЗрдиреНрд╕рд░реНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп
рд╕реЗрдВрд╕рд░ рд╡реИрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░рд┐рд╕ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрдд рд░реВрдк рд╣реИрдВрдЗрд╕ рдХреНрд╖рдг рддрдХ, рд╣рдордиреЗ рдореБрдЦреНрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реИрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░реАрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡реИрдХреНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдФрд░ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╕реНрдХреЗрд▓рд░ (рдПрдХрд▓ рд╕рдВрдЦреНрдпрд╛) рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдВрд╕рд░ рдПрдХ рдЕрдореВрд░реНрдд рд░реВрдк рд╣реИред рд╡реЗрдХреНрдЯрд░ рдПрдХ рдЖрдпрд╛рдореА рдЯреЗрдВрд╕рд░ рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рдЯреЗрдВрд╕рд░ рд╣реИ, рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЖрдпрд╛рдореЛрдВ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдПрди-рдбрд╛рдпрдореЗрдВрд╢рдирд▓ рдЯреЗрдВрд╕рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪрд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо Tensor рдХрд╣реЗрдВрдЧреЗ:
import numpy as np class Tensor (object): def __init__(self, data): self.data = np.array(data) def __add__(self, other): return Tensor(self.data + other.data) def __repr__(self): return str(self.data.__repr__()) def __str__(self): return str(self.data.__str__()) x = Tensor([1,2,3,4,5]) print(x) [1 2 3 4 5] y = x + x print(y) [2 4 6 8 10]
рдпрд╣ рд╣рдорд╛рд░реА рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ NumPy рдЕрд░реИ (self.data) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдПрдХрд▓ рдЯреЗрдВрд╕рд░ рдСрдкрд░реЗрд╢рди (рдЬреЛрдбрд╝) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ Tensor рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдврд╛рд▓ рдЧрдгрдирд╛ (рдСрдЯреЛрдЧреНрд░рд╛рдж) рдХрд╛ рдкрд░рд┐рдЪрдп
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдореИрдиреБрдЕрд▓ рдмреИрдХ рдкреНрд░рдЪрд╛рд░ рдХрд┐рдпрд╛ред рдЕрдм рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдирд╛рддреЗ рд╣реИрдВ!рдЕрдзреНрдпрд╛рдп 4 рдореЗрдВ, рд╣рдордиреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдкреЗрд╢ рдХрд┐рдпрд╛ред рддрдм рд╕реЗ, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЗрди рд╡реНрдпреБрддреНрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХреА рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдЖрдВрджреЛрд▓рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдврд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдЫрд▓реЗ рдШрдЯрдХ рдореЗрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рдХрд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕рднреА рд╡рдЬрди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рддрд░реНрдХ рднреА рдЯреЗрдВрд╕рд░ рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рдерд╛ред
import numpy as np class Tensor (object): def __init__(self, data, creators=None, creation_op=None): self.data = np.array(data) self.creation_op = creation_op self.creators = creators self.grad = None def backward(self, grad): self.grad = grad if(self.creation_op == "add"): self.creators[0].backward(grad) self.creators[1].backward(grad) def __add__(self, other): return Tensor(self.data + other.data, creators=[self,other], creation_op="add") def __repr__(self): return str(self.data.__repr__()) def __str__(self): return str(self.data.__str__()) x = Tensor([1,2,3,4,5]) y = Tensor([2,2,2,2,2]) z = x + y z.backward(Tensor(np.array([1,1,1,1,1])))
рдпрд╣ рд╡рд┐рдзрд┐ рджреЛ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдВрд╕рд░ рджреЛ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд░рдЪрдирд╛рдХрд╛рд░ рдХрд┐рд╕реА рднреА рдЯреЗрдВрд╕рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдЯреЗрдВрд╕рд░ (рдХреЛрдИ рдирд╣реАрдВ рдХреЗ рд▓рд┐рдП рдЪреВрдХ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЕрдиреНрдп рджреЛ рджрд╕рд┐рдпреЛрдВ, x рдФрд░ y рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЯреЗрдВрд╕рд░ z рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯреЗрдВрд╕рд░ z рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдЧреБрдг рдореЗрдВ рдЯреЗрдирд░реНрд╕ x рдФрд░ y рд╕рдорд╛рд╣рд┐рдд рд╣реЛрдВрдЧреЗред creation_op рдПрдХ рд╕рд╛рдереА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЯреЗрдВрд╕рд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдирд┐рд░реНрджреЗрд╢ z = x + y рддреАрди рдиреЛрдбреНрд╕ (x, y рдФрд░ z) рдФрд░ рджреЛ рдХрд┐рдирд╛рд░реЛрдВ (z -> x рдФрд░ z -> y) рдХреЗ рд╕рд╛рде рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рдирд╛рд░реЗ рдХреЛ рд░рдЪрдирд╛_рдУрдк рд╕реЗ рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрд┐рдЫрдбрд╝реЗ рдкреНрд░рд╕рд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд╣рд▓рд╛ рдирд╡рд╛рдЪрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЧреНрд░рд╛рдл рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг рд╣реИред рдпрджрд┐ рд╣рдо z рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдФрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░рд╛рдл рдХреЛ рдПрдХ рдирдП рдЪрд░ рд░реЗрдлрд░рд┐рдВрдЧ z рдореЗрдВ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЯреЗрдиреНрд╕рд░ рд╡рд░реНрдЧ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджреВрд╕рд░рд╛ рдирд╡рд╛рдЪрд╛рд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк z.backward () рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ x рдФрд░ y рдХреЗ рд▓рд┐рдП рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдкрд╛рд╕ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде z (рдПрдб) рдЯреЗрдВрд╕рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдврд╛рд▓ рд╡реЗрдХреНрдЯрд░ (np.array ([1,1,1,1,1]]) рдХреЛ z рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣ рдЗрд╕реЗ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдзреНрдпрд╛рдп 4 рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд┐рдЫрдбрд╝реЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдЫрдбрд╝реЗ рдкреНрд░рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ x рдФрд░ y рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдврд╛рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ z рд╕реЗ x рдФрд░ y рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ:
print(x.grad) print(y.grad) print(z.creators) print(z.creation_op) [1 1 1 1 1] [1 1 1 1 1] [array([1, 2, 3, 4, 5]), array([2, 2, 2, 2, 2])] add
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдврд╛рд▓ рдЧрдгрдирд╛ рдХреЗ рдЗрд╕ рд░реВрдк рдХреА рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдХреНрдЯрд░ рдЕрдкрдиреЗ рд╕рднреА рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА .backward () рд╡рд┐рдзрд┐ рдХреЛ self.creators рд╕реВрдЪреА рд╕реЗ рдХрд╣рддрд╛ рд╣реИ:
┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗
рд╕рд╛рдордЧреНрд░реА┬╗
рдЕрдВрд╢рдлреЗрд░реАрд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 25% рдХреА рдЫреВрдЯ -
рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧрдкреБрд╕реНрддрдХ рдХреЗ рдкреЗрдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рднреБрдЧрддрд╛рди рдкрд░, рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред