±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË Ê¹ÓÃTensorBoardչʾÊý¾Ý,½«¸÷ÖÖÀàÐ͵ÄÊý¾Ý»ã×ܲ¢¼Ç¼µ½ÈÕÖ¾ÎļþÖÐ,×îºó½«¼ÆËãͼÖеÄͼ±ê½øÐÐ×ܽá.Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£
|
|
TensorBoardÊÇTensorflowµÄ¿ÉÊÓ»¯¹¤¾ß£¬Ëüͨ¹ý¶ÔTensoflow³ÌÐòÔËÐйý³ÌÖÐÊä³öµÄÈÕÖ¾Îļþ½øÐпÉÊÓ»¯Tensorflow³ÌÐòµÄÔËÐÐ״̬¡£
ʹÓÃTensorBoardչʾÊý¾Ý£¬ÐèÒªÔÚÖ´ÐÐTensorflow¼ÆËãͼµÄ¹ý³ÌÖУ¬½«¸÷ÖÖÀàÐ͵ÄÊý¾Ý£¨summary
protobuf£©»ã×ܲ¢¼Ç¼µ½ÈÕÖ¾ÎļþÖС£È»ºóʹÓÃTensorBoard¶ÁÈ¡ÕâЩÈÕÖ¾Îļþ£¬½âÎöÊý¾Ý²¢Éú²úÊý¾Ý¿ÉÊÓ»¯µÄWebÒ³Ãæ£¬ÈÃÎÒÃÇ¿ÉÒÔÔÚä¯ÀÀÆ÷Öй۲ì¸÷ÖÖ»ã×ÜÊý¾Ý¡£
×¢£ºtensorflow --version 1.4.0
TensorBoard
µ±Éú³ÉÁËÈÕÖ¾Îļþºó£¬ÔÚÃüÁîÐÐÖÐʹÓÃtensorboard --logdir=ÈÕÖ¾ÎļþĿ¼Æô¶¯Ò»¸ö·þÎñ£¬ÔÚä¯ÀÀÆ÷ÖÐʹÓÃhttp://DESKTOP-JGL4HV5:6006²é¿´¿ÉÊÓ»¯½á¹û¡£
ÕâÀïÓÐÒ»µãÐèҪעÒ⣬ÈÕÖ¾ÎļþĿ¼ҪʹÓþø¶Ô·¾¶£¬¼´´Óij¸öÅÌ¿ªÊ¼µÄ·¾¶£¨Èç¹û²»Ðеϰ½«/±ä³É//ÔÙÊÔÊÔ£©¡£Í¬Ê±Ê¹ÓÃ360ä¯ÀÀÆ÷¿ÉÄÜÎÞ·¨ÏÔʾ¡£
ÏÂÃæºì¿òÖÐÊÇ¿ÉÊÓ»¯µÄ¶¥²¿£º

TensorBoardÒ³Ãæ
SCALARS£¬¶Ô±êÁ¿Êý¾Ý½øÐлã×ܺͼǼ
ʹÓ÷½·¨£ºtf.summary.scalar(tags, values,
collections=None, name=None)

scalar
Ò»°ãÔÚ¿Ì»lossºÍaccuracyʱ»áÓõ½£¬¿ÉÒÔ¼ÆËã±êÁ¿µÄ×î´ó×îСֵ»òÕß±ê×¼²îµÈ
IMAGES£¬ »ã×ÜÊý¾ÝÖеÄͼÏñ£¬ÀýÈçMNISTÖпÉÒÔ½«ÊäÈëµÄÏòÁ¿»¹Ô³ÉͼƬµÄÏñËØ¾ØÕó
ʹÓ÷½·¨£ºtf.summary.image(tag, tensor, max_images=3, collections=None,
name=None)

GRAPHS£¬ ¿ÉÊÓ»¯Tensorflow¼ÆËãͼµÄ½á¹¹¼°¼ÆËãͼÉϵÄÐÅÏ¢
ʹÓ÷½·¨£ºtf.summary.FileWriter(logdir, graph)
ÆäʵÕâ¸ö·½·¨Êǽ«µ±Ç°summary protobufд½üÈÕÖ¾ÎļþÖУ¬µ«ÊÇ»á×Ô¶¯Éú³É¼ÆËãͼ¡£
HISTOGRAMS£¬¼Ç¼±äÁ¿µÄÖ±·½Í¼(ÕÅÁ¿ÖÐÔªËØµÄȡֵ·Ö²¼£©
ʹÓ÷½·¨£ºtf.summary.histogram(tag, values, collections=None,
name=None£©

¼ÆËãͼ
¼ÆËãͼ¿ÉÒԺܺÃÕ¹ÏÖÕû¸öÉñ¾ÍøÂçµÄ½á¹¹¡£ÏÂÀ´½«¼ÆËãͼÖеÄͼ±ê½øÐÐ×ܽ᣺
±ß£¬¼ÆËãͼÖеĽڵãÖ®¼äÓÐÁ½ÖÖ²»Í¬µÄ±ß£º
ʵÏߣº¿Ì»ÁËÊý¾ÝµÄ´«Ê䣬¼ýÍ·´ú±í·½Ïò
ÐéÏߣº±í´ïÁ˼ÆËãÖ®¼äµÄÒÀÀµ¹ØÏµ
ÓÐЩ±ßÉϵļýÍ·ÊÇË«ÏòµÄ±íʾһ¸ö½Úµã¿ÉÄÜ»áÐÞ¸ÄÁíÒ»¸ö½Úµã£¬Í¬Ê±±ßÉÏ»¹±ê×¢ÁËÕÅÁ¿µÄά¶ÈÐÅÏ¢£¬±ßÉϵĴÖϸ±íʾÁËÁ½¸ö½ÚµãÖ®¼ä´«ÊäµÄ±êÁ¿Î¬¶ÈµÄ×Ü´óС£¨²»ÊÇ´«ÊäµÄ±êÁ¿¸öÊý£©¡£
ͼ£¬ TensorBoard»áÖÇÄܵĵ÷Õû¿ÉÊÓ»¯Ð§¹ûͼÉϵĽڵ㣬½«¼ÆËãͼ·Ö³ÉÁËÖ÷ͼ£¨Main Graph£©ºÍ¸¨Öúͼ£¨Auxiliary
nodes£©¡£Ò²¿ÉÒÔÊÖ¶¯µ÷Õû£¬¶ÔͼÖÐµÄ½Úµã½øÐÐÒÆ³ý£¨²»»á±£´æÊÖ¹¤Ð޸Ľá¹û£¬Ë¢Ðºó»¹Ô£©¡£
½Úµã£¬µ±µã»÷¿ÉÊÓ»¯Í¼ÖеĽڵãʱ£¬½çÃæÓÒÉϽǻᵯ³ö¸Ã½ÚµãµÄ»ù±¾ÐÅÏ¢£¨ÊäÈë¡¢Êä³ö¡¢ÒÀÀµ¹ØÏµÒÔ¼°ÏûºÄʱ¼äºÍÄÚ´æÐÅÏ¢µÈ£©¡£
¿ÕÐÄСÍÖÔ²£º¶ÔÓ¦¼ÆËãͼÉÏÒ»¸ö¼ÆËã½Úµã
¾ØÐΣº¶ÔÓ¦Á˼ÆËãͼÉϵÄÒ»¸öÃüÃû¿Õ¼ä
½ÚµãÐÅÏ¢
¸Õ˵½ÚµãµÄ»ù±¾ÐÅÏ¢Öаüº¬ÏûºÄʱ¼äºÍÄÚ´æÐÅÏ¢£¬¿ÉÒÔͨ¹ýÒÔÏ·½·¨½«ÆäÌí¼Óµ½ÈÕÖ¾Îļþ²¢½øÐÐչʾ¡£
for i in range(TRAINING_STEPS):
# ÿ1000´Î¾ÍÔÚÑéÖ¤¼¯ÉϲâÊÔѵÁ·µÄÄ£Ð;«¶È
if i % 100 == 0:
# ÅäÖÃÔËÐÐʱҪ¼Ç¼µÄÐÅÏ¢
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
# ÔËÐÐʱ¼Ç¼ÔËÐÐÐÅÏ¢µÄproto
run_metadata = tf.RunMetadata()
# ½«ÅäÖÃÐÅÏ¢ºÍÔËÐмǼÐÅÏ¢µÄproto´«ÈëÔËÐйý³Ì£¬´Ó¶ø½øÐмǼ
validate_acc, sum = sess.run([accuracy, summ],
feed_dict=validate_feed, options=run_options,
run_metadata=run_metadata)
# ½«½ÚµãµÄÔËÐÐÐÅϢдÈëÈÕÖ¾Îļþ
writer.add_run_metadata(run_metadata, 'step%03d'
% i) |
ÔÚTensorBoard¿ÉÊÓ»¯µÄGraphsÒ³ÃæÖУ¬×ó²àµÄSession
runs»á³öÏÖÒ»¸öÏÂÀ²Ëµ¥£¬¼Ç¼ÁËËùÓÐÔËÐдÎÊý£¬Ñ¡ÔñÒ»´ÎÔËÐкó£¬ColorÀ¸Öлá³öÏÖCompute
timeºÍMemory£¬·Ö±ð¶ÔÓ¦Á˼ÆËã½ÚµãµÄÔËÐÐʱ¼äºÍÏûºÄµÄÄÚ´æ¡£

GRAPHSµÄ×ó±ß¿ò
merge_all()
ºÍTensorflowÀàËÆ£¬tf.summaru.histograms()µÈº¯Êý²»»áÁ¢¼´Ö´ÐУ¬ÐèҪͨ¹ýsess.run()À´Ã÷È·µ÷Ó㬵±ÈÕÖ¾³ÌÐòÖж¨ÒåдÈÕÖ¾µÄ²Ù×÷±È½Ï¶àʱ£¬¿ÉÒÔʹÓÃsumm
= tf.summary.merge_all()º¯ÊýÀ´ÕûÀíËùÓеÄÈÕÖ¾Éú³É²Ù×÷£¬×îºóÖ»ÐèÒªsess.run(summ)¼´¿É½«¶¨ÒåÖеÄËùÓÐÈÕÖ¾Éú³É²Ù×÷Ò»´ÎÖ´ÐС£
TensorBoardµÄʹÓÃÁ÷³Ì
Ìí¼Ó¼Ç¼½Úµã£ºtf.summary.scalar/image/histogram()µÈ
»ã×ܼǼ½Úµã£ºmerged = tf.summary.merge_all()
ÔËÐлã×ܽڵ㣺summary = sess.run(merged)£¬µÃµ½»ã×ܽá¹û
ÈÕÖ¾ÊéдÆ÷ʵÀý»¯£ºsummary_writer = tf.summary.FileWriter(logdir,
graph=sess.graph)£¬ÊµÀý»¯µÄͬʱ´«Èë graph ½«µ±Ç°¼ÆËãͼдÈëÈÕÖ¾
µ÷ÓÃÈÕÖ¾ÊéдÆ÷ʵÀý¶ÔÏósummary_writerµÄadd_summary(summary, global_step=i)·½·¨½«ËùÓлã×ÜÈÕ־дÈëÎļþ
µ÷ÓÃÈÕÖ¾ÊéдÆ÷ʵÀý¶ÔÏósummary_writerµÄclose()·½·¨Ð´ÈëÄڴ棬·ñÔòËüÿ¸ô120sдÈëÒ»´Î
ÏÂÃæÊÇÒ»¸öÍêÕûµÄʹÓÃTensorBoardµÄ´úÂ룺
# _*_ coding:utf-8
_*_
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import
input_data # ¶¨ÒåÉñ¾ÍøÂçµÄÉñ¾ÔªÊýÄ¿
INPUT_NODE = 784
LAYER1_NODE = 500
OUTPUT_NODE = 10 # ÿ´ÎѵÁ·Êý¾ÝµÄ¸öÊý
BATCH_SIZE = 100 # Ë¥¼õѧϰÂʵIJÎÊý
LEARNING_RATE_BASE = 0.8
LEARNING_RATE_DECAY = 0.99
# ÕýÔò»¯ÏîµÄϵÊý |
|