tf好朋友之tensorboard的使用

2021-09-27 05:33:01 字數 4071 閱讀 1932

tensorboard常用於更直觀的觀察資料在神經網路中的變化,或者用於觀測已經構建完成的神經網路的結構。其有助於我們更加方便的去觀測tensorflow神經網路的搭建情況以及執**況。

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=)

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 = ) #執行

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 = )

if i % 1000 == 0:

print("訓練%d次的識別率為:%f。"%((i+1),compute_accuracy(mnist.test.images,mnist.test.labels)))

result = sess.run(merged,feed_dict=)

write.add_summary(result,i)

該例子執行結果為:

結構圖:

loss值:

weights,biases的直方圖分布

並查集 好朋友

天勤書上一道題,很簡潔的展現了並查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友.要你分組使組內都是好朋友,組外都不是好朋友。資料量比較小,很水,路徑壓縮不考慮也沒問題。includeusing namespace std define max 200 int father max bool...

我的好朋友,秀雲

早上起來前,居然夢見秀雲了.夢的套路很老套,我遇到困難了,她主動給我想辦法,提建議.其實也不是很重要的事情,怎麼她居然出現了呢?看來,秀雲的熱心主動,已經是乙個標誌了.秀雲是我的大學同學,她是有點兒俠肝義膽的那種人,也喜歡給人講題,人緣很好.我現在給別人講題,估計也有她的一部分影響.畢業後,她和老公...

SEO該是UED的好朋友

網際網路的ued因網路而存在,我們所做的所有 互動 都是要通過google 和世界連線起來。白鴉雲 seo是ued的最大敵人 但,如果我們的設計不重視seo,就會在google上淘汰,如果你通過網路營銷,當目標顧客在搜尋你的產品或服務的時候沒有找到你,那獲利的可能是你的競爭對手。所以沒有意義去爭論s...