TensorFlow ããŒãžã§ã³ã®äºææ§
ãã®ããã¥ã¡ã³ãã¯ãç°ãªã TensorFlow ããŒãžã§ã³éã§ïŒã³ãŒããŸãã¯ããŒã¿ã®ããããã«å¯ŸããïŒäžäœäºææ§ãå¿ èŠãšããŠãããŠãŒã¶ãŒãããã³äºææ§ãç¶æããªãã TensorFlow ã倿Žããå¿ èŠãããéçºè ã察象ãšããŠããŸãã
ã»ãã³ãã£ã㯠ããŒãžã§ãã³ã° 2.0
TensorFlow ã¯å
¬é API ã«ã€ããŠãã»ãã³ãã£ã㯠ããŒãžã§ãã³ã° 2.0ïŒsemverïŒãæ¡çšããŠããŸããTensorFlow ã®åãªãªãŒã¹ããŒãžã§ã³ã¯ãã¡ãžã£ãŒ.ãã€ããŒ.ããã
ã®åœ¢åŒã«ãªã£ãŠããŸããããšãã°ãTensorFlow ããŒãžã§ã³ 1.2.3 ã®å Žå㯠ã¡ãžã£ãŒ
ããŒãžã§ã³ã¯ 1ããã€ããŒ
ããŒãžã§ã³ã¯ 2ãããã
ããŒãžã§ã³ã¯ 3 ã§ããåçªå·ã«å¯Ÿãã倿Žã«ã¯ã以äžã®ãããªæå³ããããŸãã
ã¡ãžã£ãŒïŒäºææ§ã®ãªã倿Žã§ããå¯èœæ§ããããŸãã以åã®ã¡ãžã£ãŒãªãªãŒã¹ã§æ©èœããŠããã³ãŒããšããŒã¿ã¯ãå¿ ãããæ°ãããªãªãŒã¹ã§æ©èœãããšã¯éããŸããããã ããæ¢åã® TensorFlow ã°ã©ããšãã§ãã¯ãã€ã³ãã¯æ°ãããªãªãŒã¹ã«ç§»è¡ã§ããå ŽåããããŸããããŒã¿ã®äºææ§ã«é¢ãã詳现ã¯ãã°ã©ããšãã§ãã¯ãã€ã³ãã®äºææ§ãåç §ããŠãã ããã
ãã€ããŒïŒäžäœäºææ§ã®ããæ©èœãéåºŠã®æ¹åãªã©ã§ãã以åã®ãã€ããŒãªãªãŒã¹ã§æ©èœãããã€å®éšçã§ã¯ãªãå ¬é API ã®ã¿ãå©çšããŠããã³ãŒããããŒã¿ã¯ã倿Žãªãã§åŒãç¶ãæ©èœããŸããå ¬é API ãšéå ¬é API ã®è©³çްã«ã€ããŠã¯ãäºæå¯Ÿè±¡ãåç §ããŠãã ããã
ãããïŒäžäœäºææ§ã®ãããã°ä¿®æ£ã§ãã
ããšãã°ããªãªãŒã¹ 1.0.0 ã§ã¯ãªãªãŒã¹ 0.12.1 ãšã¯äžäœäºææ§ã®ãªã倿Žãåã蟌ãŸããŸããããããããªãªãŒã¹ 1.1.1 ã¯ãªãªãŒã¹ 1.0.0 ãšäžäœäºææ§ããããŸããã
äºæå¯Ÿè±¡
TensorFlow ã®å ¬é API ã®ã¿ãããã€ããŒããŒãžã§ã³ãšãããããŒãžã§ã³éã§äžäœäºææ§ããããŸããå ¬é API ã«ã¯ä»¥äžãå«ãŸããŸãã
tensorflow
ã¢ãžã¥ãŒã«ãšãã®ãµãã¢ãžã¥ãŒã«ã§ããã¥ã¡ã³ãåãããŠãããã¹ãŠã® Python 颿°ãšã¯ã©ã¹ããã ãã以äžãé€ããŸããéå ¬éã·ã³ãã«ïŒååã
_
ã§å§ãŸãä»»æã®é¢æ°ãã¯ã©ã¹ãªã©ãå®éšçãªã·ã³ãã«ãš
tf.contrib
ã·ã³ãã«ã詳现ã¯ã以äžãåç §ããŠãã ããã
examples/
ããã³tools/
ãã£ã¬ã¯ããªå ã®ã³ãŒãã¯tensorflow
Python ã¢ãžã¥ãŒã«çµç±ã§ã¯å°éäžå¯èœã§ãããäºææ§ã®ä¿èšŒå¯Ÿè±¡ããã¯å€ããŠããããšã«æ³šæããŠãã ãããã·ã³ãã«ã
tensorflow
Python ã¢ãžã¥ãŒã«ããã®ãµãã¢ãžã¥ãŒã«ããå©çšã§ãããã®ã®ãããã¥ã¡ã³ãåãããŠããªãå Žåã¯å ¬é API ã®äžéšãšã¯èŠãªãããŸãããäºæ APIïŒPythonã§ã¯
tf.compat
ã¢ãžã¥ãŒã«ïŒãã¡ãžã£ãŒããŒãžã§ã³ã§ã¯ãæ°ããã¡ãžã£ãŒããŒãžã§ã³ãžã®ç§»è¡ãæ¯æŽãããŠãŒãã£ãªãã£ãšè¿œå ã®ãšã³ããã€ã³ãããªãªãŒã¹ãããå ŽåããããŸãããããã® API ã·ã³ãã«ã¯éæšå¥šã§ããããµããŒããããŸããïŒã€ãŸããæ©èœã远å ãããè匱æ§ãä¿®æ£ãã以å€ã®ãã°ãä¿®æ£ããŸããïŒããã ããäºææ§ã®ä¿èšŒå¯Ÿè±¡ã«ã¯ãªããŸããTensorFlow C API:
TensorFlow Lite C API:
以äžã®ãããã³ã« ãããã¡ ãã¡ã€ã«ã
äºæå¯Ÿè±¡å€
TensorFlow ã®äžéšã®æ§æèŠçŽ ã¯ããã€ã§ãäžäœäºææ§ã®ãªãæ¹æ³ã§å€æŽã§ããŸãã以äžãå«ãŸããŸãã
å®éšç㪠APIïŒéçºã容æã«ãããããå®éšçã§ãããšæç¢ºã«æå®ãããŠããäžéšã® API ã·ã³ãã«ã¯äºææ§ã®ä¿èšŒå¯Ÿè±¡ããé€å€ãããŠããŸããç¹ã«ã以äžã¯ãã¹ãŠã®äºææ§ä¿èšŒã®å¯Ÿè±¡ããå€ãããŠããŸãã
tf.contrib
ã¢ãžã¥ãŒã«ãŸãã¯ãã®ãµãã¢ãžã¥ãŒã«å ã®ã·ã³ãã«ãååã«
experimental
ãŸãã¯Experimental
ãå«ãã·ã³ãã«ïŒã¢ãžã¥ãŒã«ã颿°ãåŒæ°ãããããã£ãã¯ã©ã¹ããŸãã¯å®æ°ïŒãå®å šä¿®é£Ÿåã«ãããèªäœãå®éšçãªã¢ãžã¥ãŒã«ãŸãã¯ã¯ã©ã¹ãå«ãã·ã³ãã«ã
experimental
ãšåŒã°ããä»»æã®ãããã³ã«ãããã¡ã®ãã£ãŒã«ããšãµãã¡ãã»ãŒãžãå«ãŸããŸãã
ãã®ä»ã®èšèªïŒä»¥äžã®ãããªãPython ã C 以å€ã®èšèªã§æžããã TensorFlow APIã
C++ïŒ
tensorflow/cc
å ã®ããããŒãã¡ã€ã«çµç±ã§å ¬éãããŠãããã®ïŒãJava,
è€åopsïŒãªãã¹ïŒã®è©³çŽ°ïŒ Python å ã®å€ãã®ãããªãã¯é¢æ°ã¯ã°ã©ãå ã§è€æ°ã®ããªããã£ãopsïŒãªãã¹ïŒã«å±éããããããã®è©³çްã¯ãã£ã¹ã¯ã«
GraphDef
ãšããŠä¿åãããŠããã°ã©ãã®èŠçŽ ã«ãªããŸããç¹ã«ãã°ã©ãéã®æ£ç¢ºãªäžèŽããã§ãã¯ããååž°ãã¹ãã¯ãã°ã©ãã®åäœã倿Žããå¿ èŠããªããæ¢åã®ãã§ãã¯ãã€ã³ããåŒãç¶ãæ©èœããå Žåã§ãã£ãŠãããã€ããŒãªãªãŒã¹éã§äžæãããå¯èœæ§ããããŸããæµ®åå°æ°ç¹æ°å€ã®è©³çŽ°ïŒ opsïŒãªãã¹ïŒã«ãã£ãŠèšç®ãããç¹å®ã®æµ®åå°æ°ç¹å€ã¯ãåžžã«å€æŽãããå¯èœæ§ããããŸãããŠãŒã¶ãŒã¯èšç®ãããç¹å®ã®ãããã§ã¯ãªããããããã®ç²ŸåºŠãšæ°å€çå®å®æ§ã®ã¿ãé Œãã«ããå¿ èŠããããŸãããã€ããŒãªãªãŒã¹ããã³ããããªãªãŒã¹ã§æ°åŒã倿ŽãããšãåçãŸãã¯ããæ£ç¢ºãªç²ŸåºŠãåŸãããã¯ãã§ãããã ããæ©æ¢°åŠç¿ã§ã¯ç¹å®ã®æ°åŒã®ç²ŸåºŠãåäžããããšãã·ã¹ãã å šäœã®ç²ŸåºŠãäœäžããå ŽåããããŸãã
ä¹±æ°ïŒ èšç®ãããç¹å®ã®ä¹±æ°ã¯åžžã«å€æŽãããå¯èœæ§ããããŸãããŠãŒã¶ãŒã¯èšç®ãããç¹å®ã®ãããã§ã¯ãªããããããã®æ£ããååžãšçµ±èšç匷床ã®ã¿ãé Œãã«ããå¿ èŠããããŸãã詳现ã«ã€ããŠã¯ãä¹±æ°çæã¬ã€ããåç §ããŠãã ããã
忣åããã Tensorflow ã§ã®ããŒãžã§ã³ã®å·®ç°ïŒ åäžã®ã¯ã©ã¹ã¿ãŒã§ããŒãžã§ã³ã®ç°ãªã 2 ã€ã® TensorFlow ãå®è¡ããããšã¯ã§ããŸãããã¯ã€ã€ãŒãããã³ã«ã®äžäœäºææ§ã«ã€ããŠã¯ä¿èšŒãããŠããŸããã
ãã°ïŒ çŸåšã®å®è£ ã«æãããªäžå ·åãããå ŽåïŒããªãã¡ãããã¥ã¡ã³ããšççŸããŠããå ŽåããŸãã¯ãã°ãåå ã§æ¢ç¥ã®æç¢ºã«æå³ãããåäœãé©åã«å®è£ ãããŠããªãå ŽåïŒãäžäœäºææ§ã®ãªãåäœïŒãã ããAPIã§ã¯ãªãïŒã倿Žããå ŽåããããŸããããšãã°ããªããã£ãã€ã¶ãæ¢ç¥ã®æé©åã¢ã«ãŽãªãºã ãå®è£ ããããšãæèšããŠããã«ããããããããã°ãåå ã§ãã®ã¢ã«ãŽãªãºã ã«å¯Ÿå¿ã§ããŠããªãå Žåã¯ããªããã£ãã€ã¶ãä¿®æ£ããŸããä¿®æ£ã«ãã£ãŠã¯ãçµ±äžåã®ããã«ééã£ãåäœã«äŸåããŠããã³ãŒãã廿¢ãããå¯èœæ§ããããŸãããã®ãããªå€æŽã«ã€ããŠã¯ããªãªãŒã¹ããŒãã§èª¬æããŸãã
æªäœ¿çšã® APIïŒïŒGitHub æ€çŽ¢ã§ TensorFlow ã®äœ¿çšç®æã調æ»ããããšã«ããïŒäœ¿çšãããŠããèšé²ãèŠã€ãããªã API ã«äžäœäºææ§ã®ãªã倿Žãè¡ãå ŽåããããŸãããã®ãããªå€æŽãè¡ãåã«ã¯ãçºè¡šçšã®ã¡ãŒãªã³ã°ãªã¹ãã§å€æŽãè¡ãæåãçºè¡šããïŒé©åãªå Žåã«ïŒå»æ¢ãžã®å¯ŸåŠæ¹æ³ã説æããã³ãã¥ããã£ã«ãã£ãŒãããã¯ãæäŸããæ©äŒãäžããããã« 2 é±éåŸ ã¡ãŸãã
**ãšã©ãŒåäœïŒ**ãšã©ãŒãéãšã©ãŒåäœã«çœ®ãæããå ŽåããããŸããããšãã°ããšã©ãŒãèšé²ãããŠããå Žåã§ãããšã©ãŒãçºçããã代ããã«çµæãèšç®ãã颿°ã倿Žãããå ŽåããããŸãããŸãããšã©ãŒã¡ãã»ãŒãžã®æ¬æã倿Žããå ŽåããããŸããããã«ãç¹å®ã®ãšã©ãŒæ¡ä»¶ã«å¯ŸããäŸå€ã¿ã€ããããã¥ã¡ã³ãã§æå®ãããŠããªãéãããšã©ãŒã®ã¿ã€ãã倿Žãããå ŽåããããŸãã
SavedModelãã°ã©ãããã§ãã¯ãã€ã³ãã®äºææ§
SavedModel ã¯ãTensorFlow ããã°ã©ã ã§ã®äœ¿çšã«æšå¥šãããã·ãªã¢ã©ã€ãºåœ¢åŒã§ããSavedModel ã«ã¯ãGraphDefs
ãšããŠãšã³ã³ãŒãããã 1 ã€ä»¥äžã®ã°ã©ããšãã§ãã¯ãã€ã³ãã® 2 ã€ã®èŠçŽ ãå«ãŸããŠããŸããã°ã©ãã¯å®è¡ãããopsïŒãªãã¹ïŒã®ããŒã¿ãããŒã衚ãããã§ãã¯ãã€ã³ãã«ã¯ã°ã©ãå
ã®å€æ°ã®ä¿åããããã³ãœã«å€ãå«ãŸããŠããŸãã
å€ãã® TensorFlow ãŠãŒã¶ãŒã¯ SavedModel ãäœæããTensorFlow ã®æ°ãããªãªãŒã¹ã§ããããèªã¿èŸŒãã§å®è¡ããŸããsemver ã«æºæ ããããããŒãžã§ã³ã® TensorFlow ã§èšè¿°ããã SavedModel ã¯ãåãã¡ãžã£ãŒãªãªãŒã¹ãæã€ TensorFlow ã®æ°ããããŒãžã§ã³ã§èªã¿èŸŒã¿ãè©äŸ¡ã§ããŸãã
ãµããŒã察象㮠SavedModel ã«ã€ããŠã¯ã远å ã®ä¿èšŒãè¡ã£ãŠããŸããTensorFlow ã¡ãžã£ãŒããŒãžã§ã³ N
ã§éæšå¥šã§ã¯ãªããå®éšçã§ã¯ãªããäºææ§ã®ãªã API ã®ã¿ã䜿çšããŠäœæããã SavedModel ããããŒãžã§ã³ N
ã®ãµããŒã察象 SavedModel ãšåŒã³ãŸããTensorFlow ã¡ãžã£ãŒããŒãžã§ã³ N
ã®ãµããŒã察象ãšãªããã¹ãŠã® SavedModel 㯠TensorFlow ã¡ãžã£ãŒããŒãžã§ã³ N+1
ã§èªã¿èŸŒã¿ãå®è¡ã§ããŸãããã ãããã®ãããªã¢ãã«ã®æ§ç¯ã倿Žã«å¿
èŠãªæ©èœã¯å©çšã§ããªããªã£ãŠããå Žåãããããããã®ä¿èšŒã¯æªå€æŽã® SavedModel ã®ã¿ã«é©çšãããŸãã
ã·ãªã¢ã©ã€ãºããããã¡ã€ã«ãé·æé䜿çšã§ãããããå¯èœãªéãäžäœäºææ§ãç¶æããããåªããŸãã
GraphDef ã®äºææ§
ã°ã©ã㯠GraphDef
ãããã³ã« ãããã¡çµç±ã§ã·ãªã¢ã©ã€ãºãããŸããã°ã©ããžã®äžäœäºææ§ã®ãªã倿Žã容æã«ãããããå GraphDef
ã«ã¯ TensorFlow ã®ããŒãžã§ã³ãšã¯å¥ã®ããŒãžã§ã³çªå·ãå²ãæ¯ãããŠããŸããããšãã°ãGraphDef
ããŒãžã§ã³ 17 ã§ã¯ãreciprocal
ã«å€ãããinv
æŒç®ãéæšå¥šã«ãªããŸãããã»ãã³ãã£ãã¯ã¯ä»¥äžã®ãšããã§ãã
TensorFlow ã®åããŒãžã§ã³ã¯ã
GraphDef
ã®ããŒãžã§ã³ééããµããŒãããŸãããã®ééã¯ããããªãªãŒã¹å šäœã§äžå®ã§ããããã€ããŒãªãªãŒã¹å šäœã§ã®ã¿å¢å ããŸããGraphDef
ããŒãžã§ã³ã®ãµããŒãã¯ãTensorFlow ã®ã¡ãžã£ãŒãªãªãŒã¹æã®ã¿å»æ¢ãããŸãïŒãŸããSavedModel ã§ä¿èšŒãããŠããããŒãžã§ã³ã®ãµããŒãã®ã¿ã«å¯Ÿå¿ããŠããŸãïŒãæ°ããäœæãããã°ã©ãã«ã¯ãææ°ã®
GraphDef
ããŒãžã§ã³çªå·ãå²ãåœãŠãããŸãããã TensorFlow ã®ããŒãžã§ã³ã
GraphDef
ããŒãžã§ã³ã®ã°ã©ãããµããŒãããŠããå Žåããããçæããã®ã«äœ¿çšããã TensorFlow ããŒãžã§ã³ãšåãåäœã§èªã¿èŸŒãŸããè©äŸ¡ãããŸãïŒäžèšã§æŠèª¬ãããŠããæµ®åå°æ°ç¹å€ã®è©³çްãšä¹±æ°ã¯å¯Ÿè±¡å€ïŒããã®å ŽåãTensorFlow ã®ã¡ãžã£ãŒããŒãžã§ã³ã¯åããŸãããç¹ã«ãTensorFlow ã®ããããŒãžã§ã³ã®ãã§ãã¯ãã€ã³ããã¡ã€ã«ãšäºææ§ã®ãã GraphDefïŒSavedModel ã®å Žåãªã©ïŒã¯ãGraphDef ã
ãµããŒããããŠããéãã以éã®ããŒãžã§ã³ã®ãã§ãã¯ãã€ã³ããšã®äºææ§ãç¶æãããŸããããã¯ãGraphDefsïŒããã³ SavedModelsïŒã§ã·ãªã¢ã©ã€ãºãããã°ã©ãã®ã¿ã«é©çšãããŸãããã§ãã¯ãã€ã³ããèªã¿åãã³ãŒãã¯ãç°ãªãããŒãžã§ã³ã® TensorFlow ãå®è¡ããåãã³ãŒããçæãããã§ãã¯ãã€ã³ããèªã¿åãããšãã§ããªãå ŽåããããŸãã
GraphDef
ã®äžéãããïŒãã€ããŒïŒãªãªãŒã¹ã§ X ã«å¢ããå Žåã6 ãæä»¥äžéããŠãã äžéã X ã«å¢ããŸãã以äžã«äŸã瀺ããŸãïŒããã§ã¯ä»®æ³çãªããŒãžã§ã³çªå·ã䜿çšããŠããŸãïŒãTensorFlow 1.2 ã¯
GraphDef
ããŒãžã§ã³ 4 ãã 7 ããµããŒãããŠããŸãããTensorFlow 1.3 ã¯
GraphDef
ããŒãžã§ã³ 8 ã远å ããããŒãžã§ã³ 4 ãã 8 ããµããŒãããŠããŸããã6 ã«æãéããåŸãTensorFlow 2.0.0 ã§ã¯ããŒãžã§ã³ 8 ã®ã¿ãæ®ãããããŒãžã§ã³ 4 ãã 7 ã®ãµããŒããçµäºããå¯èœæ§ããããŸãã
TensorFlow ã®ã¡ãžã£ãŒããŒãžã§ã³ã¯éåžž 6 ãæä»¥äžã®ééã§å ¬éããããããäžèšã®ãµããŒã察象㮠SavedModels ã«å¯Ÿããä¿èšŒã¯ãGraphDefs ã«å¯Ÿãã 6 ãæã®ä¿èšŒãããã¯ããã«åŒ·åã§ãã
ããã«ããã GraphDef
ããŒãžã§ã³ã®ãµããŒããçµäºããå Žåã¯ãããæ°ãããµããŒã察象㮠GraphDef
ããŒãžã§ã³ã«ã°ã©ããèªåçã«å€æããããŒã«ã®æäŸã詊ã¿ãŸãã
TensorFlow ãæ¡åŒµããéã®ã°ã©ããšãã§ãã¯ãã€ã³ãã®äºææ§
ãã®ã»ã¯ã·ã§ã³ã¯ãopsïŒãªãã¹ïŒã®è¿œå ãopsïŒãªãã¹ïŒã®åé€ããŸãã¯æ¢åopsïŒãªãã¹ïŒã®æ©èœå€æŽãªã©ãGraphDef
圢åŒã«äºææ§ã®ãªã倿Žãè¡ãå Žåã®ã¿é¢ä¿ããŸããã»ãšãã©ã®ãŠãŒã¶ãŒã¯ããããŸã§ã®ã»ã¯ã·ã§ã³ã®å
容ã§ååã«å¯Ÿå¿ã§ããŸãã
äžäœäºææ§ããã³éšåçãªäžäœäºææ§
åœç€Ÿã®ããŒãžã§ã³ç®¡çã¹ããŒã ã«ã¯ 3 ã€ã®èŠä»¶ããããŸãã
äžäœäºææ§ãæ§ããŒãžã§ã³ã® TensorFlow ã§äœæãããã°ã©ããšãã§ãã¯ãã€ã³ãã®èªã¿èŸŒã¿ããµããŒããããã®ã§ãã
äžäœäºææ§ãã°ã©ããŸãã¯ãã§ãã¯ãã€ã³ãã®ãããã¥ãŒãµãŒãã³ã³ã·ã¥ãŒããŒããå ã«æ°ããŒãžã§ã³ã® TensorFlow ã«ã¢ããã°ã¬ãŒããããã·ããªãªããµããŒããããã®ã§ãã
äºææ§ã®ãªãæ¹æ³ã§ TensorFlow ã®é²åãå¯èœã«ããããšãããšãã°ãopsïŒãªãã¹ïŒã®åé€ã屿§ã®è¿œå ã屿§ã®åé€ãªã©ããããŸãã
GraphDef
ã®ããŒãžã§ã³æ§é 㯠TensorFlow ã®ããŒãžã§ã³ãšã¯ç¬ç«ããŠãããGraphDef
ã®åœ¢åŒã«å¯Ÿããäžäœäºææ§ã®ãªã倿Žã¯äŸç¶ãšããŠã»ãã³ãã£ã㯠ããŒãžã§ãã³ã°ã«ããå¶éãåããããšã«æ³šæããŠãã ãããã€ãŸããæ©èœãåé€ãŸãã¯å€æŽã§ããã®ã¯ TensorFlow ã®ã¡ãžã£ãŒ
ããŒãžã§ã³éã®ã¿ã§ãïŒ1.7
ãã 2.0
ãªã©ïŒããŸããããã ãªãªãŒã¹å
ã§ã¯äžäœäºææ§ã匷å¶ãããŸãïŒ1.x.1
ãã 1.x.2
ãªã©ïŒã
äžäœäºææ§ãšäžäœäºææ§ãå®çŸãã圢åŒã®å€æŽã匷å¶ããã¿ã€ãã³ã°ãææ¡ãããããã°ã©ããšãã§ãã¯ãã€ã³ãã«ã¯çæãããæéã衚ãã¡ã¿ããŒã¿ããããŸãã以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãTensorFlow ã®å®è£
ãš GraphDef
ã®ããŒãžã§ã³ãé²åãããããã®ã¬ã€ãã©ã€ã³ã«ã€ããŠè©³è¿°ããŸãã
ç¬ç«ããããŒã¿ ããŒãžã§ã³ ã¹ããŒã
ã°ã©ããšãã§ãã¯ãã€ã³ãã«ã¯ããŸããŸãªããŒã¿ããŒãžã§ã³ããããŸãã2 ã€ã®ããŒã¿åœ¢åŒã¯ãäºãã«ç°ãªãé床ã§ãTensorFlow ãšãç°ãªãé床ã§é²åããŸããã©ã¡ãã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã core/public/version.h
ã§å®çŸ©ãããŠããŸããæ°ããããŒãžã§ã³ã远å ããããšã倿Žå
å®¹ãšæ¥ä»ã詳述ããæ³šéãããããŒã«è¿œå ãããŸãã
ããŒã¿ããããã¥ãŒãµãŒãã³ã³ã·ã¥ãŒããŒ
次ã®çš®é¡ã®ããŒã¿ããŒãžã§ã³æ å ±ãåºå¥ããŸãã
ãããã¥ãŒãµãŒïŒããŒã¿ãçæãããã€ããªã§ãããããã¥ãŒãµãŒã«ã¯ãããŒãžã§ã³ïŒ
producer
ïŒãšäºææ§ã®ããæå°ã³ã³ã·ã¥ãŒã㌠ããŒãžã§ã³ïŒmin_consumer
ïŒããããŸããã³ã³ã·ã¥ãŒããŒïŒããŒã¿ãæ¶è²»ãããã€ããªã§ããã³ã³ã·ã¥ãŒããŒã«ã¯ãããŒãžã§ã³ïŒ
consumer
ïŒãšäºææ§ã®ããæå°ãããã¥ãŒãµãŒ ããŒãžã§ã³ïŒmin_producer
ïŒããããŸãã
ããŒãžã§ã³ç®¡ç察象ã®åããŒã¿ã«ã¯ãããŒã¿ãäœæããproducer
ãäºææ§ã®ãã min_consumer
ãããã³èš±å¯ãããŠããªã bad_consumers
ããŒãžã§ã³ã®ãªã¹ããèšé²ãã VersionDef ããŒãžã§ã³
ãã£ãŒã«ãããããŸãã
ããã©ã«ãã§ã¯ãããã¥ãŒãµãŒãäœããã®ããŒã¿ãäœæããå Žåããã®ããŒã¿ã¯ãããã¥ãŒãµãŒã® producer
ããŒãžã§ã³ãš min_consumer
ããŒãžã§ã³ãç¶æ¿ããŸããbad_consumers
ã¯ãç¹å®ã®ã³ã³ã·ã¥ãŒã㌠ããŒãžã§ã³ããã°ãå«ãã§ãããåé¿ãã¹ãã§ããããšãåãã£ãŠããå Žåã«èšå®ã§ããŸããã³ã³ã·ã¥ãŒããŒã¯ã次ã®ãã¹ãŠã®æ¡ä»¶ãæºããå Žåã«ããŒã¿çãåãä»ããŸãã
consumer
>= ããŒã¿ã®min_consumer
ããŒã¿ã®
producer
>= ã³ã³ã·ã¥ãŒããŒã®min_producer
consumer
ãããŒã¿ã®bad_consumers
ã«å«ãŸããªã
ãããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒã¯ã©ã¡ããåã TensorFlow ã³ãŒãããŒã¹ã«ç±æ¥ãããããcore/public/version.h
ã«ã¯ãã³ã³ããã¹ãã«å¿ã㊠producer
ãŸã㯠consumer
ãšããŠæ±ãããã¡ã€ã³ããŒã¿ã®ããŒãžã§ã³ãšãmin_consumer
ããã³ min_producer
ã®äž¡æ¹ïŒãããããããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒã§å¿
èŠïŒãå«ãŸããŸããå
·äœçã«ã¯ä»¥äžã®ãšããã§ãã
GraphDef
ããŒãžã§ã³ã®å Žåã¯ãTF_GRAPH_DEF_VERSION
ãTF_GRAPH_DEF_VERSION_MIN_CONSUMER
ãTF_GRAPH_DEF_VERSION_MIN_PRODUCER
ãå«ãŸããŸãããã§ãã¯ãã€ã³ãããŒãžã§ã³ã®å Žåã¯ã
TF_CHECKPOINT_VERSION
ãTF_CHECKPOINT_VERSION_MIN_CONSUMER
ãTF_CHECKPOINT_VERSION_MIN_PRODUCER
ãå«ãŸããŸãã
ããã©ã«ãã®æ°ãã屿§ãæ¢åã®æŒç®ã«è¿œå ãã
以äžã®ã¬ã€ãã³ã¹ã«åŸããšãäžé£ã®opsïŒãªãã¹ïŒã倿ŽãããŠããªãå Žåã«éããäžäœäºææ§ã確ä¿ãããŸãã
äžäœäºææ§ãå¿ èŠãªå Žåã¯ã
SavedModelBuilder
ã¯ã©ã¹ã®tf.saved_model.SavedModelBuilder.add_meta_graph_and_variables
ã¡ãœãããštf.saved_model.SavedModelBuilder.add_meta_graph
ã¡ãœããã®ããããããŸãã¯tf.estimator.Estimator.export_saved_model
ã䜿çšããŠã¢ãã«ããšã¯ã¹ããŒãããéã«ãstrip_default_attrs
ãTrue
ã«èšå®ããŸããããã«ãããã¢ãã«ã®çæ/ãšã¯ã¹ããŒãæã«ããã©ã«ãå€ã®å±æ§ãåãé€ãããŸãããã®çµæãããã©ã«ãå€ã䜿çšãããŠããå Žåã«ãšã¯ã¹ããŒãããã
tf.MetaGraphDef
ã«æ°ããæŒç®å±æ§ãå«ãŸããªããªããŸãããã®ã³ã³ãããŒã«ã«ãããå€ãã³ã³ã·ã¥ãŒããŒïŒãã¬ãŒãã³ã°ãã€ããªããé ãããã€ããªãæäŸããŠããçïŒãã¢ãã«ã®èªã¿èŸŒã¿ãç¶è¡ããã¢ãã«æäŸã®äžæãé²ããããã«ãªãå ŽåããããŸãã
GraphDef ããŒãžã§ã³ã®é²å
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã®ããŒãžã§ã³ç®¡çææ³ã䜿çšã㊠GraphDef
圢åŒã«ããŸããŸãªçš®é¡ã®å€æŽãå ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
æŒç®ã远å ãã
æ°ããæŒç®ãã³ã³ã·ã¥ãŒããŒãšãããã¥ãŒãµãŒã®äž¡æ¹ã«åæã«è¿œå ãã GraphDef
ã®ããŒãžã§ã³ã倿Žããªãããã«ããŠãã ãããæ¢åã®ãããã¥ãŒãµãŒã¹ã¯ãªãããæ°ããæ©èœãäžæã«äœ¿çšããããšã¯ãªãããããã®çš®ã®å€æŽã«ã¯èªåçã«äžäœäºææ§ã確ä¿ãããäžäœäºææ§ã®èšç»ã«ã¯åœ±é¿ããŸããã
æŒç®ã远å ããæ¢åã® Python ã©ãããŒãåãæ¿ããŠäœ¿çšãã
æ°ããã³ã³ã·ã¥ãŒããŒã®æ©èœãå®è£ ãã
GraphDef
ã®ããŒãžã§ã³ãäžããŸãã以åã¯æ©èœããªãã£ãã©ãããŒãæ°æ©èœã®ã¿ã䜿çšã§ããããã«ããããšãå¯èœãªå Žåãã©ãããŒãããã«æŽæ°ã§ããŸãã
Python ã©ãããŒã倿ŽããŠæ°æ©èœã䜿çšããããã«ããŸãã
min_consumer
ã®å€ã¯å¢ãããªãã§ãã ããããã®æŒç®ã䜿çšããªãã¢ãã«ã¯å£ããªãããã§ãã
æŒç®ã®æ©èœãåé€ãŸãã¯å¶éãã
ãã¹ãŠã®ãããã¥ãŒãµãŒã¹ã¯ãªããïŒTensorFlowèªäœã§ã¯ãªãïŒãä¿®æ£ããçŠæ¢ãããæŒç®ãæ©èœã䜿çšããªãããã«ããŸãã
GraphDef
ã®ããŒãžã§ã³ãäžããæ°ããŒãžã§ã³ä»¥éã® GraphDefs ã§åé€ãããæŒç®ãæ©èœãçŠæ¢ããæ°ããã³ã³ã·ã¥ãŒããŒæ©èœãå®è£ ããŸããå¯èœã§ããã°ãTensorFlow ãçŠæ¢ãããæ©èœã䜿çšããŠGraphDefs
ãçæããã®ã黿¢ããŠãã ããããã®ããã«ã¯ãREGISTER_OP(...).Deprecated(deprecated_at_version, message)
ã远å ããŸããäžäœäºææ§ã確ä¿ããããã«ã¡ãžã£ãŒãªãªãŒã¹ãåŸ ã¡ãŸãã
min_producer
ã (2) ã® GraphDef ããŒãžã§ã³ã«å¢ãããæ©èœãå®å šã«åé€ããŸãã
æŒç®ã®æ©èœã倿Žãã
SomethingV2
ãªã©ã®ååãæã€é¡äŒŒããæ°ããæŒç®ã远å ããããã远å ããŠæ¢åã® Python ã©ãããŒãããã䜿çšããããã«åãæ¿ããããã»ã¹ãå®è¡ããŸããäžäœäºææ§ã確ä¿ããã«ã¯ãPython ã©ãããŒã倿Žããéã« compat.py ã§ææ¡ãããŠãããã§ãã¯ã䜿çšããŸããå€ãæŒç®ãåé€ããŸãïŒäžäœäºææ§ã®ããã«ã¡ãžã£ãŒããŒãžã§ã³ã倿Žãããå Žåã«ã®ã¿å®è¡ã§ããŸãïŒã
min_consumer
ãå¢ãããå€ãæŒç®ãæã€ã³ã³ã·ã¥ãŒããŒãé€å€ããå€ãæŒç®ãSomethingV2
ã®ãšã€ãªã¢ã¹ãšããŠå床远å ããæ¢åã® Python ã©ãããŒãããã䜿çšããããã«ããã»ã¹ãåãæ¿ããŸããSomethingV2
ãåé€ããããã»ã¹ãå®è¡ããŸãã
åäžã®å®å šã§ãªãã³ã³ã·ã¥ãŒããŒããŒãžã§ã³ãçŠæ¢ãã
GraphDef
ã®ããŒãžã§ã³çªå·ãäžãããã¹ãŠã®æ°ãã GraphDefs ã«å¯ŸããŠäžå ·åã®ããããŒãžã§ã³ãbad_consumers
ã«è¿œå ããŸããå¯èœã§ããã°ãç¹å®ã®æŒç®ãããã«é¡ãããã®ãå«ã GraphDefs ã®ã¿ã«bad_consumers
ã远å ããŠãã ãããæ¢åã®ã³ã³ã·ã¥ãŒããŒã«äžå ·åã®ããããŒãžã§ã³ãããå Žåãã§ããã ãæ©ãããããæé€ããŠãã ããã