網站首頁 編程語言 正文
tensorboard常用于更直觀的觀察數據在神經網絡中的變化,或者用于觀測已經構建完成的神經網絡的結構。其有助于我們更加方便的去觀測tensorflow神經網絡的搭建情況以及執行情況。
tensorboard相關函數及其常用參數設置
tensorboard相關函數代碼真的好多啊。難道都要背下來嗎!
不需要!只要收藏了來這里復制粘貼就可以了。常用的只有七個!
1 with tf.name_scope(layer_name):
TensorFlow中的name_scope函數的作用是創建一個參數名稱空間。這個空間里包括許多參數,每個參數有不同的名字,這樣可以更好的管理參數空間,防止變量命名時產生沖突。
利用該函數可以生成相對應的神經網絡結構圖。
該函數支持嵌套。
在該標題中,該參數名稱空間空間的名字為layer_name。
2 tf.summary.histogram(layer_name+"/biases",biases)
該函數用于將變量記錄到tensorboard中。用來顯示直方圖信息。
一般用來顯示訓練過程中變量的分布情況。
在該標題中,biases的直方圖信息被記錄到tensorboard的layer_name+"/biases"中。
3 tf.summary.scalar(“loss”,loss)
用來進行標量信息的可視化與顯示。
一般在畫loss曲線和accuary曲線時會用到這個函數。
在該標題中,loss的標量信息被記錄到tensorboard的"loss"中。
4 tf.summary.merge_all()
將之前定義的所有summary整合在一起。
tf.summary.scalar、tf.summary.histogram、tf.summary.image在定義的時候,也不會立即執行,需要通過sess.run來明確調用這些函數。因為,在一個程序中定義的寫日志操作比較多,如果一一調用,將會十分麻煩,所以Tensorflow提供了tf.summary.merge_all()函數將所有的summary整理在一起。
在TensorFlow程序執行的時候,只需要運行這一個操作就可以將代碼中定義的所有寫summary內容執行一次,從而將所有的summary內容寫入。
5 tf.summary.FileWriter(“logs/”,sess.graph)
將summary內容寫入磁盤文件,FileWriter類提供了一種用于在給定目錄下創建事件文件的機制,并且將summary數據寫入硬盤。
在該標題中,summary數據被寫入logs文件夾中。
6 write.add_summary(result,i)
該函數成立前提為:
write = tf.summary.FileWriter("logs/",sess.graph)
add_summary是tf.summary.FileWriter父類中的成員函數;添加summary內容到事件文件,寫入事件文件。
在該標題中,result是tf.summary.merge_all()執行的結果,i表示世代數。
7 tensorboard --logdir=logs
該函數用于cmd命令行中。用于生成tensorboard觀測網頁。
例子
該例子為手寫體識別例子。
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data",one_hot = "true")
def add_layer(inputs,in_size,out_size,n_layer,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]),name = "Weights")
tf.summary.histogram(layer_name+"/weights",Weights)
with tf.name_scope("biases"):
biases = tf.Variable(tf.zeros([1,out_size]) + 0.1,name = "biases")
tf.summary.histogram(layer_name+"/biases",biases)
with tf.name_scope("Wx_plus_b"):
Wx_plus_b = tf.matmul(inputs,Weights) + biases
tf.summary.histogram(layer_name+"/Wx_plus_b",Wx_plus_b)
if activation_function == None :
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
tf.summary.histogram(layer_name+"/outputs",outputs)
return outputs
def compute_accuracy(x_data,y_data):
global prediction
y_pre = sess.run(prediction,feed_dict={xs:x_data})
correct_prediction = tf.equal(tf.arg_max(y_data,1),tf.arg_max(y_pre,1)) #判斷是否相等
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) #賦予float32數據類型,求平均。
result = sess.run(accuracy,feed_dict = {xs:batch_xs,ys:batch_ys}) #執行
return result
xs = tf.placeholder(tf.float32,[None,784])
ys = tf.placeholder(tf.float32,[None,10])
layer1 = add_layer(xs,784,150,"layer1",activation_function = tf.nn.tanh)
prediction = add_layer(layer1,150,10,"layer2")
with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=ys,logits = prediction),name = 'loss')
#label是標簽,logits是預測值,交叉熵。
tf.summary.scalar("loss",loss)
train = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
init = tf.initialize_all_variables()
merged = tf.summary.merge_all()
with tf.Session() as sess:
sess.run(init)
write = tf.summary.FileWriter("logs/",sess.graph)
for i in range(5001):
batch_xs,batch_ys = mnist.train.next_batch(100)
sess.run(train,feed_dict = {xs:batch_xs,ys:batch_ys})
if i % 1000 == 0:
print("訓練%d次的識別率為:%f。"%((i+1),compute_accuracy(mnist.test.images,mnist.test.labels)))
result = sess.run(merged,feed_dict={xs:batch_xs,ys:batch_ys})
write.add_summary(result,i)
該例子執行結果為:
結構圖:
LOSS值:
weights,biases的直方圖分布:
原文鏈接:https://blog.csdn.net/weixin_44791964/article/details/96633035
相關推薦
- 2023-04-07 Android開發基礎簡化Toast調用方法詳解_Android
- 2023-01-05 Python?optparse模塊及簡單使用_python
- 2022-12-12 flutter?InheritedWidget使用方法總結_Android
- 2022-08-03 python如何實現排序,并標上序號_python
- 2022-11-14 python中numpy?常用操作總結_python
- 2022-09-25 Linux安裝Nginx詳細教程
- 2022-08-17 create-react-app項目配置全解析_React
- 2022-07-04 linux?shell?解析命令行參數及while?getopts用法小結_linux shell
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支