Tensorflow: рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдирд╡ре░ 2015  ┬╖  112рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tensorflow/tensorflow

рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ред рдкреНрд░рд╛рд░рдВрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА/рд╕реБрдЭрд╛рд╡ рд╣реИ - рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрджреНрдпрддрди: рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ / javacpp рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣рд╛ (@saudet рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдмрд╛рддреЗрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП TensorFlow рдореЙрдбрд▓ рдкрд░ рдЕрдорд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ред

https://medium.com/google-cloud/how-to-invoke-a-trained-tensorflow-model-from-java-programs-27ed5f4f502d#.tx8nyds5v

рд╕рднреА 112 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЪреНрдЫрд╛!

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ https://github.com/tensorflow/tensorflow/issues/3 рд╕реЗ рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:


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

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

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ
рд╣рдо рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП TensorFlow рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред @ravwojdyla рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рд╕рд╣рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдирдорд╕реНрддреЗ,
рдореИрдВ рдореБрдЦреНрдп рд╕реА ++ рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рд░реИрдк рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдк рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдкрд░ рдЕрдм рддрдХ рдореЗрд░реА рдкреНрд░рдЧрддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ; рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ #include "tensorflow/core/lib/core/error_codes.pb.h" рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ рдФрд░ рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рднреАрддрд░ рдХрд╣реАрдВ рднреА рдЗрдЪреНрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдХреИрдл рдФрд░ рдУрдкрдирд╕реАрд╡реА рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡реИрдХрдкреАрдкреА рдкреНрд░реАрд╕реЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИред https://github.com/bytedeco/javacpp-presets/issues/111 рднреА

@рдЧрд┐рд░рд╡рд┐рдВрдЧ рдЗрдирд┐рд╢рд┐рдпрд▓ https://github.com/bytedeco/javacpp-presets/commit/374e1d5ea3cb4db36144aeec2cac33d32e1a7489 рдкрд░

/рд╕реАрд╕реА @рд╕реМрдбреЗрдЯ

@pslam - рдореИрдВ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдорджрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛!

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ JavaCPP рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИрдВ: https://github.com/bytedeco/javacpp-presets/tree/master/tensorflowред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ SWIG рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JavaCPP рдирд╣реАрдВред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред (рд╕реАрд╕реА @bhack рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!)

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ @рд╕реМрдбреЗрдЯ! рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдПрдХ SWIG рд░реИрдк рд╕рдорд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореЗрд░рд╛ SWIG рд░реИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЬрд╛рд╡рд╛рд╕реАрдкреАрдкреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рдп @kylevedder , рдХреНрдпрд╛ рдЖрдкрдиреЗ error_codes.pb.h рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?
[рд╕рдВрдкрд╛рджрд┐рдд]
рд╕рднреА .pb.h рдлрд╝рд╛рдЗрд▓реЗрдВ .proto . рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ

@tngan рд╣рд╛рдБ, рдореИрдВрдиреЗ рднреА рдпрд╣реА рдЦреЛрдЬрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ .proto рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП ProtoBuff3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ Ubuntu 14.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ ProtoBuff3 рдореЗрд░реЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд░реЛрдд рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ 3.0.0 рдмреАрдЯрд╛ рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдорд┐рд▓рд╛ред

рд╡рд░реНрддрдорд╛рди рд░реЛрдбрдмреНрд▓реЙрдХ рдЬрд┐рд╕реЗ рдореИрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рдХреЛ рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдЯреНрд░реА рдкрд░ рдХреИрд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ .proto рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .h рдФрд░ .cc рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП; рдкреНрд░рддреНрдпреЗрдХ рдлреЛрд▓реНрдбрд░ рдХреЛ рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдиреНрдп рдкрд░ рдЕрд╕рдВрддреБрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЧрдИ .proto рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред

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

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

рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореБрдЭреЗ рдмрд┐рд▓реНрдб рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

@davidzchen рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд┐рд╕реА рднреА рдФрд░ рд╕рднреА рдорджрдж рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рддрдХ рдХреНрдпрд╛ рд╣реИ:

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА Bazel рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ .whl рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рддрдм pip рдХреЛ рд╕реМрдВрдк рджрд┐рдпрд╛ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рдореИрдВ рдкрд╣рд▓рд╛ TensorFlow рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдлреЛрд░реНрдХрдб рднрдВрдбрд╛рд░ рдореЗрдВ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рд░реИрдкрд░ рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХреА рд╣реИрдВред рд╡реЗ core/javaWrapper рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВред [[рд▓рд┐рдВрдХ] (https://github.com/kylevedder/tensorflow/tree/master/tensorflow/core/javaWrapper)]

рдореИрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

рдЖрдЦрд┐рд░рдХрд╛рд░, рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп .so рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ .so рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП g++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕рдВрдХрд▓рди рд╕реЗ рдкрд╣рд▓реЗ .proto рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╣рд▓реЗ .h s рдФрд░ .cc s рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣реА рдореИрдВ protoc рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

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

рдЕрдВрдд рдореЗрдВ, рд╕реБрдзрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдзрдиреНрдпрд╡рд╛рдж!

@kylevedder рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА JavaCPP рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ .so рдмрд┐рд▓реНрдб рд╣реИ: https://github.com/bytedeco/javacpp-presets/tree/master/tensorflowред Bazel рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИред рдмрд╕ рдЗрд╕ рддрд░рд╣ рдПрдХ рдкреИрдЪ рд▓рдЧрд╛рдПрдВ:

diff -ruN tensorflow/tensorflow/cc/BUILD tensorflow-patch/tensorflow/cc/BUILD
--- tensorflow/tensorflow/cc/BUILD  2015-11-22 00:00:02.441829192 +0900
+++ tensorflow-patch/tensorflow/cc/BUILD    2015-11-14 11:15:12.689330351 +0900
@@ -75,6 +75,17 @@
     ],
 )

+cc_binary(
+    name = "libtensorflow.so",
+    copts = tf_copts(),
+    linkshared = 1,
+    deps = [
+        ":cc_ops",
+        "//tensorflow/core:kernels",
+        "//tensorflow/core:tensorflow",
+    ],
+)
+
 filegroup(
     name = "all_files",
     srcs = glob(

рдФрд░ рдЗрд╕ рддрд░рд╣ Bazel рдЪрд▓рд╛рдПрдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

bazel build -c opt //tensorflow/cc:libtensorflow.so

AFAIK, рдпрд╣ рд╕реА ++ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдмрд╣реБрдд рдХреБрдЫ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@saudet рд╡рд╣рд╛рдБ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИ cc_binary рдирд┐рдпрдо рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг cc_library ? рдЖрдкрдХреЗ рдкрд╛рд╕ cc_library рдирд╛рдо рдХрд╛ рдирд┐рдпрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ tensorflow рдФрд░ рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдп libtensorflow.so рдирд╛рдордХ рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред

@kylevedder рдпрджрд┐ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп .so рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рддреЛ @saudet рдиреЗ рдЬреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ TensorFlow рдкреНрд░реЛрдЯреЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ java_* Bazel рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдпреЛрдВ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ proto_library рд▓рдХреНрд╖реНрдп рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ .proto рд╕реЗ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

рдореВрд▓ proto_library рдирд┐рдпрдореЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ (рджреЗрдЦреЗрдВ bazelbuild/bazel#52), рд▓реЗрдХрд┐рди рдЗрд╕ рдмреАрдЪ, TensorFlow cc_proto_library рдФрд░ py_proto_library рдкреНрд░реЛрдЯреЛрдмрдл рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП , рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ genproto рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП proto_library рд▓рд┐рдП рд╕рдордпрд░реЗрдЦрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдмрдл рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдХреЛ genproto рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рдЕрдВрд╢:

  • рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП java_wrapper рдмрдЬрд╛рдп javaWrapper
  • рд╢рд╛рдпрдж рдЬрд╛рд╡рд╛ рд░реИрдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ //tensorflow/java/wrapper рдмрдЬрд╛рдп //tensorflow/core/java_wrapper ?
  • рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ .swig рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдзрд┐рдХ рдЖрджрд░реНрд╢ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВрдЧреЗред рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╝реЗрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рдмрд┐рд▓реНрдб рдирд┐рдпрдо рдЬреЛрдбрд╝рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

@davidzchen рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВред рдореИрдВ Bazel рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ linkshared=1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рддреЛ рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рджреВрдВрдЧрд╛ред

@ рд╕реМрдбреЗрдЯ рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдмрд╛рдЬрд╝реЗрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред :) рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдпрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ рддреЛ рдмрдЧ рдЦреЛрд▓реЗрдВред

@saudet Bazel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ .so рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

@davidzchen cc_library рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмрд╛рдЬрд╝рд┐рд▓ рд░реИрдкрд░ рдмрд┐рд▓реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рддрджрдиреБрд╕рд╛рд░ @saudet рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред рд╕рд╛рде рд╣реА, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ .so рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛; рдЬрдмрдХрд┐ рдореЗрд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдореВрд▓ рд╕реНрд░реЛрдд рд╕реЗ .so рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИ, рдореИрдВ .cxx рдлрд╝рд╛рдЗрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ .so рдЕрдВрджрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬреЗрдПрдирдЖрдИ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ рд╕рдХреЗ рдХреЙрд▓ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдПрдХ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ SWIG рдЙрддреНрдкрдиреНрди .cxx рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛; рдпрд╣ JNI.h , $JAVA_HOME/include/ рдореЗрдВ рд╕реНрдерд┐рдд рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╛рд╣рд░реА рд╢рд╛рдорд┐рд▓ рдкрде рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдЬрд╝рд▓ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

@davidzchen рд╣рдо, рдирд╣реАрдВ, cc_library рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдмрд╛рдЬрд╝рд▓ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП -shared рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ: http://bazel.io/docs/be/c-cpp.htmlред

@saudet рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЛ -shared рд╕реНрд╡рдпрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред cc_library рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ .so рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЧрд░ рд╣реИ?

@kylevedder рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ jdk.WORKSPACE рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд jdk.BUILD ) рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рд╕реНрдерд╛рдиреАрдп JDK рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ Bazel рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред

рдмреЗрдЬрд╝рд▓ рд╕реНрд╡рдпрдВ рдЬреЗрдПрдирдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд╛рдиреАрдп JDK рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ src/main/native/BUILD )ред рдЗрд╕ BUILD рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, JNI рд╣реЗрдбрд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ genrule s рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ cc_library рд▓рдХреНрд╖реНрдп рд╣реИ рдЬреЛ рд╣реЗрдбрд░ рдкрд░ рдирд┐рд░реНрднрд░ JNI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ includes = ["."] рддрд╛рдХрд┐ C++ рдХреЛрдб рдореЗрдВ #include <jni.h> рд╕рд╛рде JNI рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХреЗред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмрд╛рд╣рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдВрддреНрд░ рдореЗрдВ рдХрдИ рд╕реБрдзрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ @local-jdk рдирд╛рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ TensorFlow рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп Bazel рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдмреАрдЪ JNI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ .

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

  1. jni.h рдФрд░ jni_md.h , рдЬреЛ рд╡рд░реНрддрдорд╛рди рдкреИрдХреЗрдЬ рдореЗрдВ genrule s рджреНрд╡рд╛рд░рд╛ srcs рдХреЙрдкреА рдХрд┐рдП рдЧрдП рд╣реИрдВ
  2. //tensorflow/core рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдЖрдк рд╣реЗрдбрд░ рдХреЛ tensorflow/core/public рдЕрдВрддрд░реНрдЧрдд рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХреЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐, рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдпрд╛ рдХреЛрдИ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдмрд╛рдЬрд╝реЗрд▓ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рдг рд▓рдХреНрд╖реНрдп рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
diff --git a/tensorflow/core/java/wrapper/BUILD b/tensorflow/core/java/wrapper/BUILD
index 72b4076..04a3394 100644
--- a/tensorflow/core/java/wrapper/BUILD
+++ b/tensorflow/core/java/wrapper/BUILD
@@ -7,10 +7,30 @@ exports_files(["LICENSE"])
 load("/tensorflow/tensorflow", "tf_copts")
 load("/tensorflow/tensorflow", "tf_gen_op_wrappers_cc")

+genrule(
+    name = "copy_link_jni_md_header",
+    srcs = ["//external:jni_md_header-linux"],
+    outs = ["jni_md.h"],
+    cmd = "cp -f $< $@",
+)
+
+genrule(
+    name = "copy_link_jni_header",
+    srcs = ["//external:jni_header"],
+    outs = ["jni.h"],
+    cmd = "cp -f $< $@",
+)
+
 cc_library(
     name = "java_wrapper",
-    srcs = glob(["*.cc","*.cxx","*.h"]),
-    copts = ["-I$$JAVA_HOME/include/", "-I$$JAVA_HOME/include/linux/"],
+    srcs = glob(["*.cc", "*.cxx", "*.h"]) + [
+        ":jni.h",
+        ":jni_md.h",
+    ],
+    includes = ["."],
+    deps = [
+        "//tensorflow/core",
+    ],
     visibility = ["//visibility:public"],
 )

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

diff --git a/tensorflow/core/java/wrapper/tensor_c_api.i b/tensorflow/core/java/wrapper/tensor_c_api.i
index d08b571..9ab1fa1 100644
--- a/tensorflow/core/java/wrapper/tensor_c_api.i
+++ b/tensorflow/core/java/wrapper/tensor_c_api.i
@@ -1,8 +1,8 @@
 %module tensor_c_api_module
 %{
-#include "../../public/tensor_c_api.h"
+#include "tensorflow/core/public/tensor_c_api.h"
 %}
-%include "../../public/tensor_c_api.h"
+%include "tensorflow/core/public/tensor_c_api.h"
 %include "stddef.h"

рдПрдХ рдмрд╛рд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрдирдЖрдИ рдмрд┐рд▓реНрдб рдЕрдк рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ copy_link_jni_md_header genrule рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рд╣реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ JNI рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  1. рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП cpu config_setting s рд╕реЗрдЯ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, tensorflow рдореЗрдВ config_setting рд▓рд┐рдП --cpu=darwin рдореЗрдВ tensorflow/python/BUILD ред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ //tensorflow/core рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдо config_setting s рдХреЗ рд╕рдорд╛рди рд╕реЗрдЯ рдХреЛ Bazel рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ src/BUILD )ред
  2. copy_link_jni_md_header рд╕рд╣реА JNI рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ select() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдХрд┐ Bazel рдХреЗ рд╕рдорд╛рди рд╣реИред рд╣рдорд╛рд░рд╛ genrule рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
genrule(
    name = "copy_link_jni_md_header",
    srcs = select({
        "//tensorflow/core:darwin": ["//external:jni_md_header-darwin"],
        "//tensorflow/core:darwin_x86_64": ["//external:jni_md_header-darwin"],
        "//tensorflow/core:freebsd": ["//external:jni_md_header-freebsd"],
        "//conditions:default": ["//external:jni_md_header-linux"],
    }),
    outs = ["jni_md.h"],
    cmd = "cp -f $< $@",
)

рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА. рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рдХрд╛рдо рдХрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

@davidzchen cc_library .a рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ .so рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВред рдореИрдВ 0.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ TensorFlow рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рд╢рд╛рдпрдж рдпрд╣ 0.1.1 рдореЗрдВ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред

@davidzchen рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рд╡рд╛ рд░реИрдкрд░ BUILD рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде-рд╕рд╛рде SWIG .i рдлрд╝рд╛рдЗрд▓ рджреЛрдиреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВрдиреЗ рд░реИрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ core/java/wrapper рд╕реЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рд▓рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ jni_md.h рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП genrule рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп libtensorflow.so рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ libtensorflow.so рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ; рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреВрд░реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ "libtensorflow" рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЗрд╕реЗ рдЕрд▓рдЧ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ @saudet .so рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП cc_library рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдЖрдк рд╕рднреА рдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛ред рдПрдХ .so рдЬрд┐рд╕рдореЗрдВ рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, @saudet рдиреЗ cc_binary рд╕рд╛рде linkshared = 1 рдФрд░ name = "libtensorflow.so" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рд╕рд╣реА рдерд╛ред cc_binary.linkshared рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ :

рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдПрдБред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдирд┐рдпрдо рдореЗрдВ linkshared=1 рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрдВрдж рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлреВ рдХреЗ рдХреБрдЫ рд╕рдордЭрджрд╛рд░ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмрд╛рдЗрдирд░реА libfoo.so (рдпрд╛ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдЬреЛ рднреА рд╣реЛ) рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛ред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .so рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд cc_library рд▓рдХреНрд╖реНрдпреЛрдВ рдФрд░ .so рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд cc_binary рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ cc_library рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ srcs рдореЗрдВ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА srcs cc_library рд▓рдХреНрд╖реНрдп рдмрдирд╛рдирд╛ рдФрд░ рдХреЗрд╡рд▓ deps , рдЬреИрд╕реЗ рдХрд┐ //tensorflow/core , рдХрд┐рд╕реА рднреА рдХрд▓рд╛рдХреГрддрд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, cc_binary рд▓рдХреНрд╖реНрдп рд╕рднреА рд╕рдВрдХреНрд░рдордгреАрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗред

рдЗрд╕ рдЧрдбрд╝рдмрдбрд╝реА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдорд╛рдлрд╝ рдХрд░реЗрдВред рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ .so s рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Tensorflow рдФрд░ рдЙрд╕рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо TensorFlow рдХреЛ node.js рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рд╕рдВрдкреВрд░реНрдг рд░реЗрдкреЛ рд╕реЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЧреВ рдХреА рд╣реИ:
https://github.com/node-tensorflow/node-tensorflow/blob/1.0.0/tools/install.sh#L233 -L282

@davidzchen .so рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рддрджрдиреБрд╕рд╛рд░ рдЕрдкрдирд╛ рд╕реЗрдЯрдЕрдк рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ _extremely_ рдореВрд▓ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд╕рд╛рде tensorflow/core/java/wrapper/example рд╣реИ рдХрд┐ рдЬреЗрдПрдирдЖрдИ рдлрд╝рдВрдХреНрд╢рди .so рдХрд╛рдо рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ createWrapper.sh рдХреЛ compileAndRun.sh рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЕрдВрдд рдореЗрдВ, рдореИрдВ @davidzchen рдФрд░ @saudet рдХреЛ рдЙрдирдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рдореИрдВ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛ред

рдЕрдЪреНрдЫрд╛! рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @kylevedder!

рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреА createWrapper.sh рдФрд░ compileAndRun.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ Bazel рдмрд┐рд▓реНрдб рдореЗрдВ 1) рд╕реНрдХрд╛рдИрд▓рд╛рд░реНрдХ SWIG рдирд┐рдпрдо рдмрдирд╛рдХрд░ рдФрд░ 2) рдЬрд╛рд╡рд╛ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Bazel рдХреЗ рдЬрд╛рд╡рд╛ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@davidzchen рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! рдореИрдВ SWIG рд░реИрдкрд░ рдФрд░ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ JavaCPP рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд╕реЗрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рд╣реИ рдФрд░ example_trainer.cc рдирдореВрдирд╛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИ:
https://github.com/bytedeco/javacpp-presets/tree/master/tensorflow
SWIG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рди рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рд▓рд┐рдВрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ: http://bytedeco.org/javacpp-presets/tensorflow/apidocs/

@verdiyanto рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рд╕реАрдЖрдИ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИред рдЖрдирдВрдж рд▓реЗрдирд╛!

@saudet JavaCPP рдкреНрд░реАрд╕реЗрдЯ рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо!

рдореЗрд░реЗ рдХрд╛рдо рдкрд░ рдПрдХ рдЕрдкрдбреЗрдЯ: рдореИрдВрдиреЗ SWIG рд░реИрдкрд░ рдкрд░ рдХреБрдЫ рдФрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдПрдХ рдЪреМрд░рд╛рд╣реЗ рдкрд░ рд╣реВрдБ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред

рдореИрдВ SWIG рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдореБрдЦ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ SWIG рдореВрд▓ рдмрд╛рддреЗрдВ рдФрд░ SWIG рдФрд░ Java рдкрд░ SWIG рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рд╛, рдЬреЛ SWIG рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ SWIG рдЬрд╛рд╡рд╛ рд░реИрдкрд░ рдХреЗ рд╕рд╛рде C/C++ рдХреЛ рдХреИрд╕реЗ рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ SWIG C/C++ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ SWIG рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди SWIGTYPE_p_void рдЬреИрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреАрдУрдЬреЗрдУ рдХреЛ рдЗрди рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, tensor_c_api.h , рд╕реА рд╡рд┐рдзрд┐ TF_CreateTensor() рдПрдХ void* рд▓реЗрддреА рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ size рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ред рдпрд╣ рд╕реА/рд╕реА ++ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдХрд╡рд╛рд╕ рд╣реИред SWIG рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐ TF_CreateTensor() SWIGTYPE_p_void рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ size рдХреЗ рд╕рд╛рде рд▓реЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди POJO рдЬреИрд╕реЗ String рдХреЛ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред SWIGTYPE_p_void рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд рд▓рд┐рдЦрд╛рд╡рдЯ рдХреЗ рдмрд┐рдирд╛ред

рдФрд░ рдпрд╣ рд╡рд╣ рдЪреМрд░рд╛рд╣рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЭреВрда рдмреЛрд▓рддрд╛ рд╣реВрдВ: рдореИрдВ рдпрд╛ рддреЛ рд╕реА/рд╕реА ++ рд░реВрдкрд╛рдВрддрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЯрди рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдЬреЛ TF_DataType рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ void* рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ SWIG рдЯрд╛рдЗрдкрдореИрдк рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рддреЛ, рд╕рд╡рд╛рд▓ рд╣реИ, рд╕реА/рд╕реА++ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдп рдпрд╛ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рдЯрд╛рдЗрдкрдореИрдкреНрд╕?

@kylevedder рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЖрдк рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ JavaCPP рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ред :)

рдореИрдВ @saudet рдХреЗ JavaCPP рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА, рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЗрд╕реЗ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ:

a) рд╕рд░рд▓реАрдХрд░рдг/рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкрд░рдд рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ

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

рдореИрдВрдиреЗ JavaCPP рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП jvm- рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдмрдлрд╝реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИ, рдФрд░ рд╕рд╛рде рд╣реА рдЕрдЪреНрдЫрд╛ .toString рдкреНрд░рд╛рд░реВрдк рдЬреЛ рдорд╛рдирд╡-рдкрдардиреАрдп рдкреНрд░реЛрдЯреЛрдмрдл рджрд┐рдЦрд╛рддрд╛ рд╣реИред

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

рдмреА) рднрд╡рди рдФрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реБрдзрд╛рд░

рдореИрдВ рдореВрд▓ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ, рдпрд╛ рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВред рдорд╛рд╡реЗрди-рдЖрдХрд╛рд░ рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛; рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рд╡реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЯреЛрдмрдл рд╡рд░реНрдЧ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╢рд░реНрдордирд╛рдХ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

рдЧ) рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреНрд░рд╛рдл рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЕрднреА рдореЗрд░реА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреБрдЫ рдмреЛрдЭрд┐рд▓ рд╣реИ: рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП JavaCPP рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕реЗ рдореЗрд░реЗ JVM рдкреНрд░реЛрдЯреЛрдмрдлрд╝реНрд╕ рдореЗрдВ рдореИрд╢ рдХрд░реЗрдВ рдФрд░ рдорд╛рдирд╡-рдкрдардиреАрдп рд░реВрдк рджреЗрдЦреЗрдВ, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рд╕рдорд╛рди рд░реВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред

TensorFlow рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрдВрдЯрд░рдСрдк рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХрд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕реЗрдЯ рд╣реИред

рд╡реИрд╕реЗ рднреА рд╕рднреА рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЛ!

@kovasb рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬрд╛рд╡рд╛, рд╕реНрдХрд╛рд▓рд╛, рдХреНрд▓реЛрдЬрд░, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЯреЛрдмрдл рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕реА ++ рдПрдкреАрдЖрдИ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╣реИрдВ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдХреЛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЯреЛрдмрдл рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬреЗрдВ:
https://github.com/bytedeco/javacpp-presets/tree/master/tensorflow/src/main/java/org/bytedeco/javacpp/helper
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣реА рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореЗрд╡реЗрди рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдореЗрдВ рдкреИрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдмрд╛рдЬреЗрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@kovasb рдПрдХ

рдзрдиреНрдпрд╡рд╛рдж!

рддреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЛрдЧ рднреА рдЬрд╛рдЧрд░реВрдХ рд╣реИрдВ, https://github.com/tensorflow/tensorflow/issues/3 рдореЗрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднреЗрджрднрд╛рд╡ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрдм рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рддрдХ рдЖрдк рдкрд╛рдЗрдерди рдПрдкреАрдЖрдИ рд╕реЗ рдЯреАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╢реЛрд╕реНрдЯреЙрдкрд░ рд▓рдВрдмрд┐рдд рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реА ++ рдореЗрдВ рдкреЛрд░реНрдЯ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

рдореИрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдХрд╛рдлреА рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╕реА ++ lib рдХреЗ рд╕рд╛рде рдкрд╛рдЗрдерди рд╕рд╣рд╛рдпрдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рд┐рд░реНрдл рдЬреЗрдкреА рдпрд╛ рдЕрдиреНрдп рдкреБрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣реИрдВ?) рдЬреЗрдиреА рднреА рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреА рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдЗрдордЯрд╛рдЗрдо рд╕реЗ рдХрд╛рдлреА рджреВрд░ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдЕрдзрд┐рдХ рдЧрддрд┐/рд╕рдореБрджрд╛рдп рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)

рдпрджрд┐ JyNi рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ + рдЬреНрдпреЛрдерди JVM рдХреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рдмрдврд╝рд┐рдпрд╛ рдХрд╣рд╛рдиреА рд░реА-рдкрд╛рдпрдерди рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдСрдк рджреЗрдЧрд╛ред рдХреЛрдИ рд╕рдкрдирд╛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП +1!

рдЕрдЧрд░ рд╣рдо рдЬрд╛рд╡рд╛рд╕реАрдкреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рдЕрднреА рднреА рдЬрд░реВрд░реА рд╣реИ? рдХреНрдпрд╛ рд╣рдо SWIG рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ?

@maxiwu рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JavaCPP SWIG рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реВрдВ :)

@kovasb рдореБрдЭреЗ

@sorenmacbeth рдореБрдЭреЗ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдПрдХ рдкреВрд░реНрдг Javacpp рдкреНрд░реАрд╕реЗрдЯ рд╣реИред рдХреНрдпрд╛ рдпрд╣ "рдЯреАрдо" рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ?

@saudet рдореИрдВ JavaCPP рд░реИрдкрд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рд╕реНрд░реЛрдд рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреАрд╡реНрд░ рджрд░ рдХреЗ рдХрд╛рд░рдг рд╡реЗ 0.6.0 рд░рд┐рд▓реАрдЬрд╝ рдпрд╛ рдЖрдЬ рдХреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВред рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдЯреАрдХ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХрдорд┐рдЯ/рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

@nikitakit рдореИрдВрдиреЗ рдЕрднреА рдпрд╣рд╛рдВ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/bytedeco/javacpp-presets/commit/43bdcdf03beaaddb4bd5badf5d4f79669e9e78dd

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреИрдл рдХреЗ рд╡рд┐рдкрд░реАрдд, TensorFlow рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ рдорд╣реАрдиреЗ рдПрдХ рд░рд┐рд▓реАрдЬ рдорд┐рд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛, рдЬреЛ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ (0.7.0?)

@martinwicke рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

рдЬрдм рдПрдХ рд╕реНрдерд┐рд░ рдЬрд╛рд╡рд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд╕реНрдХреИрд▓рд╛ рдПрдкреАрдЖрдИ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИред

/ рд╕реАрд╕реА @databricks

@kovasb рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЪреВрдХ рдЧрдпрд╛ред рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ TensorFlow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдЪреНрдЫреЗ рдСрдЯреЛ-рд╡рд┐рднреЗрджрди рдЬрд╛рджреВ рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рднреАрддрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, c ++ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ? рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЛ рдпрд╛ рддреЛ рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдЧрд╛? рдореИрдВ TensorFlow рдпрд╛ рдЕрдЬрдЧрд░ рдЧреЛрдВрдж рдХреЗ рдЖрдВрддрд░рд┐рдХ рднрд╛рдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@drdozer рдпрд╣ рдореЗрд░реА рд╕рдордЭ рд╣реИ, @girving рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдФрд░ рдлрд┐рд░ рд╕реНрд░реЛрдд рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд╛рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдПрдХ рдиреЙрдирд╕реНрдЯрд╛рд░реНрдЯрд░ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ #3 . рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ

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

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╣рдо рдЬреНрдпреЛрдерди рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдХреЛрдб рдХреЛ рдХрд┐рддрдиреА рджреВрд░ рддрдХ рдЪрд▓рд╛ рдкрд╛рдПрдВрдЧреЗ ...

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдПрдкреАрдЖрдИ рдкрд░рдд рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ рд╣реИрдВ рдХрд┐ рд╕реА ++ рдкрд░рдд рдПрдкреАрдЖрдИ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ JavaCpp рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛрдб рд╣реЛрдВрдЧреЗ рдФрд░ рдЬрдм рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ рддреЛ рдирд┐рд░рдВрддрд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛ред

рдЬреНрдпреЛрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЖрд╕рд╛рди @saudet рдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ ...

рдЗрд╕реЗ https://github.com/tensorflow/tensorflow/issues/476 рд╕реЗ @josh11b рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдЧрд░ рд╡рд╣ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдЬреНрдпреЛрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдЬреНрдпреЛрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╕реА ++ рдХреЛрдб рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдореМрдЬреВрдж рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рд╕реАрдзреЗ рдЬрд╛рд╡рд╛ рд░реВрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдпрд╛ рдкрд╛рдЗрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ

рдореИрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рдСрдЯреЛ-рдбрд┐рдлрд░реЗрдВрд╢рд┐рдПрд╢рди рдЬреИрд╕реА рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдореЗрд░реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдореБрдЭреЗ рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рд╣реИ, рдЗрд╕реЗ рдПрдХ .proto рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд░реИрдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрд▓рдирд╛ред рдЯреЗрд╕реНрдЯ-рдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕реЗрд╡рд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реА ++ рдФрд░ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

+1

@рд╕реМрдбреЗрдЯ
javacpp рдФрд░ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдкрд╛рдпрдерди рдЧреНрд░рд╛рдл рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рд╕рд╣реЗрдЬреА рдЧрдИ рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд▓рд╛рдЗрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ:

Tensor fn = рдирдпрд╛ Tensor (tensorflow.DT_STRING, рдирдпрд╛ TensorShape(1));
рдЪрд╛рд░рдмрдлрд░ рдмрдлрд░ = fn.createBuffer ();
рдмрдлрд░.рдкреБрдЯ ("рдореЙрдбрд▓рдлрд╛рдЗрд▓.рдЯреАрдПрдл");
рд╕рддреНрд░ред рднрд╛рдЧреЛ (...);

рд▓реЗрдХрд┐рди рдЪрд╛рд░рдмрдлрд░ рдиреНрдпреВрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ DT_STRING рдХреЛ DT_FLOAT рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдлреНрд▓реЛрдЯрдмрдлрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди DT_STRING рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

@nikitakit рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@рд▓рдХреНрд╖реНрдордгреЛрдХ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдХрд╣рд╛ рд╣реИ рдЙрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝реЗрдВред рдореИрдВ рдЬрд╛рд╡рд╛ рд╕реЗ рдмрд╛рд╣рд░реА рдмрдЪрддрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдХреЛрдб рдХрд╛ рд╡рд╣ рднрд╛рдЧ рдЬреЛ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдЧреНрд░рд╛рдлрд╝ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдпрд╣рд╛рдБ рд╣реИ: https://gist.github.com/nikitakit/d3ec270aee9d930267cec3efa844d5aa

рдпрд╣ рд╕реНрдХреИрд▓рд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛/рдЕрдиреНрдп рдЬреЗрд╡реАрдПрдо рднрд╛рд╖рд╛ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ jvm рдореЗрдВ рдЕрдЬрдЧрд░ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ? рдЬреНрдпреЛрдерди + JyNI рдХреЗ рд╕рд╛рде рдХрд╣реЛ? рдпрд╛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ?

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧреНрд░рд╛рдл рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди 1.0 рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдореИрдВ рдЬрд╛рд╡рд╛ рд╕реЗ рдЯреЗрдВрд╕рд░ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдПрдХ рдЕрдиреНрдп рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпреЛрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдЯреЗрдВрд╕рд░ рдлреНрд▓реЛ рд╕реАрдкреАрдереЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред cpython рдХреЛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореЗрд░рд╛ рдХреЛрдб рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬреНрдпреЛрдерди рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд/рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдиреАрдЪреЗ libtensorflow_cc.so рдХреЗ рд▓рд┐рдП javacpp рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ Google рдЯреАрдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЗрдкреЛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реА рд╣реЛрдЧреА? @vrv

рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдмреВрдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрдВрдзрди рд╢рд╛рдпрдж рдкрд╛рдпрдерди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрд╛рдВрдзрдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ :(

рдирд╣реАрдВ, рд╕реА-рдкрд╛рдпрдерди рд░реИрдкрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо javaccp рд░реИрдкрд░ рдХрд╣рддреЗ рд╣реИрдВред рддреЛ рдпрд╣ cpython рдЯреЗрдВрд╕рд░ рдкреНрд░рд╡рд╛рд╣ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди Jython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JVM рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдкрд╛рдпрдерди рддрд░реНрдХ рдХреЛ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред javacpp рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдиреБрдорд╛рди рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдореЙрдбрд▓ рдХреЛ рдПрдХ cpython рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрдирд╛рдпрд╛/рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдлрд┐рдЯ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдпрд╣ рдЕрднреА рднреА 100% рдЬрд╛рд╡рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рднрд╛рд╖рд╛ рдЕрдЬрдЧрд░ рдФрд░ рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдХреЗ рдмреАрдЪ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдордзреНрдп рдореИрджрд╛рди рд╣реИред

рдЕрджреНрдпрддрди: рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ / javacpp рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣рд╛ (@saudet рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдмрд╛рддреЗрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП TensorFlow рдореЙрдбрд▓ рдкрд░ рдЕрдорд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ред

https://medium.com/google-cloud/how-to-invoke-a-trained-tensorflow-model-from-java-programs-27ed5f4f502d#.tx8nyds5v

рдзрдиреНрдпрд╡рд╛рдж @lakshmanok рдФрд░ @saudet ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ javacpp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдзрд┐рдХрд╛рдВрд╢ TensorFlow APIs рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ/рд╕рд░реНрд╡рд┐рдВрдЧ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдкреАрдЖрдИ рд╕рд░рд▓ рд╣реИ рдФрд░ protobuf рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рдореЗрдВ TensorProto рдмрдирд╛рдиреЗ рдФрд░ gRPC рдХреЙрд▓ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред TensorFlow рдиреЗ Python рдФрд░ C++ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рдЖрдпрд╛рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдирд╣реАрдВред

рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ javacpp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?

рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА https://github.com/bytedeco/javacpp-presets/blob/master/tensorflow/src/main/java/org/bytedeco/javacpp/helper/tensorflow.java рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдЕрдЧрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рдХрдореА рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдЕрднреА рднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬреАрдердм рд░реЗрдкреЛ рд╣реИ? рдореИрдВ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реЗрдкреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдмрддрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЕрдХреНрдЯреВрдмрд░/рдирд╡рдВрдмрд░ рдореЗрдВ рдХрднреА-рдХрднреАред рд╣рдо C++ API рдореЗрдВ SWIGing рдХреЗ рдмрдЬрд╛рдп C API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, рдЖрдк рдЙрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ saudet рдиреЗ рдХрд┐рдпрд╛ рд╣реИред

рд╕реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдк рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗ? рд╣рдо рдПрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рд░реВрдмреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрд╡рд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
http://github.com/somaticio/tensorflow.rb

рдордВрдЧрд▓рд╡рд╛рд░, 13 рд╕рд┐рддрдВрдмрд░, 2016 рдХреЛ рд╢рд╛рдо 6:22 рдмрдЬреЗ, рдЬреЛрдирд╛рдерди рд╣рд╕реЗрдЙ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/tensorflow/tensorflow/issues/5#issuecomment -реирекремреорекрекрезрепреи,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAA5v3g86Z6D1rz-aTGdMyMWnQZhrZUYks5qpyIJgaJpZM4Getd8
.

рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рд╕рднреА рднрд╛рд╖рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ C API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рдбреЙрдХреНрдЯрд░ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдЖрдк рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/go

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдИ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ SWIG рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдЕрднреА рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИред

@jhseu рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕реА рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЙрди рд╕рднреА рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╛рдЗрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд╛рд╣, рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ред рдХрд╛рд╢ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рддрдп рд╣реЛ рдЬрд╛рддрд╛ред рд╡реИрд╕реЗ рднреА рдбреЙрдХреНрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдЬрд▓реНрджреА?

рдмреБрдзрд╡рд╛рд░, 14 рд╕рд┐рддрдВрдмрд░, 2016 рдХреЛ рд╢рд╛рдо 5:56 рдмрдЬреЗ, рд╕реИрдореБрдЕрд▓ рдСрдбрд┐рдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@jhseu https://github.com/jhseu рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕реА рдПрдкреАрдЖрдИ рд╣реЛрдЧрд╛
рдЙрди рд╕рднреА рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╛рдЗрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/tensorflow/tensorflow/issues/5#issuecomment -247167887,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAA5vwfBJoZC2s33_7E9Xy6-NYNUjHjnks5qqG2FgaJpZM4Getd8
.

@saudet рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЧрд╛рдпрдм рд╣реЛрдВрдЧреА (рдЬреИрд╕реЗ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░)ред
@jtoy рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред SWIG рдХреБрдЫ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗрдЧрд╛ред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗрд╡рд▓ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВред рдЖрдк рдЙрдирдХреЗ рдмрд┐рдирд╛ рд╕реА рдПрдкреАрдЖрдИ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h

рдзрдиреНрдпрд╡рд╛рдж @рд╕реМрдбреЗрдЯ ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢реБрджреНрдз рдкреНрд░реЛрдЯреЛрдмрдл рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде TensorProto рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рдкрд╛рдпрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ TensorFlow рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ рдЬреЛ gRPC Java рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

@ tobegit3hub рдЕрдЪреНрдЫрд╛, рдпрджрд┐ рдЖрдк C++ API рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ JavaCPP рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рд╣реЗрд▓реНрдкрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ! рдЗрд╕ рдЖрджрдореА рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА: https://github.com/bytedeco/javacpp-presets/issues/240

@girving рдХреНрдпрд╛ javacpp рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ?
рдореИрдВ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдЕрдЬрдЧрд░ рдХреА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬрд╛рд╡рд╛/рд╕реНрдХреИрд▓рд╛ рднрд╛рд╖рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ?
(рдПрд╕рдбрдмреНрд▓реНрдпреВрдЖрдИрдЬреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрдЬрд╛рдп)

рдореЗрд░реЗ рдкрд╛рд╕ JNR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЗрд╡рд▓ C API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЬрд╛рд╡рд╛/рд╕реНрдХреИрд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░реВрдВрдЧрд╛ рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред

@jdolson рдХреНрдпрд╛ рдЖрдк рдЬрд┐рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ TensorFlow рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдмрдбрд╝реА рдореБрджреНрджреЛрдВ рдореИрдВ @saudet рд╕реЗ javacpp рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЯреЗрдиреНрд╕рд░ рд╡рд╕реНрддреБрдУрдВ рдЬрд╛рд╡рд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдореЗрдВ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдирд┐рдкрдЯрдиреЗ рдПрдХ org.tensorflow.framework.TensorProto рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░ рд╕рдВрдХрд▓рдХ рдЬрдм рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд╛рд╡рд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди TensorFlow API рд░реИрдкрд░ рдореЗрдВ рдЖрдк рдПрдХ org.bytedeco.javacpp.tensorflow.TensorProto.TensorProto рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ javacpp рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди c рдХреЛрдб рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм C рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ ' t рд╡рд╣реА рдЖрдк рд▓рд┐рдкрдЯреЗ рд╣реБрдП TensorFlow API рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реАрдзреЗ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдЯреЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

@Intropy рд╣рд╛рдВ, рдореИрдВ рдЬрд╛рд╡рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ protoc рдХреЗ рд╕рд╛рде рд╕рднреА рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ *.proto рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдкреАрдЖрдИ рдореЗрдВ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

@jhseu рдХреНрдпрд╛ рд╕реА рдПрдкреАрдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрднреА рднреА рдирд╡рдВрдмрд░ рдХреЗ рднреАрддрд░ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреА рд░рд╛рд╣ рдкрд░ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ?

@eaplatanios : рд╕реА рдПрдкреАрдЖрдИ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕реНрдерд┐рд░ рд╣реИ (рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ 1.0 рддрдХ рд╣реЛрдЧрд╛) рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ (рдЕрднреА рднреА рдЧреНрд░рд╛рдл рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдврд╛рд▓ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЧрд╛рдпрдм рд╣реИ)ред рднрд╛рд╖рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ https://www.tensorflow.org/how_tos/language_bindings/index.html рдкрд░ рд╣реИред

рдЧреЛ рдПрдкреАрдЖрдИ рдХреЛ рд╕реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдореЗрд░реЗ рдкрд╛рд╕ JavaCPP рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВред

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

рджреВрд╕рд░рд╛, рдпрд╣ libc рдХреЗ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА TensorFlow рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд╡рд┐рд░реБрджреНрдз рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред

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

рд╕реНрд╡рд┐рдЧ рдХреЗ рд╕реА рдмреИрдХрдПрдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдФрд░ рд╕реНрд╡рд┐рдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреАрдПрдл рд╕реА рдПрдкреАрдЖрдИ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛: https://github.com/swig/swig/issues/800 рддрд╛рдХрд┐ рдЧреЛ, рд░реВрдмреА, рдЖрд░ рдЬреИрд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ рд╕реА рдПрдкреАрдЖрдИ рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реА рдПрдлрдПрдлрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореМрдЬреВрджрд╛ рд╕реА рдПрдкреАрдЖрдИ рд╣реИ:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h

(рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ TensorFlow рдХреЗ рд▓рд┐рдП рдЧреЛ, рдЬрд╛рд╡рд╛, рд░рд╕реНрдЯ рдЖрджрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

рдХреНрдпрд╛ рд╕реА рдПрдкреАрдЖрдИ рдХреЛ рдЬреЗрдПрдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@jhseu рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛, рд╕реА рдПрдкреАрдЖрдИ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реА ++ рдПрдкреАрдЖрдИ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

@ рдХреНрд╡рд╛рдВрдЯрдо 64 , рдпрд╣рд╛рдВ рдЯреЗрдиреНрд╕рдлреЛрд░реНрд▓реЛ рдХрд╛ рд╕реНрдХреИрд▓рд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реИ рдЬреЛ рдЬреЗрдПрдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ, рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java
рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреНрдпрд╛ рдерд╛?

@ рд╣рд╕рдкреБрддреНрд░ : рдХреНрдпрд╛ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕реЗ рдХрдИ рдХрдорд┐рдЯ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВ tensorflow/java , рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ 2b1cd28, d73a266 рдФрд░ рдмреАрдЪ рдореЗрдВ рдХрдИ рдЕрдиреНрдп)

HI @asimshankar , рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tensorflow/java рдХреНрдпрд╛ рд░рд╛рд╕реНрддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рдмрдВрдж рдирд╣реАрдВ рд╣реИред
Jython рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ JavaCPP рдмрдирд╛рдо SWIG рдмрдирд╛рдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реА рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬреЗрдПрдирдЖрдИ рдХреЗ рд╕рд╛рде tensorflow/java рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд╕рд╣реАред

рдЕрд░реЗ,

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

double[] matrix = {1.414, 2.718, 3.1415, 3.4, 56.7, 89.0};
long[] shape = {2, 3};

// add a method for each primitive type
org.tensorflow.Tensor tensor = org.tensorflow.Tensor.createDouble(matrix, shape);

рдЗрд╕рд╕реЗ int8, int16, uint8, uint16, uint32 рдЯреЗрдВрд╕рд░ рднреА рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреИрджрд╛ рд╣реЛрдЧреА, рдЬреЛ рдЕрдиреБрдХреВрд▓рддрд╛ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдпрд╣рд╛рдБ рдареАрдХ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдм рд▓реЗрдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЦреБрд╢реА рд╣реЛрдЧреАред

@hollinwilkins : рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреАрдЖрд░ # 6577 рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдкрдХреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлреИрдХреНрдЯреНрд░реА рд╡рд┐рдзрд┐ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде:

Tensor tensor = Tensor.create(shape, DoubleBuffer.wrap(matrix));

@asimshankar рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рдЬрд▓реНрджреА рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ: +1:

рдореИрдВ рдирдП рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдорд┐рд▓реА рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ:

  1. рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЛ рдЧреНрд░рд╛рдлрдбрд┐рдл рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдЧреНрд░рд╛рдлрдбрд┐рдл рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░ рдХреЗ рдХреНрд░рдордмрджреНрдз рдмрд╛рдЗрдирд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реАрдорд╛ рдкрд░ рдХреНрд░рдордмрджреНрдзрддрд╛/deserialization рдХрджрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рдмрд╛рдд рд╣реИред
  2. session.Runner.feed org.tensorflow.framework.TensorProto рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ org.tensorflow.framework.TensorProto рд╕реЗ org.tensorflow.Tensor рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. session.Runner.run рдЯреЗрдВрд╕рд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рдКрдкрд░ рдХреЗ рд╕рдорд╛рди, TensorProto рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ org.tensorflow.Tensor рдХреЛ TensorProto рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
  4. session.Runner.run рдирд┐рдЧрд▓ рд╕реНрдерд┐рддрд┐ред рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд╛рдпрдж рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рдХрд░ред

рд╕рд╛рде рд╣реА, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЪреВрдХ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдЯреЗрдВрд╕рд░ рдкреНрд░рдХрд╛рд░ рд░рди рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдореЗрд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдВрд╕рд░ dtype INT16 рдХрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдорд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреЛрдИ Tensor.shortValue рдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ Tensor.intValue рдПрдХ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ tensor_jni.cc рдореЗрдВ DEFINE_GET_SCALAR_METHOD рдкрдврд╝рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ рдЗрдВрдЯреНрд░реЙрдкреА : рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдХреБрдЫ рддреНрд╡рд░рд┐рдд рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

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

рддреЛ, рдЕрдкрдиреЗ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:

  1. рдКрдкрд░ рджреЗрдЦреЛред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ byte[] рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЪреИрдирд▓ рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдкрдврд╝рдирд╛)

  2. рдореБрджреНрджрд╛ рд▓реЗрдирд╛

  3. рдКрдкрд░ рджреЗрдЦреЛред

  4. Session.runner.run рдирд┐рдЧрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ( session_jni.cc:166 )ред рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмрдЧ рдлрд╛рдЗрд▓ рдХрд░реЗрдВред

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдЕрднреА рддрдХ рд╕рднреА рдкреНрд░рдХрд╛рд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рд╛рдкрддрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░/рдпрд╛ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬреЗрдВред рдпреЛрдЧрджрд╛рди рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :)

@asimshankar рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмрд╛рдЗрдЯ [] рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореЗрд░реЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдирдкреБрдЯрд╕реНрдЯреНрд░реАрдо рд╣реИ, рдЬреЛ рдмрд╛рдЗрдЯ [] рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░ рдПрдкреАрдЖрдИ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдмрд╛рдЗрдЯ [] рдХреЛ рдПрдкреАрдЖрдИ рдкрд░ рдПрдХ рдорд╕реНрд╕рд╛ рдорд╛рдирддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА deserialize рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (TF_GraphImportGraphDef рдореЗрдВ) рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрдк рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛ 3 рдХрд╛ рдЬреЛрдВрд╕ рдХреНрд░рдорд╛рдВрдХрди рднреА рд╣реИред

рдирд┐рдЧрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░, рдЖрдк рд╕рд╣реА рд╣реИрдВред рдореБрдЭреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рдж рдпрд╛рдж рдЖрдпрд╛ред

2 рдФрд░ 3 рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ org.tensorflow.Tensor рдХреЛ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рджреЗрдирд╛ рд╣реИ рдЬреЛ рдПрдХ TensorProto рдФрд░ рдХреБрдЫ toTensorProto() рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд▓реЛрдЧ рдмрд╕ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдПрдХ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рд▓рд╛рдЧрдд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЯреЗрдВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдкреНрд░реЛрдЯреЛрдмрдл рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЬреЗрдиреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЯреАрдПрдл_рдЯреЗрдиреНрд╕рд░ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХреА рддрд░рд╣ рджреЗрд╢реА рд╣реИрдВрдбрд▓ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЯреЗрдВрд╕рд░рдмрдлрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЖрдХрд╛рд░ рдХреЗ рд╢реВрдиреНрдп * рдХреА рддрд░рд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдЯреНрд░реИрдХ/рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@drpngx : рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ (рдмрдлрд░ рд╕реЗ рдЯреЗрдВрд╕рд░ рдкрдврд╝рдирд╛) рдореЗрдВ рдХреБрдЫ рдФрд░ рдмрджрд▓рд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдордиреЗ рдЧреЛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ/рдмрдЧ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реАред

рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!

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

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛/рдЯреНрд░реИрдХ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж!

@asimshankar рд╣рдо рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪреЗ (рдПрдордПрдХреНрд╕рдиреЗрдЯ/рдЯреАрдПрдл) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдИрдЯреАрдПрд▓/рдПрдкреАрдЖрдИ рд╕реНрдкрд╛рд░реНрдХ/рдЕрдХреНрдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ ... рдХреНрдпрд╛ рдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд_рд░рдирдЯрд╛рдЗрдо рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ рдиреЛрдбреНрд╕? рдкреАрдПрд╕ рдиреЛрдб рдХрдИ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ... javacpp рдкреНрд░реАрд╕реЗрдЯ рдкрд╣рд▓реЗ рдХрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реА рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реНрд╡рдпрдВ рд╡рд┐рддрд░рд┐рдд_рд░рдирдЯрд╛рдЗрдо рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ ...

@ debasish83 : рд╡рд┐рддрд░рд┐рдд рд░рдирдЯрд╛рдЗрдо рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдорд╛рдореВрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдЗрдерди рдПрдкреАрдЖрдИ рдореЗрдВ Estimator рдХреНрд▓рд╛рд╕ рдЬреИрд╕реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рдореВрд╣ (рдЪреЗрдХрдкреЙрдЗрдВрдЯрд┐рдВрдЧ, рд╕рд╛рд░рд╛рдВрд╢ рдмрдЪрдд рдЗрддреНрдпрд╛рджрд┐) рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред TensorBoard рддреБрдЪреНрдЫ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░реЗрдВ) рдЬреЛ рдЗрд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдереНрд░реЗрдб рдХреЛ рд╕рд┐рдВрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@asimshankar рдХреНрдпрд╛ рдиреЛрдбреНрд╕, рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреА рд╕реВрдЪреА рдЬреИрд╕реЗ рдЧреНрд░рд╛рдлрд╝рдбрд┐рдлрд╝ (рдбрд┐рд╕реНрдХ рдкрд░ рдЧреНрд░рд╛рдлрд╝ рдХреА .pb рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рд░реНрдорд┐рдд) рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж!

@asimshankar рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯреАрдПрдл рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЧреБрдо рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рд╕реБрдиреНрди рди рд╣реЛрдирд╛)? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк TensorBoard рдбреЗрдЯрд╛рд╡рд┐рдЬрд╝ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рдПрдХ рджреЗрд╢реА рдЬрд╛рд╡рд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреЗрд╡рд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк Estimator рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ)?

рдзрдиреНрдпрд╡рд╛рджред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдореИрдВ https://arxiv.org/pdf/1505.04597.pdf (рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реЗрд▓ рдЯреНрд░реИрдХрд┐рдВрдЧ рдФрд░ рдмрд╛рдпреЛрдореЗрдбрд┐рдХрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рдмреЗрддрд╣рд╛рд╢рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп) рдЬреИрд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ImageJ (рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдореБрдлреНрдд рдЫрд╡рд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реВрдЯ) рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрдиреНрд╣реЗрдВ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдореИрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП DL4J рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЯреАрдПрдл рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдлрд┐рдЯрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдареЛрд╕ рдпреЛрдЬрдирд╛ рд╣реИ?

@bergwerf : рдпрджрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред
рдЖрдк https://github.com/tensorflow/models/tree/master/samples/languages/java/training рдкрд░ рдПрдХ рдирдореВрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ

(рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдЧрд░реВрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди https://imagej.net/TensorFlow рднреА рджреЗрдЦреЗрдВ)

рдУрд╣ рдХрдорд╛рд▓! рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рддрдм рдкреБрд░рд╛рдиреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ;-)ред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрдврд╝ рд▓рд┐рдпрд╛ рд╣реИ
рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛
рдореЙрдбрд▓ред рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

рдмреБрдз, реирео рдорд╛рд░реНрдЪ, реирежрезрео, реиреи:режрез рдЕрд╕реАрдо рд╢рдВрдХрд░ рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@bergwerf https://github.com/bergwerf : рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИ
рд╕рдВрднрд╡рддрдГ, рдпрджрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред
рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдирдореВрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
https://github.com/tensorflow/models/tree/master/samples/languages/java/training

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/tensorflow/tensorflow/issues/5#issuecomment-377015867 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AEQJ1UD9-xACQAII5996ees_UFJ_NzL-ks5ti-wSgaJpZM4Getd8
.

@asimshankar рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ , рдореИрдВ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ https://github.com/loretoparisi/tensorflow-java

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ahmed-touati picture ahmed-touati  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

davidbernat picture davidbernat  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

NHDaly picture NHDaly  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nicholaslocascio picture nicholaslocascio  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jricheimer picture jricheimer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ