рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореБрдЭреЗ рджреЗрд╢реА C++
рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд Kesas
рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ Kesas
рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рддрд╛рдЬреНрдЬреБрдм рд╣реИ, рд╕рдорд╛рдзрд╛рди рдмрд┐рд▓реНрдХреБрд▓ рддреБрдЪреНрдЫ рдирд╣реАрдВ рдерд╛ред рдирддреАрдЬрддрди, рдПрдХ рдирд┐рдЬреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХреИрд╕рд╛ рд╣реИ - рд╕реНрд╡рдЪреНрдЫ рдХреНрд░реЙрд╕ рдкрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЖрдЬ рдХрд╛ рд▓рдШреБ рд▓реЗрдЦ рд╣реЛрдЧрд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИред рдЦреИрд░, рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╣рд░ рдХрд┐рд╕реА рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ ...
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рдиред
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ C++
рдПрдкреНрд▓рд┐рдХреЗрд╢рди (Unreal Engune 4) рдореЗрдВ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рджреБрд░реНрднрд╛рдЧреНрдп рд╣реИ: рдЖрдЬ рд╕реА + + рдореЗрдВ рдХреЗрд░рд╕ рдореЙрдбрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
C++
рдХрд╛ Python
рдХреЙрд▓ рд╡рд┐рдХрд▓реНрдк рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗрд░рд╕ рдореЙрдбрд▓ рдХреЛ рдЯреЗрдиреНрд╕рд░рдлреНрд▓реЛ рдореЙрдбрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рдФрд░ рдлрд┐рд░ рдХреНрд░реЙрд╕ рдХреЗ рд▓рд┐рдП рдЯреЗрдиреНрд╕реЛрдлреНрд▓реЛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдФрд░ рд╕реА ++ рдХреЛрдб рд╕реЗ рдЯреАрдПрдл рдПрдкреАрдЖрдИ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛ред
рдХрд╛рдпрд╛рдкрд▓рдЯ рдХреА рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдореБрд╢реНрдХрд┐рд▓реЗрдВ рднреА рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ , TensorFlow Bzzel рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдмреЗрдЬреЗрд▓ рдЦреБрдж рдПрдХ рд╕рдирдХреА рдЪреАрдЬ рд╣реИ рдФрд░ UE4 рдХреЗ рддрд╣рдд рдЗрдХрдЯреНрдард╛ рд╣реЛрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рджреВрд╕рд░реА рдмрд╛рдд , TF
рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдФрд░ рднрд╛рд░реА рдЪреАрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рд╣рд▓реНрдХрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЧрд┐рдердм рдХреЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдПрдХ рдЖрдзрд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рд╛ рдерд╛, рдЬрд┐рд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬрд╝рд░реВрд░рдд рдереАред рд▓реЗрдХрд┐рди, рдЙрдиреНрд╣реЛрдВрдиреЗ Python
рдФрд░ Keras
рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕реЗ рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛: Core Dump
рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде C ++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ ред рдпрд╣ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рдерд╛ ...
рд╣рдо рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ!
рд░реЙрдХ рдХреЛ рдореЛрдбрд╝рдирд╛, рдмреЛрддрд▓ рдлреЗрдВрдХрдирд╛ pivasom рдКрд░реНрдЬрд╛, рдореИрдВ рдХреЛрдб рдкрд░ рдмреИрда рдЧрдпрд╛ред TensorFlow рдХреЛрдб,
рдХреЛрдб рдкрд░ рдкрд╛рдП рдЧрдП рдХреЛрдб рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬреНрдЮрд╛рди (рдЗрд╕рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП ITMO) рдФрд░ рдореЗрд░реЗ рдХрд╛рдиреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╕рдВрдЧреАрдд рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рд░рд╛рдд рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрд╛ рдЧрдпрд╛ред
рдФрд░ рдЗрд╕рд▓рд┐рдП рдорд┐рд▓рддреЗ рд╣реИрдВ: Keras2cpp!
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкрд╣рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд╣реИред
рдЗрд╕ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рд┐рд░реНрдл Keras
рдореЙрдбрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ
, рдлрд┐рд░
, рдлрд┐рд░ float
рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ
ред
рдЕрдм рдЪрд▓реЛ рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ - C ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ 2 рдЗрдХрд╛рдЗрдпрд╛рдБ tensor
рдФрд░ model
ред
Tensor - рд╡рд╣ рдбреЗрдЯрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЯреИрдВрд╕рд░ рдХрд╛ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ 4 рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдЖрдпрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдХреЗ рдЖрдпрд╛рдо рдХреЛ std::vector<int> dims_;
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ std::vector<int> dims_;
рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдВрд╕рд░ рддрддреНрд╡ рдХрд╛ рд╡рдЬрди std::vector<int> data_;
ред рдЙрдкрд▓рдмреНрдз рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ, void Print()
рдФрд░ Tensor Select(int row)
рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╛рдХреА рд╕рдВрдЪрд╛рд▓рди рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рджрд╕рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рдд рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдореЙрдбрд▓ - рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкрд░рддреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдирд░реНрд╕ рдФрд░ рдПрдХ рд╡рдЬрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ virtual bool LoadModel(const std::string& filename);
рд▓рд┐рдП 2 рдХрд╛рд░реНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ virtual bool LoadModel(const std::string& filename);
рдФрд░ virtual bool Apply(Tensor* in, Tensor* out);
ред
рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╣реИред
python_model.py:
import numpy as np from keras import Sequential from keras.layers import Dense
cpp_mpdel.cc:
#include "keras_model.h" int main() {
рдпрд╣реА рд╕рдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рд┐рдп рд╕реА # рдФрд░ рдкрд╛рдпрдерди рдХреЛ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЖрдЧреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдКрдВрдЧрд╛ред
рдкреБрдирд╢реНрдЪ
рдореБрдЭреЗ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдерд╛ред рдЬрдм рдЖрдк рдЦреБрдж рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдзрд┐рдХ рд╕рдордЭрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рд╣рдо рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдЬреАрдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ ...
рдЧрд┐рддреБрдм рднрдВрдбрд╛рд░
рд╕реНрд░реЛрдд