±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblogs£¬ÎÄÕÂÖ÷Òª½²ÁËTensorflowµÄºËÐÄ¡ª¼ÆËãͼģÐÍ£¬ÈçºÎ¶¨ÒåͼģÐͺͼÆËãͼģÐ͵ÈÏà¹ØÄÚÈÝ¡£ |
|
TensorflowÊÇÒ»ÖÖ¼ÆËãͼģÐÍ£¬¼´ÓÃͼµÄÐÎʽÀ´±íʾÔËËã¹ý³ÌµÄÒ»ÖÖÄ£ÐÍ¡£Tensorflow³ÌÐòÒ»°ã·ÖΪͼµÄ¹¹½¨ºÍͼµÄÖ´ÐÐÁ½¸ö½×¶Î¡£Í¼µÄ¹¹½¨½×¶ÎÒ²³ÆÎªÍ¼µÄ¶¨Òå½×¶Î£¬¸Ã¹ý³Ì»áÔÚͼģÐÍÖж¨ÒåËùÐèµÄÔËË㣬ÿ´ÎÔËËãµÄµÄ½á¹ûÒÔ¼°ÔʼµÄÊäÈëÊý¾Ý¶¼¿É³ÆÎªÒ»¸ö½Úµã£¨operation
£¬ËõдΪop£©¡£ÎÒÃÇͨ¹ýÒÔϳÌÐòÀ´ËµÃ÷ͼµÄ¹¹½¨¹ý³Ì£º
³ÌÐò2-1£º

³ÌÐò2-1¶¨ÒåÁËͼµÄ¹¹½¨¹ý³Ì£¬¡°import tensorflow as tf¡±£¬ÊÇÔÚpythonÖе¼ÈëtensorflowÄ£¿é,²¢ÁíÆðÃûΪ¡°tf¡±£»½Ó×Ŷ¨ÒåÁËÁ½¸ö³£Á¿op£¬m1ºÍm2£¬¾ùΪ1*2µÄ¾ØÕó£»×îºó½«m1ºÍm2µÄÖµ×÷ΪÊäÈë´´½¨Ò»¸ö¾ØÕó¼Ó·¨op£¬²¢Êä³ö×îºóµÄ½á¹ûresult¡£
ÎÒÃÇ·ÖÎö×îÖÕµÄÊä³ö½á¹û¿ÉÖª£¬Æä²¢Ã»ÓÐÊä³ö¾ØÕóÏà¼ÓµÄ½á¹û£¬¶øÊÇÊä³öÁËÒ»¸ö°üº¬Èý¸öÊôÐÔµÄTensor(TensorµÄ¸ÅÄîÎÒÃÇ»áÔÚÏÂÒ»½ÚÖÐÏêϸ½²½â£¬ÕâÀï¾Í²»ÔÙ׸Êö)¡£
ÒÔÉϹý³Ì±ãÊÇͼģÐ͵Ĺ¹½¨½×¶Î£ºÖ»ÔÚͼÖж¨ÒåËùÐèÒªµÄÔËË㣬¶øÃ»ÓÐÈ¥Ö´ÐÐÔËËã¡£ÎÒÃÇ¿ÉÒÔÓÃͼ2-1À´±íʾ£º
<
ͼ2-1 ͼµÄ¹¹½¨½×¶Î
µÚ¶þ¸ö½×¶ÎΪͼµÄÖ´Ðн׶Σ¬Ò²¾ÍÊÇÔڻỰ£¨session£©ÖÐÖ´ÐÐͼģÐÍÖж¨ÒåºÃµÄÔËËã¡£
ÎÒÃÇͨ¹ý³ÌÐò2-2À´½âÊÍͼµÄÖ´Ðн׶Σº
³ÌÐò2-2£º

³ÌÐò2-2ÃèÊöÁËͼµÄÖ´Ðйý³Ì£¬Ê×ÏÈͨ¹ý¡°tf.session()¡±Æô¶¯Ä¬ÈÏͼģÐÍ£¬ÔÙµ÷ÓÃrun()·½·¨Æô¶¯¡¢ÔËÐÐͼģÐÍ£¬´«ÈëÉÏÊö²ÎÊýresult£¬Ö´ÐоØÕóµÄ¼Ó·¨£¬²¢´òÓ¡³öÏà¼ÓµÄ½á¹û£¬×îºóÔÚÈÎÎñÍê³Éʱ£¬Òª¼ÇµÃµ÷ÓÃclose()·½·¨£¬¹Ø±Õ»á»°¡£
³ýÁËÉÏÊöµÄsessionд·¨Í⣬ÎÒÃǸü½¨Òé´ó¼Ò£¬°Ñsessionд³ÉÈç³ÌÐò2-4Ëùʾ¡°with¡±´úÂë¿éµÄÐÎʽ£¬ÕâÑù¾ÍÎÞÐèÏÔʾµÄµ÷ÓÃcloseÊÍ·Å×ÊÔ´£¬¶øÊÇ×Ô¶¯µØ¹Ø±Õ»á»°¡£
³ÌÐò2-3£º

´ËÍ⣬ÎÒÃÇ»¹¿ÉÒÔÀûÓÃCPU»òGPUµÈ¼ÆËã×ÊÔ´·Ö²¼Ê½Ö´ÐÐͼµÄÔËËã¹ý³Ì¡£Ò»°ãÎÒÃÇÎÞÐèÏÔʾµÄÖ¸¶¨¼ÆËã×ÊÔ´£¬Tensorflow¿ÉÒÔ×Ô¶¯µØ½øÐÐʶ±ð£¬Èç¹û¼ì²âµ½ÎÒÃǵÄGPU»·¾³£¬»áÓÅÏȵÄÀûÓÃGPU»·¾³Ö´ÐÐÎÒÃǵijÌÐò¡£µ«Èç¹ûÎÒÃǵļÆËã»úÖÐÓжàÓÚÒ»¸ö¿ÉÓõÄGPU£¬Õâ¾ÍÐèÒªÎÒÃÇÊÖ¶¯µÄÖ¸ÅÉGPUÈ¥Ö´ÐÐÌØ¶¨µÄop¡£ÈçϳÌÐò2-4Ëùʾ£¬TensorflowÖÐʹÓÃwith...deviceÓï¾äÀ´Ö¸¶¨GPU»òCPU×ÊÔ´Ö´ÐвÙ×÷¡£
³ÌÐò2-4£º

ÉÏÊö³ÌÐòÖеġ°tf.device(¡°/gpu:2¡±)¡±ÊÇÖ¸¶¨Á˵ڶþ¸öGPU×ÊÔ´À´ÔËÐÐÏÂÃæµÄop¡£ÒÀ´ÎÀàÍÆ£¬ÎÒÃÇ»¹¿ÉÒÔͨ¹ý¡°/gpu:3¡±¡¢¡°/gpu:4¡±¡¢¡°/gpu:5¡±...À´Ö¸¶¨µÚN¸öGPUÖ´ÐвÙ×÷¡£
¹ØÓÚGPUµÄ¾ßÌåʹÓ÷½·¨£¬ÎÒÃÇ»áÔÚÏÂÃæµÄÕ½ڽáºÏ°¸ÀýµÄÐÎʽ¾ßÌåÃèÊö¡£
TensorflowÖл¹ÌṩÁËĬÈϻỰµÄ»úÖÆ£¬Èç³ÌÐò2-5Ëùʾ£¬ÎÒÃÇͨ¹ýµ÷Óú¯Êýas_default()Éú³ÉĬÈϻỰ¡£
³ÌÐò2-5£º

ÎÒÃÇ¿ÉÒÔ¿´µ½³ÌÐò2-5ºÍ³ÌÐò2-2ÓÐÏàͬµÄÊä³ö½á¹û¡£ÎÒÃÇÔÚÆô¶¯Ä¬ÈϻỰºó£¬¿ÉÒÔͨ¹ýµ÷ÓÃeval()º¯Êý£¬Ö±½ÓÊä³ö±äÁ¿µÄÄÚÈÝ¡£
ÓÐʱ£¬ÎÒÃÇÐèÒªÔÚJupyter»òIPythonµÈpython½»»¥Ê½»·¾³¿ª·¢¡£TensorflowΪÁËÂú×ãÓû§µÄÕâÒ»ÐèÇó£¬ÌṩÁËÒ»ÖÖרÃÅÕë¶Ô½»»¥Ê½»·¾³¿ª·¢µÄ·½·¨InteractiveSession(),¾ßÌåÓ÷¨Èç³ÌÐò2-6Ëùʾ£º
³ÌÐò2-6£º

³ÌÐò2-6¾ÍÊǽ»»¥Ê½»·¾³Öо³£»áʹÓõÄInteractiveSession()·½·¨£¬Æä´´½¨sess¶ÔÏóºó£¬¿ÉÒÔÖ±½ÓÊä³öÔËËã½á¹û¡£
×ÛÉÏËùÊö£¬ÎÒÃǽéÉÜÁËTensorflowµÄºËÐĸÅÄ¡ª¼ÆËãͼģÐÍ£¬ÒÔ¼°¶¨ÒåͼģÐͺÍÔËÐÐͼģÐ͵ļ¸ÖÖ·½Ê½¡£½ÓÏÂÀ´£¬ÎÒÃÇ˼¿¼Ò»¸öÎÊÌ⣬ΪʲôTensorflowҪʹÓÃͼģÐÍ£¿Í¼Ä£ÐÍÓÐʲôÓÅÊÆÄØ£¿
Ê×ÏÈ£¬Í¼Ä£Ð͵Ä×î´óºÃ´¦ÊǽÚԼϵͳ¿ªÏú£¬Ìá¸ß×ÊÔ´µÄÀûÓÃÂÊ£¬¿ÉÒÔ¸ü¼Ó¸ßЧµÄ½øÐÐÔËËã¡£ÒòΪÎÒÃÇÔÚͼµÄÖ´Ðн׶Σ¬Ö»ÐèÒªÔËÐÐÎÒÃÇÐèÒªµÄop,ÕâÑù¾Í´ó´óµÄÌá¸ßÁË×ÊÔ´µÄÀûÓÃÂÊ£»Æä´Î£¬ÕâÖֽṹÓÐÀûÓÚÎÒÃÇÌáÈ¡ÖмäijЩ½ÚµãµÄ½á¹û£¬·½±ãÒÔºóÀûÓÃÖмäµÄ½ÚµãÈ¥½øÐÐÆäËüÔËË㣻»¹ÓоÍÊÇÕâÖֽṹ¶Ô·Ö²¼Ê½ÔËËã¸ü¼ÓÓѺã¬ÔËËãµÄ¹ý³Ì¿ÉÒÔ·ÖÅ䏸¶à¸öCPU»òÊÇGPUͬʱ½øÐУ¬Ìá¸ßÔËËãЧÂÊ£»×îºó£¬ÒòΪͼģÐͰÑÔËËã·Ö½â³ÉÁ˺ܶà¸ö×Ó»·½Ú£¬ËùÒÔÕâÖֽṹҲÈÃÎÒÃǵÄÇóµ¼±äµÃ¸ü¼Ó·½±ã¡£
2.3.2 Tensor½éÉÜ
Tensor£¨ÕÅÁ¿£©ÊÇTensorflowÖÐ×îÖØÒªµÄÊý¾Ý½á¹¹£¬ÓÃÀ´±íʾTensorflow³ÌÐòÖеÄËùÓÐÊý¾Ý¡£Tensor±¾Êǹ㷺ӦÓÃÔÚÎïÀí¡¢ÊýѧÁìÓòÖеÄÒ»¸öÎïÀíÁ¿¡£ÄÇôÔÚTensorflowÖиÃÈçºÎÀí½âTensorµÄ¸ÅÄîÄØ£¿
ʵ¼ÊÉÏ£¬ÎÒÃÇ¿ÉÒÔ°ÑTensorÀí½â³ÉNά¾ØÕó£¨NάÊý×飩¡£ÆäÖÐÁãάÕÅÁ¿±íʾµÄÊÇÒ»¸ö±êÁ¿£¬Ò²¾ÍÊÇÒ»¸öÊý£»Ò»Î¬ÕÅÁ¿±íʾµÄÊÇÒ»¸öÏòÁ¿£¬Ò²¿ÉÒÔ¿´×÷ÊÇÒ»¸öһάÊý×飻¶þάÕÅÁ¿±íʾµÄÊÇÒ»¸ö¾ØÕó£»Í¬Àí£¬NάÕÅÁ¿Ò²¾ÍÊÇNά¾ØÕó¡£
ÔÚ¼ÆËãͼģÐÍÖУ¬²Ù×÷¼äËù´«µÝµÄÊý¾Ý¶¼¿ÉÒÔ¿´×öÊÇTensor¡£ÄÇTensorµÄ½á¹¹µ½µ×ÊÇÔõÑùµÄÄØ£¿ÎÒÃÇ¿ÉÒÔͨ¹ý³ÌÐò2-7¸üÉîÈëµÄÁ˽âÒ»ÏÂTensor¡£
³ÌÐò2-7£º

³ÌÐò2-7µÄÊä³ö½á¹û±íÃ÷£º¹¹½¨Í¼µÄÔËËã¹ý³ÌÊä³öµÄ½á¹ûÊÇÒ»¸öTensor£¬ÇÒÆäÖ÷ÒªÓÉÈý¸öÊôÐÔ¹¹³É£ºName¡¢ShapeºÍType¡£Name´ú±íµÄÊÇÕÅÁ¿µÄÃû×Ö£¬Ò²ÊÇÕÅÁ¿µÄΨһ±êʶ·û£¬ÎÒÃÇ¿ÉÒÔÔÚÿ¸öopÉÏÌí¼ÓnameÊôÐÔÀ´¶Ô½Úµã½øÐÐÃüÃû£¬NameµÄÖµ±íʾµÄÊǸÃÕÅÁ¿À´×ÔÓÚµÚ¼¸¸öÊä³ö½á¹û£¨±àºÅ´Ó0¿ªÊ¼£©£¬ÉÏÀýÖеġ°mul_3:0¡±ËµÃ÷ÊǵÚÒ»¸ö½á¹ûµÄÊä³ö¡£Shape´ú±íµÄÊÇÕÅÁ¿µÄά¶È£¬ÉÏÀýÖÐshapeµÄÊä³ö½á¹û(1,1)˵Ã÷¸ÃÕÅÁ¿resultÊÇÒ»¸ö¶þάÊý×飬ÇÒÿ¸öά¶ÈÊý×éµÄ³¤¶ÈÊÇ1¡£×îºóÒ»¸öÊôÐÔ±íʾµÄÊÇÕÅÁ¿µÄÀàÐÍ£¬Ã¿¸öÕÅÁ¿¶¼»áÓÐΨһµÄÀàÐÍ£¬³£¼ûµÄÕÅÁ¿ÀàÐÍÈçͼ2-2Ëùʾ¡£

ͼ2-2 ³£ÓõÄÕÅÁ¿ÀàÐÍ
ÎÒÃÇÐèҪעÒâµÄÊÇÒª±£Ö¤²ÎÓëÔËËãµÄÕÅÁ¿ÀàÐÍÏàÒ»Ö£¬·ñÔò»á³öÏÖÀàÐͲ»Æ¥ÅäµÄ´íÎó¡£Èç³ÌÐò2-8Ëùʾ£¬µ±²ÎÓëÔËËãµÄÕÅÁ¿ÀàÐͲ»Í¬Ê±£¬Tensorflow»á±¨ÀàÐͲ»Æ¥ÅäµÄ´íÎó£º
³ÌÐò2-8£º

ÕýÈç³ÌÐòµÄ±¨´íËùʾ£ºm1ÊÇint32µÄÊý¾ÝÀàÐÍ£¬¶øm2ÊÇfloat32µÄÊý¾ÝÀàÐÍ£¬Á½ÕßµÄÊý¾ÝÀàÐͲ»Æ¥Å䣬ËùÒÔ·¢ÉúÁË´íÎó¡£ËùÒÔÎÒÃÇÔÚʵ¼Ê±à³Ìʱ£¬Ò»¶¨×¢Òâ²ÎÓëÔËËãµÄÕÅÁ¿Êý¾ÝÀàÐÍÒªÏàͬ¡£
2.3.3 ³£Á¿¡¢±äÁ¿¼°Õ¼Î»·û
TensorflowÖжԳ£Á¿µÄ³õʼ»¯£¬²»¹ÜÊǶÔÊýÖµ¡¢ÏòÁ¿»¹ÊǶԾØÕóµÄ³õʼ»¯£¬¶¼ÊÇͨ¹ýµ÷ÓÃconstant()º¯ÊýʵÏֵġ£ÒòΪconstant()º¯ÊýÔÚTensorflowÖеÄʹÓ÷dz£Æµ·±£¬¾³£±»ÓÃÓÚ¹¹½¨Í¼Ä£ÐÍÖг£Á¿µÄ¶¨Ò壬ËùÒÔ½ÓÏÂÀ´£¬ÎÒÃÇͨ¹ý³ÌÐò2-9Á˽âÒ»ÏÂconstant()µÄÏà¹ØÊôÐÔ£º
³ÌÐò2-9£º

Èç³ÌÐò2-9Ëùʾ£¬º¯ÊýconstantÓÐÎå¸ö²ÎÊý£¬·Ö±ðΪvalue£¬name£¬dtype£¬shapeºÍverify_shape¡£ÆäÖÐvalueΪ±ØÑ¡²ÎÊý£¬ÆäËü¾ùΪ¿ÉÑ¡²ÎÊý¡£ValueΪ³£Á¿µÄ¾ßÌåÖµ£¬¿ÉÒÔÊÇÒ»¸öÊý×Ö£¬Ò»Î¬ÏòÁ¿»òÊǶàά¾ØÕó¡£NameÊdz£Á¿µÄÃû×Ö£¬ÓÃÓÚÇø±ðÆäËü³£Á¿¡£DtypeÊdz£Á¿µÄÀàÐÍ£¬¾ßÌåÀàÐͿɲμûͼ2-2¡£ShapeÊÇÖ¸³£Á¿µÄά¶È£¬ÎÒÃÇ¿ÉÒÔ×ÔÐж¨Òå³£Á¿µÄά¶È¡£
verify_shapeÊÇÑéÖ¤shapeÊÇ·ñÕýÈ·£¬Ä¬ÈÏֵΪ¹Ø±Õ״̬(False)¡£Ò²¾ÍÊÇ˵µ±¸Ã²ÎÊýtrue״̬ʱ£¬¾Í»á¼ì²âÎÒÃÇËùдµÄ²ÎÊýshapeÊÇ·ñÓëvalueµÄÕæÊµshapeÒ»Ö£¬Èô²»Ò»Ö¾ͻᱨTypeError´íÎó¡£È磺ÉÏÀýÖеÄʵ¼ÊshapeΪ(2,0)£¬ÈôÎÒÃǽ«²ÎÊýÖеÄshapeÊôÐÔ¸ÄΪ(2,1)£¬³ÌÐò¾Í»á±¨ÈçÏ´íÎó£º
TypeError: Expected Tensor's shape: (2, 1), got (2,).
Tensorflow»¹ÌṩÁËһЩ³£¼û³£Á¿µÄ³õʼ»¯£¬È磺tf.zeros¡¢tf.ones¡¢tf.fill¡¢tf.linspace¡¢tf.rangeµÈ£¬¾ù¿ÉÒÔ¿ìËÙ³õʼ»¯Ò»Ð©³£Á¿¡£ÀýÈ磺ÎÒÃÇÏëÒª¿ìËÙ³õʼ»¯Nάȫ0µÄ¾ØÕó£¬ÎÒÃÇ¿ÉÒÔÀûÓÃtf.zeros½øÐгõʼ»¯£¬Èç³ÌÐò2-10Ëùʾ£º
³ÌÐò2-10£º

³ÌÐò2-10ÏòÎÒÃÇչʾÁËtf.zerosºÍtf.zeros_likeµÄÓ÷¨¡£ÆäËü³£¼û³£Á¿µÄ¾ßÌå³õʼ»¯Ó÷¨¿ÉÒԲο¼Tensorflow¹Ù·½Êֲᡣ
´ËÍ⣬Tensorflow»¹¿ÉÒÔÉú³ÉÒ»Ð©Ëæ»úµÄÕÅÁ¿£¬·½±ã¿ìËÙ³õʼ»¯Ò»Ð©Ëæ»úÖµ¡£È磺tf.random_normal()¡¢tf.truncated_normal()¡¢tf.random_uniform()¡¢tf.random_shuffle()µÈ¡£Èç³ÌÐò2-11Ëùʾ£¬ÎÒÃÇÒÔtf.random_normal()ΪÀý£¬À´¿´Ò»ÏÂËæ»úÕÅÁ¿µÄ¾ßÌåÓ÷¨£º
³ÌÐò2-11£º

Ëæ»úÕÅÁ¿random_normal()ÓÐshape¡¢mean¡¢stddev¡¢dtype¡¢seed¡¢nameÁù¸öÊôÐÔ¡£
shapeÊÇÖ¸ÕÅÁ¿µÄÐÎ×´£¬ÈçÉÏÊö³ÌÐòÊÇÉú³ÉÒ»¸ö2ÐÐ3ÁеÄtensor£»meanÊÇÖ¸Õý̬·Ö²¼µÄ¾ùÖµ£»stddevÊÇÖ¸ÕýÌ«·Ö²¼µÄ±ê×¼²î£»dtypeÊÇÖ¸Éú³ÉtensorµÄÊý¾ÝÀàÐÍ£»seedÊÇ·Ö·¢´´½¨µÄÒ»¸öËæ»úÖÖ×Ó£»¶ønameÊǸøÉú³ÉµÄËæ»úÕÅÁ¿ÃüÃû¡£
TensorflowÖÐµÄÆäËüËæ»úÕÅÁ¿µÄ¾ßÌåʹÓ÷½·¨ºÍÊôÐÔ½éÉÜ£¬¿ÉÒԲμûTensorflow¹Ù·½ÊֲᡣÕâÀォ²»ÔÚһһ׸Êö¡£
³ýÁ˳£Á¿constant()£¬±äÁ¿variable()Ò²ÊÇÔÚTensorflowÖо³£»á±»Óõ½µÄº¯Êý¡£±äÁ¿µÄ×÷ÓÃÊDZ£´æºÍ¸üвÎÊý¡£Ö´ÐÐͼģÐÍʱ£¬Ò»¶¨Òª¶Ô±äÁ¿½øÐгõʼ»¯£¬¾¹ý³õʼ»¯ºóµÄ±äÁ¿²ÅÄÜÄÃÀ´Ê¹ÓᣱäÁ¿µÄʹÓðüÀ¨´´½¨¡¢³õʼ»¯¡¢±£´æ¡¢¼ÓÔØµÈ²Ù×÷¡£Ê×ÏÈ£¬ÎÒÃÇͨ¹ý³ÌÐò2-12Á˽âһϱäÁ¿ÊÇÈçºÎ±»´´½¨µÄ£º
³ÌÐò2-12£º

³ÌÐò2-12չʾÁË´´½¨±äÁ¿µÄ¶àÖÖ·½Ê½¡£ÎÒÃÇ¿ÉÒ԰Ѻ¯Êývariable()Àí½âΪ¹¹Ô캯Êý£¬¹¹Ô캯ÊýµÄʹÓÃÐèÒª³õʼֵ£¬¶øÕâ¸ö³õʼֵÊÇÒ»¸öÈκÎÐÎ×´¡¢ÀàÐ͵ÄTensor¡£Ò²¾ÍÊÇ˵£¬ÎÒÃÇ
¼È¿ÉÒÔͨ¹ý´´½¨Êý×Ö±äÁ¿¡¢Ò»Î¬ÏòÁ¿¡¢¶þά¾ØÕó³õʼ»¯Tensor£¬Ò²¿ÉÒÔʹÓó£Á¿»òÊÇËæ»ú³£Á¿³õʼ»¯Tensor£¬À´Íê³É±äÁ¿µÄ´´½¨¡£
µ±ÎÒÃÇÍê³ÉÁ˱äÁ¿µÄ´´½¨£¬½ÓÏÂÀ´£¬ÎÒÃÇÒª¶Ô±äÁ¿½øÐгõʼ»¯¡£±äÁ¿ÔÚʹÓÃǰһ¶¨Òª½øÐгõʼ»¯£¬ÇÒ±äÁ¿µÄ³õʼ»¯±ØÐëÔÚÄ£ÐÍµÄÆäËü²Ù×÷ÔËÐÐ֮ǰÍê³É¡£Í¨³££¬±äÁ¿µÄ³õʼ»¯ÓÐÈýÖÖ·½Ê½£¬Èç³ÌÐò2-13Ëùʾ£º
³ÌÐò2-13£º

³ÌÐò2-13˵Ã÷Á˳õʼ»¯±äÁ¿µÄÈýÖÖ·½Ê½£º³õʼ»¯È«²¿±äÁ¿¡¢³õʼ»¯±äÁ¿µÄ×Ó¼¯ÒÔ¼°³õʼ»¯µ¥¸ö±äÁ¿¡£Ê×ÏÈ£¬global_variables_initializer()·½·¨ÊDz»¹ÜÈ«¾ÖÓжàÉÙ¸ö±äÁ¿£¬È«²¿½øÐгõʼ»¯£¬ÊÇ×î¼òµ¥Ò²ÊÇ×î³£ÓõÄÒ»ÖÖ·½Ê½£»variables_initializer()Êdzõʼ»¯±äÁ¿µÄ×Ó¼¯£¬Ïà±ÈÓÚÈ«²¿³õʼ»¯»¯µÄ·½Ê½¸ü¼Ó½ÚÔ¼Äڴ棻Variable()Êdzõʼ»¯µ¥¸ö±äÁ¿£¬º¯ÊýµÄ²ÎÊý±ãÊÇÒª³õʼ»¯µÄ±äÁ¿ÄÚÈÝ¡£Í¨¹ýÉÏÊöµÄÈýÖÖ·½Ê½£¬ÎÒÃDZã¿ÉÒÔʵÏÖ±äÁ¿µÄ³õʼ»¯£¬·ÅÐĵÄʹÓñäÁ¿ÁË¡£
ÎÒÃǾ³£ÔÚѵÁ·Ä£Ðͺó£¬Ï£Íû±£´æÑµÁ·µÄ½á¹û£¬ÒÔ±ãÏ´ÎÔÙʹÓûòÊÇ·½±ãÈÕºó²é¿´£¬Õâʱ¾ÍÓõ½ÁËTensorflow±äÁ¿µÄ±£´æ¡£±äÁ¿µÄ±£´æÊÇͨ¹ýtf.train.Saver()·½·¨´´½¨Ò»¸öSaver¹ÜÀíÆ÷£¬À´±£´æ¼ÆËãͼģÐÍÖеÄËùÓбäÁ¿¡£¾ßÌå´úÂëÈç³ÌÐò2-14Ëùʾ£º
³ÌÐò2-14£º

ÎÒÃÇҪעÒ⣬ÎÒÃǵĴ洢Îļþsave.ckptÊÇÒ»¸ö¶þ½øÖÆÎļþ£¬Saver´æ´¢Æ÷ÌṩÁËÏò¸Ã¶þ½øÖÆÎļþ±£´æ±äÁ¿ºÍ»Ö¸´±äÁ¿µÄ·½·¨¡£±£´æ±äÁ¿µÄ·½·¨¾ÍÊdzÌÐòÖеÄsave()·½·¨£¬±£´æµÄÄÚÈÝÊÇ´Ó±äÁ¿Ãûµ½tensorÖµµÄÓ³Éä¹ØÏµ¡£Íê³É¸Ã´æ´¢²Ù×÷ºó£¬»áÔÚ¶ÔӦĿ¼ÏÂÉú³ÉÈçͼ2-3ËùʾµÄÎļþ£º

ͼ2-3 ±£´æ±äÁ¿Éú³ÉµÄÏàÓ¦Îļþ
SaverÌṩÁËÒ»¸öÄÚÖõļÆÊýÆ÷×Ô¶¯ÎªcheckpointÎļþ±àºÅ¡£Õâ¾ÍÖ§³ÖѵÁ·Ä£ÐÍÔÚÈÎÒâ²½Öè¶à´Î±£´æ¡£´ËÍ⣬»¹¿ÉÒÔͨ¹ýglobal_step²ÎÊý×ÔÐжԱ£´æÎļþ½øÐбàºÅ£¬ÀýÈ磺global_step=2£¬Ôò±£´æ±äÁ¿µÄÎļþ¼ÐΪmodel.ckpt-2¡£
ÄÇÈçºÎ²ÅÄָܻ´±äÁ¿ÄØ£¿Ê×ÏÈ£¬ÎÒÃÇÒªÖªµÀÒ»¶¨ÒªÓúͱ£´æ±äÁ¿ÏàͬµÄSaver¶ÔÏóÀ´»Ö¸´±äÁ¿¡£Æä´Î£¬²»ÐèÒªÊÂÏȶԱäÁ¿½øÐгõʼ»¯¡£¾ßÌå´úÂëÈç³ÌÐò2-15Ëùʾ£º
³ÌÐò2-15£º

±¾³ÌÐòʾÀýÖУ¬ÎÒÃÇҪעÒ⣺±äÁ¿µÄ»ñÈ¡ÊÇͨ¹ýrestore()·½·¨£¬¸Ã·½·¨ÓÐÁ½¸ö²ÎÊý£¬·Ö±ðÊÇsessionºÍ»ñÈ¡±äÁ¿ÎļþµÄλÖá£ÎÒÃÇ»¹¿ÉÒÔͨ¹ýlatest_checkpoint()·½·¨£¬»ñÈ¡µ½¸ÃĿ¼ÏÂ×î½üÒ»´Î±£´æµÄÄ£ÐÍ¡£
ÒÔÉϾÍÊǶԱäÁ¿´´½¨¡¢³õʼ»¯¡¢±£´æ¡¢¼ÓÔØµÈ²Ù×÷µÄ½éÉÜ¡£´ËÍ⣬»¹ÓÐһЩÓë±äÁ¿Ïà¹ØµÄÖØÒªº¯Êý£¬È磺eval()µÈ¡£
ÈÏʶÁ˳£Á¿ºÍ±äÁ¿£¬TensorflowÖл¹ÓÐÒ»¸ö·Ç³£ÖØÒªµÄ³£Óú¯Êý¡ª¡ªplaceholder¡£placeholderÊÇÒ»¸öÊý¾Ý³õʼ»¯µÄÈÝÆ÷£¬ËüÓë±äÁ¿×î´óµÄ²»Í¬ÔÚÓÚplaceholder¶¨ÒåµÄÊÇÒ»¸öÄ£°å£¬ÕâÑùÎÒÃǾͿÉÒÔsessionÔËÐн׶Σ¬ÀûÓÃfeed_dictµÄ×Öµä½á¹¹¸øplaceholderÌî³ä¾ßÌåµÄÄÚÈÝ£¬¶øÎÞÐèÿ´Î¶¼Ìáǰ¶¨ÒåºÃ±äÁ¿µÄÖµ£¬´ó´óÌá¸ßÁË´úÂëµÄÀûÓÃÂÊ¡£PlaceholderµÄ¾ßÌåÓ÷¨Èç³ÌÐò2-16Ëùʾ£º
³ÌÐòÐò2-16£º

³ÌÐò2-16ÑÝʾÁËplaceholderռλ·ûµÄʹÓùý³Ì¡£Placeholder()·½·¨ÓÐdtype£¬shapeºÍnameÈý¸ö²ÎÊý¹¹³É¡£dtypeÊDZØÌî²ÎÊý£¬´ú±í´«ÈëvalueµÄÊý¾ÝÀàÐÍ£»shapeÊÇÑ¡Ìî²ÎÊý£¬´ú±í´«ÈëvalueµÄά¶È£»nameÒ²ÊÇÑ¡Ìî²ÎÊý£¬´ú±í´«ÈëvalueµÄÃû×Ö¡£ÎÒÃÇ¿ÉÒÔ°ÑÕâÈý¸ö²ÎÊý¿´×÷ΪÐβΣ¬ÔÚʹÓÃʱ´«Èë¾ßÌåµÄ³£Á¿Öµ¡£ÕâÒ²ÊÇplaceholder²»Í¬ÓÚ³£Á¿µÄµØ·½£¬Ëü²»¿ÉÒÔÖ±½ÓÄÃÀ´Ê¹Ó㬶øÊÇÐèÒªÓû§´«µÝ³£ÊýÖµ¡£
×îºó£¬TensorflowÖл¹ÓÐÒ»¸öÖØÒªµÄ¸ÅÄ¡ªfetch¡£FetchµÄº¬ÒåÊÇÖ¸¿ÉÒÔÔÚÒ»¸ö»á»°ÖÐͬʱÔËÐжà¸öop¡£Õâ¾Í·½±ãÎÒÃÇÔÚʵ¼ÊµÄ½¨Ä£¹ý³ÌÖУ¬Êä³öһЩÖмäµÄop£¬È¡»Ø¶à¸ötensor¡£FetchµÄ¾ßÌåÓ÷¨Èç³ÌÐò2-17Ëùʾ£º
³ÌÐò2-17£º

³ÌÐò2-17չʾÁËfetchµÄÓ÷¨£¬¼´ÎÒÃÇÀûÓÃsessionµÄrun()·½·¨Í¬Ê±È¡»Ø¶à¸ötensorÖµ£¬·½±ãÎÒÃDz鿴ÔËÐйý³ÌÖÐÿһ²½opµÄÊä³ö½á¹û¡£
³ÌÐò2-18£º

С½á£º±¾½ÚÖ¼ÔÚÈôó¼Òѧ»áTensorflowµÄ»ù´¡ÖªÊ¶£¬Îªºó±ßʵսµÄÕ½ڴòÏ»ù´¡¡£Ö÷Òª½²ÁËTensorflowµÄºËÐÄ¡ª¡ª¼ÆËãͼģÐÍ£¬ÈçºÎ¶¨ÒåͼģÐͺͼÆËãͼģÐÍ£»»¹½éÉÜÁËTensorµÄ¸ÅÄÒÔ¼°TensorflowÖеij£Á¿¡¢±äÁ¿¡¢Õ¼Î»·û¡¢feedµÈ֪ʶµã¡£´ó¼Ò¶¼ÕÆÎÕÁËÂ𣿠|