日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结

發布時間:2024/1/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Tensorboard:

如何更直觀的觀察數據在神經網絡中的變化,或是已經構建的神經網絡的結構。上一篇文章說到,可以使用matplotlib第三方可視化,來進行一定程度上的可視化。然而Tensorflow也自帶了可視化模塊Tensorboard,并且能更直觀的看見整個神經網絡的結構。
上面的結構圖甚至可以展開,變成:

如何在event文件中添加自己想要可視化的數據:
a.定義summary operation:
tf.scaler_summary:用來添加一些標量,比如 lr,loss,accuracy ,etc
tf.image_summary:用來添加一些進入graph的輸入圖片
tf.histogram_summary:用來統計激活分布,梯度分布,權重分布
tf.audio_summary:
比如:
tf.scalar_summary('標簽',想要記錄的變量) ?
b.定義一個op來將所有的summary operation 合并起來
merged = tf.merge_all_summaries() ?
c.使用graph初始化一個summary_writer
train_writer = tf.train.SummaryWriter(FLAGS.summaries_dir + '/train',sess.graph)??????? ?
d.每隔n step將summary寫入
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))????????? ?
train_writer.add_summary(summary, i)?

使用:

結構圖:
  • with?tensorflow?.name_scope(layer_name):??
  • 直接使用以上代碼生成一個帶可展開符號的一個域,并且支持嵌套操作:
  • with?tf.name_scope(layer_name):??
  • ????with?tf.name_scope('weights'):??
  • 節點一般是變量或常量,需要加一個“name=‘’”參數,才會展示和命名,如:
  • with?tf.name_scope('weights'):??
  • ????Weights?=?tf.Variable(tf.random_normal([in_size,out_size]))??


  • 結構圖符號及意義:


    變量: 變量則可使用Tensorflow.histogram_summary()方法:
  • tf.histogram_summary(layer_name+"/weights",Weights)?#name命名,Weights賦值??


  • 常量: 常量則可使用Tensorflow.scalar_summary()方法:
  • tf.scalar_summary('loss',loss)?#命名和賦值??

  • 展示: 最后需要整合和存儲SummaryWriter:
  • #合并到Summary中??
  • merged?=?tf.merge_all_summaries()??
  • #選定可視化存儲目錄??
  • writer?=?tf.train.SummaryWriter("/目錄",sess.graph)??
  • merged也是需要run的,因此還需要:
  • result?=?sess.run(merged)?#merged也是需要run的??
  • ????writer.add_summary(result,i)??

  • 執行: 運行后,會在相應的目錄里生成一個文件,執行:
  • tensorboard?--logdir="/目錄"??
  • 會給出一段網址: 瀏覽器中打開這個網址即可,因為有兼容問題,firefox并不能很好的兼容,建議使用Chrome。

    常量在Event中,結構圖在Graphs中,變量在最后兩個Tag中。

    附項目代碼:

    項目承接自上一篇文章(已更新至最新Tensorflow版本API r1.2):
  • import?tensorflow?as?tf????
  • import?numpy?as?np????
  • ????
  • def?add_layer(inputs,in_size,out_size,n_layer,activation_function=None):?#activation_function=None線性函數????
  • ????layer_name="layer%s"?%?n_layer????
  • ????with?tf.name_scope(layer_name):????
  • ????????with?tf.name_scope('weights'):????
  • ????????????Weights?=?tf.Variable(tf.random_normal([in_size,out_size]))?#Weight中都是隨機變量????
  • ????????????tf.summary.histogram(layer_name+"/weights",Weights)?#可視化觀看變量????
  • ????????with?tf.name_scope('biases'):????
  • ????????????biases?=?tf.Variable(tf.zeros([1,out_size])+0.1)?#biases推薦初始值不為0????
  • ????????????tf.summary.histogram(layer_name+"/biases",biases)?#可視化觀看變量????
  • ????????with?tf.name_scope('Wx_plus_b'):????
  • ????????????Wx_plus_b?=?tf.matmul(inputs,Weights)+biases?#inputs*Weight+biases????
  • ????????????tf.summary.histogram(layer_name+"/Wx_plus_b",Wx_plus_b)?#可視化觀看變量????
  • ????????if?activation_function?is?None:????
  • ????????????outputs?=?Wx_plus_b????
  • ????????else:????
  • ????????????outputs?=?activation_function(Wx_plus_b)????
  • ????????tf.summary.histogram(layer_name+"/outputs",outputs)?#可視化觀看變量????
  • ????????return?outputs????
  • ????
  • #創建數據x_data,y_data????
  • x_data?=?np.linspace(-1,1,300)[:,np.newaxis]?#[-1,1]區間,300個單位,np.newaxis增加維度????
  • noise?=?np.random.normal(0,0.05,x_data.shape)?#噪點????
  • y_data?=?np.square(x_data)-0.5+noise????
  • ????
  • with?tf.name_scope('inputs'):?#結構化????
  • ????xs?=?tf.placeholder(tf.float32,[None,1],name='x_input')????
  • ????ys?=?tf.placeholder(tf.float32,[None,1],name='y_input')????
  • ????
  • #三層神經,輸入層(1個神經元),隱藏層(10神經元),輸出層(1個神經元)????
  • l1?=?add_layer(xs,1,10,n_layer=1,activation_function=tf.nn.relu)?#隱藏層????
  • prediction?=?add_layer(l1,10,1,n_layer=2,activation_function=None)?#輸出層????
  • ????
  • #predition值與y_data差別????
  • with?tf.name_scope('loss'):????
  • ????loss?=?tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))?#square()平方,sum()求和,mean()平均值????
  • ????tf.summary.scalar('loss',loss)?#可視化觀看常量????
  • with?tf.name_scope('train'):????
  • ????train_step?=?tf.train.GradientDescentOptimizer(0.1).minimize(loss)?#0.1學習效率,minimize(loss)減小loss誤差????
  • ????
  • init?=?tf.initialize_all_variables()????
  • sess?=?tf.Session()????
  • #合并到Summary中????
  • merged?=?tf.summary.merge_all()????
  • #選定可視化存儲目錄????
  • writer?=?tf.summary.FileWriter("Desktop/",sess.graph)????
  • sess.run(init)?#先執行init????
  • ????
  • #訓練1k次????
  • for?i?in?range(1000):????
  • ????sess.run(train_step,feed_dict={xs:x_data,ys:y_data})????
  • ????if?i%50==0:????
  • ????????result?=?sess.run(merged,feed_dict={xs:x_data,ys:y_data})?#merged也是需要run的????
  • ????????writer.add_summary(result,i)?#result是summary類型的,需要放入writer中,i步數(x軸)???

  • 總結

    以上是生活随笔為你收集整理的TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。