рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдФрд░ рдЬрд╛рд╡рд╛ рд╣реИ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдПрдордПрд▓-рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкрд╛рдпрдерди рдЖрдЬ рдПрдХ рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рдкрд░ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд╕рдореБрджрд╛рдп рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ [ 1 ]ред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рддрд░рд╣, рдЕрдЬрдЧрд░ рдЕрдкрдиреА рд╕рд░рд▓рддрд╛ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреГрддреНрд░рд┐рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ рд╣рдореЗрд╢рд╛ рдкрд╛рдпрдерди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рддрдм рдЖрдП рдереЗ рдЬрдм рд╣рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдХреЗ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рд╣рдо рдХреНрдпрд╛ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ:

  • рдмрдВрдбрд▓ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдФрд░ рдЬрд╛рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ;
  • DeepLearning4j рдврд╛рдВрдЪреЗ (рд╢реЙрд░реНрдЯ рдХреЗ рд▓рд┐рдП DL4J) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА;
  • DL4J рдореЗрдВ рдПрдХ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ (рдзреНрдпрд╛рди рд╕реЗ, рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХрдИ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) - рдкрд░рддреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдХреНрдпрд╛ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдХреНрдпреЛрдВ рдкрдврд╝рд╛?

  • рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕рдорд╛рди рдПрдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ;
  • рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрд╡рд┐ рдКрдВрдЪрд╛рдИ

рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдЕрднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛ [ 2 ]ред

рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЧрд╣рд░реЗ рд╕реАрдЦрдиреЗ рдХреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдпрд╣рд╛рдВ [ 3 ] рдФрд░ рдпрд╣рд╛рдВ [ 4 ] рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд╛рдпрдерди рдФрд░ рд╕реА ++ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ: рд╡реЗ рд╕реА + + рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдХрд░реНрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рдЙрдЪреНрдЪ-рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд╛рдпрдерди рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛рдПрдБ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдмрдбрд╝реЗ рдЙрджреНрдпрдореЛрдВ рдФрд░ рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╣реИред рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рдЬреЗрдПрдирдЖрдИ / рдЬреЗрдПрдирдП рдмрд╛рдЗрдВрдбрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд░реЙрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдзреБрдВрдзрд▓рд╛ рд╣реЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд╛рдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреЛрд╣рд░рд╛рдпрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдпрд╣ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрдереЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдЦрд╛рдореА рд╣реИ - рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рд╕рд╛рде рд╣реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реАрдорд┐рдд рдХреНрд╖рдорддрд╛ред

рдЬрд╛рд╡рд╛ рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреАрдкреАрдПрд▓рд░реНрдирд┐рдВрдЧ 4 рдЬреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдбреАрдПрд▓ 4 рдЬреЗ рдлреЙрд░ рд╢реЙрд░реНрдЯ) рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛ DL4 рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ [ 5 ] рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг TensorFlow рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ, рддрдХрдиреАрдХреА рдХреНрд╖рдорддрд╛рдУрдВ, рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЖрдХрд╛рд░реЛрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде TensorFlow outperforms DL4Jред рдлрд┐рд░ рднреА, рд╕реНрдХрд╛рдИрдорд╛рдЗрдВрдб рдЬрд┐рд╕ рдкреНрд░рд╡реГрддреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдХрд╛рдлреА рдЖрд╢рд╛рдЬрдирдХ рд╣реИред рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рддрд┐рдпреЛрдЧреА рдЕрднреА рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВред

DL4J рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреБрдЫ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ (рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ рд╣реИ) рдЬреЛ рдХрд┐ рдХреЗрд░рд╕-рдореЙрдбрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд░рд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ [ 6 ]ред DL4J рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ ML-рдореЙрдбрд▓ (dl4j-example) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛ рдЗрддрдиреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред DL4J рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХреЗрд░рд╕ / TF рдореЙрдбрд▓ рдХреЗ рдЖрдпрд╛рдд рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг 1.7 (64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг) рдФрд░ рдЙрдЪреНрдЪрддрд░ред
  2. рдЕрдкрд╛рдЪреЗ рдорд╛рд╡реЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдоред
  3. рдЖрдИрдбреАрдИ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП: Intellij IDEA, Eclipse, Netbeansред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИред
  4. рдЧрд┐рдЯ (рдЕрдкрдиреЗ рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП)ред

рд▓реЙрдиреНрдЪ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ [ 7 ] рдпрд╛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ [ 8 ]ред

рдореЙрдбрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, DL4J рдбреЗрд╡рд▓рдкрд░реНрд╕ KerasModelImport рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ (рдЕрдХреНрдЯреВрдмрд░ 2016 рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд)ред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреИрд░рд╕ рд╕реЗ рдореЙрдбрд▓ рдХреЗ рджреЛрдиреЛрдВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╣реИ (рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ - рдорд▓реНрдЯреАрд▓реЗрдпрд░ рдиреЗрдЯрд╡рд░реНрдХ) рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ (рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ - рдХреНрд▓рд╛рд╕ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирдЧреНрд░рд╛рдл)ред рдореЙрдбрд▓ рдпрд╛ рддреЛ рдкреВрд░реЗ HDF5 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдпрд╛ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - h5 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХрд╛ рд╡рдЬрди рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдпреБрдХреНрдд json рдлрд╝рд╛рдЗрд▓ред

рдПрдХ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, DL4J рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ [ 9 ] рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдлрд┐рд╢рд░ рдЖрдИрд░рд┐рд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред рдПрдХ рдЕрдиреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдореЙрдбрд▓ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ (1: рдкреВрд░реЗ рдПрдЪрдбреАрдПрдл 5 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ; 2: рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ - рдореЙрдбрд▓ рд╡реЗрдЯ (рдПрдЪ 5 рдПрдХреНрд╕рдЯреЗрдВрд╢рди) рдФрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдЬреЛрдВрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди)), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдореЙрдбрд▓ [ 10 ] рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдЯреАрдПрдл рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреЗ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ [ 11 ]ред рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЯреАрдПрдл рдореЗрдВ рдПрдХ рдЕрдзреВрд░рд╛ рдПрдкреАрдЖрдИ рд╣реИ - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред

рдореВрд▓ рдХреЗрд░рд╕ / TF рдореЙрдбрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕реАрдзрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╣рдо рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдХреЗ рд╕рд╛рде рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рдЖрдкрдХреЛ рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдкрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЛрдВ рдХреЗ рдкрдВрдЬреАрдХрд░рдг), рдХреБрдЫ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рдФрд░ рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реАрдорд╛рдУрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде DL4J рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕рдВрдХреЗрдд рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдкреНрд░рдЪрд▓рд┐рдд рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ DL4J рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЙрдбрд▓ рд╕реБрд╡рд┐рдзрд╛рдПрдБ:

1. рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ - рдХрд╛рд░реНрдпрд╛рддреНрдордХ (рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ);

2. рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреИрд░рд╛рдореАрдЯрд░ (рдмреИрдЪ рдХрд╛ рдЖрдХрд╛рд░, рдпреБрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛) рдЫреЛрдЯреЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ: рдмреИрдЪ рдХрд╛ рдЖрдХрд╛рд░ - 100, рдпреБрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ - 10, рдкреНрд░рддрд┐ рдпреБрдЧ рдЪрд░рдг - 10;

3. 13 рдкрд░рддреЛрдВ, рдкрд░рддреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЫрд╡рд┐ рдКрдВрдЪрд╛рдИ

рд▓рдШреБ рдкрд░рдд рд╡рд┐рд╡рд░рдг
  1. input_1 - рдЗрдирдкреБрдЯ рдкрд░рдд, рдПрдХ 2-рдЖрдпрд╛рдореА рдЯреЗрдВрд╕рд░ (рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ;
  2. lambda_1 - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рдд, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреЗрдВрд╕рд░ рдХреЗ TF рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдХреЛ рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдмрдирд╛рддрд╛ рд╣реИ;
  3. рдПрдореНрдмреЗрдбрд┐рдВрдЧ_1 - рдкрд╛рда рдбреЗрдЯрд╛ рдХреЗ рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдВрдмреЗрдбрд┐рдВрдЧ (рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рдмрдирд╛рддрд╛ рд╣реИ (3-рдбреА рдХреЗ рд▓рд┐рдП 2-рдбреА рдЯреЗрдВрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ);
  4. conv1d_1 - 1-рдбреА рд╕рдВрдХреЗрдВрджреНрд░рд┐рдд рдкрд░рдд;
  5. lstm_2 - LSTM рд▓реЗрдпрд░ (рдПрдореНрдмреЗрдбрд┐рдВрдЧ_1 (рдирдВрдмрд░ 3) рд▓реЗрдпрд░ рдХреЗ рдмрд╛рдж рдЬрд╛рддрд╛ рд╣реИ);
  6. lstm_1 - LSTM рд▓реЗрдпрд░ (conv1d (рдирдВрдмрд░ 4) рд▓реЗрдпрд░ рдХреЗ рдмрд╛рдж рдЬрд╛рддреА рд╣реИ);
  7. lambda_2 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рдд рд╣реИ рдЬрд╣рд╛рдВ lstm_2 (рдирдВрдмрд░ 5) рдкрд░рдд (рд▓реИрдореНрдмреНрдбрд╛_1 (рдирдВрдмрд░ 2) рдкрд░рдд рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдХреЗ рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди) рдХреЗ рдмрд╛рдж рдЯреЗрдВрд╕рд░ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  8. lambda_3 рдпреВрдЬрд░ рд▓реЗрдпрд░ рд╣реИ рдЬрд╣рд╛рдБ lstm_1 (рдирдВрдмрд░ 6) рдФрд░ conv1d_1 (рдирдВрдмрд░ 4) рд▓реЗрдпрд░реНрд╕ (рд▓реИрдореНрдмреНрдбрд╛_1 (рдирдВрдмрд░ 2) рд▓реЗрдпрд░ рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдХреЗ рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди) рдХреЗ рдмрд╛рдж рдЯреЗрдиреНрд╕рд░ рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  9. concatenate_1 - рдЫреЛрдЯреА (рдирдВрдмрд░ 7) рдФрд░ (рдирдВрдмрд░ 8) рдкрд░рддреЛрдВ рдХреА рдмреЙрдиреНрдбрд┐рдВрдЧ;
  10. dense_1 - 8 рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреА рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рдкрд░рдд рдФрд░ рдПрдХ рдШрд╛рддреАрдп рд░реИрдЦрд┐рдХ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди "рдПрд▓реБ";
  11. рдмреИрдЪ_рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди_1 - рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреА рдкрд░рдд;
  12. dense_2 - 1 рдиреНрдпреВрд░реЙрди рдФрд░ рд╕рд┐рдЧреНрдореЙрдЗрдб рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди "рд╕рд┐рдЧреНрдореЙрдЗрдб" рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рдкрд░рдд;
  13. lambda_4 - рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рдд рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реА рдкрд░рдд рдХрд╛ рд╕рдВрдкреАрдбрд╝рди (TF рдореЗрдВ рдирд┐рдЪреЛрдбрд╝) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

4. рд╣рд╛рдирд┐ рд╕рдорд╛рд░реЛрд╣ - рдмрд╛рдЗрдирд░реА_рдХреНрд░реЛрд╕реЗрдВрдЯреНрд░реЙрдкреА

рд╣рд╛рдирд┐=тИТ frac1N sum1N(ytrue cdotрд▓реЙрдЧ(yрдкреВрд░реНрд╡)+((1тИТytrue) cdotрд▓реЙрдЧ(1тИТyрдкреВрд░реНрд╡))



5. рдореЙрдбрд▓ рдЧреБрдгрд╡рддреНрддрд╛ рдореАрдЯреНрд░рд┐рдХ - рд╣рд╛рд░реНрдореЛрдирд┐рдХ рдорд╛рдзреНрдп (рдПрдл-рдорд╛рдк)

F=2 fracрдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдЧреБрдирд╛рдпрд╛рджрд╕рдЯреАрдХ+рдпрд╛рдж


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреБрдгрд╡рддреНрддрд╛ рдореАрдЯреНрд░рд┐рдХ рдХрд╛ рдореБрджреНрджрд╛ рдЖрдпрд╛рдд рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЖрдпрд╛рдд рдХреА рд╢реБрджреНрдзрддрд╛ рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛ рдПрдирдПрди-рдореЙрдбрд▓реНрд╕ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рдВрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдЗрдирд╡рд┐рдЬрд╝рди рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

DL4J рдореЗрдВ Keras рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ:


рдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг: Tensorflow 1.5.0 рдФрд░ Keras 2.2.5ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╛рдпрдерди рд╕реЗ рдореЙрдбрд▓ рдХреЛ HDF5 рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реЗ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

# saving model model1.save('model1_functional.h5') 

рдореЙрдбрд▓ рдХреЛ DL4J рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдЯреЗрдВрд╕реЛрдлрд╝реНрд▓реЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо (рдЬрд╣рд╛рдВ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рдереЗ)ред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдбреАрдПрд▓ 4 рдЬреЗ рдХреЗрд╡рд▓ рдХреЗрд░рд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд░рд╕ рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ [ 6 ] рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореЙрдбрд▓ рдЯреАрдПрдл (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд░реЗрд╕ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдЙрдирдХреА рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред

рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЗрд░рд╕-рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдЗрд╕рдХреЗ рджреЛрд╣рд░рд╛рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдгред рдЗрд╕ рд╕рдордп рддрдХ, рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ (1 рдпреБрдЧ) рдФрд░ рдкреНрд░рддрд┐ рдЪрд░рдг 1 рдЪрд░рдг (рдЪрд░рдг_рдкрд░_рдкреЙрдЪ)ред

рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рдХрд╕реНрдЯрдо рдкрд░рддреЛрдВ рдФрд░ рджреБрд░реНрд▓рдн рдкрд░рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде, рддреЛ рд╕рдлрд▓рддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдпрд╛рдд рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЗрд░реЗрд╕ рдореЙрдбрд▓ рдХреА рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЬрд╛рд╡рд╛ рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрд░рд╕ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдореЙрдбрд▓ рдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдЬреЛ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

TF рд╣рд╛рдирд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐, рдЬрдм рдЬрд╛рд╡рд╛ рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдиреБрдХрд╕рд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреИрд░рд╕ рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдЯреЗрдВрд╕реЛрдлрд╝реНрд▓реЛ рд╕реЗ log_loss (custom_loss рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

 Exception in thread "main" org.deeplearning4j.nn.modelimport.keras.exceptions.UnsupportedKerasConfigurationException: Unknown Keras loss function log_loss. 

рдХреЗрд░рд╕ рдХреЗ рд╕рд╛рде TF рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЬрдЧрд╣


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, TF рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди 2 рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реЗ рдХреЗрд╡рд▓ рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реИрдВрдмрдбрд╛ рд▓реЗрдпрд░ рдХрд╕реНрдЯрдо рд▓реЗрдпрд░ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдордирдорд╛рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдХреЗрд╡рд▓ 4 рд▓рдВрдмреЛрджрд░ рдкрд░рддреЗрдВ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрди рд▓реИрдореНрдмрдбрд╛ рдкрд░рддреЛрдВ рдХреЛ KerasLayer.registerLambdaLayer рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ [ 12 ])ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рдд рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди, рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрди рдкрд░рддреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рд╣реИрдВ; рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╣реИ [ резрей ]ред рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдЙрджрд╛рд╣рд░рдг [ 14 , 15 ] рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдП рдЧрдП рдереЗред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рд╕рднреА рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

1) рдЯреИрдВрд╕рд░ (рдореИрдЯреНрд░рд┐рдХреНрд╕) рдореЗрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдореНрдмреЗ рдкрд░рдд рджреА рдЧрдИ рджрд┐рд╢рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ) рджрд┐рд╢рд╛:

рдЗрд╕ рдкрд░рдд рдХрд╛ рдЗрдирдкреБрдЯ рдореЙрдбрд▓ рдХреЗ рдЗрдирдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред

1.1) рдкрд╛рдпрдерди рдкрд░рдд:

 padding = keras.layers.Lambda(lambda x: tf.pad(x, paddings=[[0, 0], [10, 10]], constant_values=1))(embedding) 

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░рдд рдХреЗ рдХрд╛рд░реНрдп, рд╣рдо рдЕрдЬрдЧрд░ рдкрд░рддреЛрдВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдордирдорд╛рдирд╛ рдЯреЗрдВрд╕рд░ 2x2 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛
рдпрд╣ 2x2 рдерд╛рдпрд╣ 2x22 рд╣реЛ рдЧрдпрд╛ рд╣реИ
[[ рез , реи ],
[ рей , рек ]]
[[37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1 , 2 , 37, 37, 37, 37, 37, 37, 37, 37, 37, 37]
[37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 3 , 4 , 37, 37, 37, 37, 37, 37, 37, 37, 37, 37]]


1.2) рдЬрд╛рд╡рд╛ рдкрд░рдд:

 KerasLayer.registerLambdaLayer("lambda_1", new SameDiffLambdaLayer() { @Override public SDVariable defineLayer(SameDiff sameDiff, SDVariable sdVariable) { return sameDiff.nn().pad(sdVariable, new int[][]{ { 0, 0 }, { 10, 10 }}, 1); } @Override public InputType getOutputType(int layerIndex, InputType inputType) { return InputType.feedForward(20); } }); 

рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЛрдВ рдореЗрдВ, 2 рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди "рдирд┐рд╢реНрдЪрд┐рдд" рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рддрдереНрдп рдкрд░ рдирд╣реАрдВ: рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ nn () рдмреИрдХрдПрдВрдб рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ); getOutputType рдкрдВрдЬреАрдХреГрдд рдкрд░рдд рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рддрд░реНрдХ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ (рдпрд╣рд╛рдВ 20, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдореВрд▓реНрдп рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ)ред рдпрд╣ рдЕрд╕рдВрдЧрдд рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

2) рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ) рдХреЗ рд╕рд╛рде рдЯреИрдВрд╕рд░ (рдореИрдЯреНрд░рд┐рдХреНрд╕) рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рдд:

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, LSTM рдкрд░рдд рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рдд рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИред

2.1) рдкрд╛рдпрдерди рдкрд░рдд:

 slicing_lstm = keras.layers.Lambda(lambda x: x[:, 10:-10])(lstm) 

рдПрдХ рдордирдорд╛рдирд╛ рдЯреЗрдВрд╕рд░ 2x22x5 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛
рдпрд╣ 2x22x5 рдерд╛рдпрд╣ 2x2x5 рдмрди рдЧрдпрд╛ рд╣реИ
[[[1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1 , 2,3,4,5], [1,2,3,4,5], [ 1 , 2 , 3 , 4 , 5 ], [ 1 , 2 , 3 , 4 , 5 ], [1,2 , 3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3] , 4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4] , 5], [1,2,3,4,5]],

[[1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [[ 1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1, 2,3,4,5], [1,2,3,4,5], [ 1 , 2 , 3 , 4 , 5 ], [ 1 , 2 , 3 , 4 , 5 ], [1,2, 3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,] 4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5,] 5], [1,2,3,4,5]]
[[[ рез , реи , рей , рек , рел ], [ рез , реи , рей , рек , рел ]],
[[ рез , реи , рей , рек , рел ], [ рез , реи , рей , рек , рел ]]]


2.2) рдЬрд╛рд╡рд╛ рдкрд░рдд:

 KerasLayer.registerLambdaLayer("lambda_2", new SameDiffLambdaLayer() { @Override public SDVariable defineLayer(SameDiff sameDiff, SDVariable sdVariable) { return sameDiff.stridedSlice(sdVariable, new int[]{ 0, 0, 10 }, new int[]{ (int)sdVariable.getShape()[0], (int)sdVariable.getShape()[1], (int)sdVariable.getShape()[2]-10}, new int[]{ 1, 1, 1 }); } @Override public InputType getOutputType(int layerIndex, InputType inputType) { return InputType.recurrent(60); } }); 

рдЗрд╕ рдкрд░рдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдирдкреБрдЯрдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░ рдлреАрдбрдлреЛрд░реНрд╡рд░реНрдб (20) рд╕реЗ рдмрджрд▓рдХрд░ рдЖрд╡рд░реНрддрдХ (60) рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдЖрд╡рд░реНрддрдХ рддрд░реНрдХ рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛ рдХрд┐рд╕реА рднреА рдкреВрд░реНрдгрд╛рдВрдХ (рдиреЙрдирдЬреЗрд░реЛ) рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рдд рдХреЗ рдЖрд╡рд░реНрддрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдпреЛрдЧ 160 (рдпрд╛рдиреА, рдЕрдЧрд▓реА рдкрд░рдд рдореЗрдВ, рддрд░реНрдХ 100 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд╕рдВрдЦреНрдпрд╛ 160 рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдпрд╛рдо рдХреЗ рд╕рд╛рде рдЯреЗрдВрд╕рд░ (рдХреЛрдИ рдирд╣реАрдВ, рдХреЛрдИ рдирд╣реАрдВ, 160) рдХреЛ рдкрд░рдд рдХреЗ рдЗрдирдкреБрдЯ concatenate_1 рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ 2 рддрд░реНрдХ рдЪрд░ рд╣реИрдВред

3) рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ) рдХреЗ рд╕рд╛рде рдЯреИрдВрд╕рд░ (рдореИрдЯреНрд░рд┐рдХреНрд╕) рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рдд:

рдЗрд╕ рд▓реЗрдпрд░ рдХрд╛ рдЗрдирдкреБрдЯ LSTM рд▓реЗрдпрд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рдордиреЗ conv1_d рд▓реЗрдпрд░ рд╣реИ

3.1) рдкрд╛рдпрдерди рдкрд░рдд:

 slicing_convolution = keras.layers.Lambda(lambda x: x[:,10:-10])(lstm_conv) 

рдпрд╣ рдСрдкрд░реЗрд╢рди рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2.1 рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред

3.2) рдЬрд╛рд╡рд╛ рдкрд░рдд:

 KerasLayer.registerLambdaLayer("lambda_3", new SameDiffLambdaLayer() { @Override public SDVariable defineLayer(SameDiff sameDiff, SDVariable sdVariable) { return sameDiff.stridedSlice(sdVariable, new int[]{ 0, 0, 10 }, new int[]{ (int)sdVariable.getShape()[0], (int)sdVariable.getShape()[1], (int)sdVariable.getShape()[2]-10}, new int[]{ 1, 1, 1 }); } @Override public InputType getOutputType(int layerIndex, InputType inputType) { return InputType.recurrent(100); } }); 

рдпрд╣ рд▓реИрдореНрдмреНрдбрд╛ рд▓реЗрдпрд░ рдкрд┐рдЫрд▓реЗ рд▓реИрдореНрдмрдбрд╛ рд▓реЗрдпрд░ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (100) рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рдХреНрдпреЛрдВ "100" рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд┐рдЫрд▓реА рдкрд░рдд рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдВрдХ 2 рдФрд░ 3 рдореЗрдВ, рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЗрдВ LSTM рдкрд░рддреЛрдВ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрд╡рд░реНрддрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд▓реИрдореНрдмреНрдбрд╛-рд▓реЗрдпрд░ рд╕реЗ рдкрд╣рд▓реЗ LSTM рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди conv1d_1, рддреЛ рдлрд┐рд░ рднреА рдЖрд╡рд░реНрддрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдпрд╣ рдЕрд╕рдВрдЧрдд рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

4) рдкрд┐рдЫрд▓реА рдкрд░рдд рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмрдбрд╛ рдкрд░рдд:

рдЗрд╕ рдкрд░рдд рдХрд╛ рдЗрдирдкреБрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкрд░рдд рд╣реИред

4.1) рдкрд╛рдпрдерди рдкрд░рдд:

  squeeze = keras.layers.Lambda(lambda x: tf.squeeze( x, axis=-1))(dense) 

рдПрдХ рдордирдорд╛рдирд╛ рдЯреЗрдВрд╕рд░ 2x4x1 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛
рдпрд╣ 2x4x1 рдерд╛2x4 рдмрди рдЧрдпрд╛
[[[ [рез], [реи], [рей], [рек]] ,

[ [рез], [реи], [рей], [рек] ]]
[[ рез, реи, рей, рек ],
[ рез, реи, рей, рек ]]


4.2) рдЬрд╛рд╡рд╛ рдкрд░рдд:

 KerasLayer.registerLambdaLayer("lambda_4", new SameDiffLambdaLayer() { @Override public SDVariable defineLayer(SameDiff sameDiff, SDVariable sdVariable) { return sameDiff.squeeze(sdVariable, -1); } @Override public InputType getOutputType(int layerIndex, InputType inputType) { return InputType.feedForward(15); } }); 

рдЗрд╕ рдкрд░рдд рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкрд░рдд рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░рдд рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдЯрд╛рдЗрдк рдлреАрдб 15 (15), рдкреИрд░рд╛рдореАрдЯрд░ 15 рдореЙрдбрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХрд┐рд╕реА рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ)ред

рдЖрдпрд╛рддрд┐рдд рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рдореЙрдбрд▓ рдХреЛ ComputationGraph рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 ComputationGraph model = org.deeplearning4j.nn.modelimport.keras.KerasModelImport.importKerasModelAndWeights("/home/user/Models/model1_functional.h5"); 

рдЬрд╛рд╡рд╛ рдХрдВрд╕реЛрд▓ рдХреЛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ


рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ DL4J рдореЗрдВ, рджрд╕рд┐рдпреЛрдВ рдХреЛ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ Nd4j рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдиреЗрдореНрдкреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ 4 рд╡рд░реНрдг рд╣реИрдВред рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рд╕рдВрдмрдВрдзрд┐рдд рдЖрдпрд╛рдо (4) рдХрд╛ рдПрдХ рд╕рд░рдгреА рдЙрдирдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 4 рдЗрдВрдбреЗрдХреНрд╕-рдПрдиреНрдХреЛрдбреЗрдб рд╡рд░реНрдг рд╣реИрдВ: 1, 3, 4, 8ред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдб:

 INDArray myArray = Nd4j.zeros(1,4); // one row 4 column array myArray.putScalar(0,0,1); myArray.putScalar(0,1,3); myArray.putScalar(0,2,4); myArray.putScalar(0,3,8); INDArray output = model.outputSingle(myArray); System.out.println(output); 

рдХрдВрд╕реЛрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдЖрдпрд╛рддрд┐рдд рдореЙрдбрд▓


рдореВрд▓ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╡рдЬрди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИред рдХрд╛рд░реНрдиреЗрд╕ рдФрд░ рдЬрд╛рд╡рд╛ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ рджреЛрдиреЛрдВ рдЗрдВрдлреНрд░реЗрдВрд╕ рдореЛрдб рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реИрдВред

рдкрд╛рдпрдерди рдореЙрдбрд▓:

рдЫрд╡рд┐ рдКрдВрдЪрд╛рдИ

рдЬрд╛рд╡рд╛ рдореЙрдбрд▓:

рдЫрд╡рд┐ рдКрдВрдЪрд╛рдИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рд╣рдо рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВрдЧреЗ рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

1) рдкреИрдЪ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдкрд░рдд рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрд░рддреЛрдВ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ [ 16 ] рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рдореБрджреНрджрд╛ рдЦреБрд▓рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░рдд рдХреЛ рдореЙрдбрд▓ (рд╕рдВрдкрд░реНрдХ рдкрд░рдд рдХреЗ рдмрд╛рдж) рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

 Exception in thread "main" java.lang.IllegalStateException: Invalid input type: Batch norm layer expected input of type CNN, CNN Flat or FF, got InputTypeRecurrent(160) for layer index -1, layer name = batch_normalization_1 

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореЙрдбрд▓ рдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП рдЬрдм рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреА рдкрд░рдд рдХреЛ conv1d рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рдкрд░рдд рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

2) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рдкрд░рдд рдХреЗ рдмрд╛рдж, рдлреНрд▓реИрдЯрди рдкрд░рдд рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред Stackoverflow [ 17 ] рдкрд░ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк DL4J рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореБрдарднреЗрдбрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкрд░рд┐рдЪрд╛рд▓рди рд╕рдордп рдпрд╣рд╛рдБ рд╣реИ [ рез the]ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ DL4J рдореЗрдВ рджрд░реНрдж рд░рд╣рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХреЗрд░рд╕-рдореЙрдбрд▓ рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реА рд╕рдВрднрд╡ рд╣реИ (рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЬреНрдЮрд╛рди рд╣реИ)ред

рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рддреЗрдВ, рдореЙрдбрд▓ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рджрд░реНрдж рд░рд╣рд┐рдд рд╣реЛрдЧрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ DL4J рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рдХрд╕рд┐рдд рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреА рд╕рдорд░реНрдерди, рд╕рдВрдмрдВрдзрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдмрд▓реНрдХрд┐ рдирдо рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, рдирдП рдкреНрд░рд╢реНрди рдЙрдарддреЗ рд╣реИрдВ - рд▓реИрдореНрдмреНрдбрд╛ рдкрд░рддреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЕрд░реНрде, рдЖрджрд┐ред

рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдкрд░рддреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреА рдЧрддрд┐, рдкрд░рдд рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, DL4J рдиреЗ рдХреГрддреНрд░рд┐рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖-рдЕрдВрдд рдЪреМрдЦрдЯреЗ рдХреЗ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЛрдЧ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд╛рди рдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВ рдФрд░ рдЗрд╕ рджрд┐рд╢рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╕рдВрджрд░реНрдн

  1. рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ 5 рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ
  2. рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд╛рд╡рд░ рд╕реНрдХреЛрд░ 2018
  3. рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рддреБрд▓рдирд╛
  4. рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╢реАрд░реНрд╖ 9 рдлреНрд░реЗрдорд╡рд░реНрдХ
  5. DeepLearning4jред рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓
  6. DeepLearning4jред рдХреЗрд░рд╕ рдореЙрдбрд▓ рдЖрдпрд╛рддред рд╕рдорд░реНрдерд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБред
  7. Deeplearning4jред рддреНрд╡рд░рд┐рдд рдкреНрд░рд╛рд░рдВрдн
  8. рд╡реНрдпрд╛рдЦреНрдпрд╛рди 0: DeepLearning4j рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдирд╛
  9. Deeplearing4j: рдХреЗрд░рд╕ рдореЙрдбрд▓ рдЖрдпрд╛рдд
  10. рд╡реНрдпрд╛рдЦреНрдпрд╛рди 7 | рдХреЗрд░рд╕ рдореЙрдбрд▓ рдЖрдпрд╛рдд
  11. рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП TensorFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  12. рдХреЗрд░рд╕ рд▓реЗрдпрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
  13. DeepLearning4j: рдХреНрд▓рд╛рд╕ рдХреНрд▓реЗрдпрд░рд▓реЗрдпрд░
  14. DeepLearning4j: SameDiffLambdaLayer.java
  15. DeepLearning4j: KerasLambdaTest.java
  16. DeepLearning4j: RecurrentInputType рдХреЗ рд╕рд╛рде рдмреИрдЪрдиреЙрд░реНрдо
  17. StackOverFlow: deeplearning4j (https://deeplearning4j.org/) рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдЦреЛрд▓рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛
  18. GitHub: рдкреНрд░рд╢реНрди рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб
  19. рд╕реНрдХрд╛рдИрдорд╛рдЗрдВрдб: рдПрдЖрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рддреБрд▓рдирд╛

Source: https://habr.com/ru/post/hi475338/


All Articles