您當前的位置:首頁 > 書法

使用Tensorflow時的爽物之Tensorboard

作者:由 Subray 發表于 書法時間:2017-04-06

前期準備

Tensorflow(Mac老司機踩坑記錄:在Mac上安裝Tensorflow的注意點 - 知乎專欄)

一點可以跑的TF程式碼(

https://

gist。github。com/moshouj

ingli/384b8b4e624d4a846fc26c8e5076a9ca

目的

使用Tensorflow自帶的工具進行權重分佈檢視,網路連結展示,loss隨迭代變化曲線。

使用

文章開頭提到的程式碼執行結束後,執行

tensorboard ——logdir=‘。/graph’

得到幾個視覺化頁面的截圖

顯示網路圖

使用Tensorflow時的爽物之Tensorboard

使用Tensorflow時的爽物之Tensorboard

選擇一個點進去可以看到細節

使用Tensorflow時的爽物之Tensorboard

顯示權重分佈

使用Tensorflow時的爽物之Tensorboard

使用Tensorflow時的爽物之Tensorboard

三維顯示

使用Tensorflow時的爽物之Tensorboard

使用Tensorflow時的爽物之Tensorboard

顯示loss變化

使用Tensorflow時的爽物之Tensorboard

使用Tensorflow時的爽物之Tensorboard

用法

老版本的Tensorboard系列API是以tf。xxx_summary這種方法定義的,在1。0版本釋出後,summary被定義為operation的一種,因此呼叫變為:

http://

tf。summary。xxx

, 例如原先的tf。scalar_summary()介面現在為tf。summary。scalar()。

Tensorboard本質上是把執行中資訊儲存在一個資料夾下,然後用web方式開啟進行展示。所以一般的使用方法如下:

def

graphDef

():

## some other work

## 把一些ops整合到一個name scope下,最後生成的圖比較清楚

with

tf

name_scope

“layer_out”

):

w_o

=

init_weights

([

64

2

],

“w_o”

b_o

=

init_weights

([

2

],

“b_o”

py_x

=

tf

nn

softmax

tf

matmul

ho

w_o

+

b_o

## 定義圖的時候儲存一些中間結果

tf

summary

histogram

‘h1/weights’

w_2

tf

summary

scalar

‘loss’

cost

## summary 也是個op 所以也需要run

writer

=

tf

summary

FileWriter

‘。/graph’

sess

graph

merged

=

tf

summary

merge_all

()

## 合併定義圖時的記錄操作,並計算

for

i

in

range

step

):

## some other work

result

=

sess

run

merged

feed_dict

=

{

X

batchX

Y

batchY

})

## 把計算結果和step繫結(用來畫圖)

writer

add_summary

result

i

writer

close

()

常用的幾個API用法:

# 記錄一個tensor,之後產出這個tensor中元素的直方圖和分佈隨迭代次數i之間的關係,支援二級名稱

tf

summary

histogram

‘name/sub_name’

weight_tensor

# 記錄一個標量,之後產出這個標量和迭代次數i之間關係的曲線圖

tf

summary

scalar

‘name/sub_name’

scalar_val

# 指定輸出資料夾路徑以及對應的計算圖,之後產出此計算圖的圖形化展示

writer

=

tf

summary

FileWriter

‘。/graph’

sess

graph

# 定例搞法,一般在一個迴圈裡操作,i是需要把上面標量和分佈去繫結的迭代次數

merged

=

tf

summary

merge_all

()

result

=

sess

run

merged

writer

add_summary

result

i

總結

用Tensorflow搞了個大新聞之後可以考慮用graph來視覺化計算圖和中間關鍵值的變化。

如果發現有一些層連結的關係比較噁心,可以考慮用name_scope簡化顯示,

標簽: Summary  tf  ##  name  graph