自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【深度學(xué)習(xí)系列】PaddlePaddle可視化之VisualDL

企業(yè)動態(tài)
上篇文章我們講了如何對模型進行可視化,用的keras手動繪圖輸出CNN訓(xùn)練的中途結(jié)果,本篇文章將講述如何用PaddlePaddle新開源的VisualDL來進行可視化。

上篇文章我們講了如何對模型進行可視化,用的keras手動繪圖輸出CNN訓(xùn)練的中途結(jié)果,本篇文章將講述如何用PaddlePaddle新開源的VisualDL來進行可視化。在講VisualDL之前,我們先了解一下常用的Tensorflow的可視化工具---Tensorboard。


Tensorflow的可視化

  Tensorboard是Tensorflow自帶的可視化模塊,我們可以通過Tensorboard直觀的查看神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),訓(xùn)練的收斂情況等。要想掌握Tensorboard,我們需要知道一下幾點:

  • 支持的數(shù)據(jù)形式
  • 具體的可視化過程
  • 如何對一個實例使用Tensorboard

  數(shù)據(jù)形式 

(1)標量Scalars 
(2)圖片Images 
(3)音頻Audio 
(4)計算圖Graph 
(5)數(shù)據(jù)分布Distribution 
(6)直方圖Histograms 
(7)嵌入向量Embeddings

   可視化過程

(1)建立一個graph。
(2)確定在graph中的不同節(jié)點設(shè)置summary operations。
(3)將(2)中的所有summary operations合并成一個節(jié)點,運行合并后的節(jié)點。
(4)使用tf.summary.FileWriter將運行后輸出的數(shù)據(jù)都保存到本地磁盤中。
(5)運行整個程序,并在命令行輸入運行tensorboard的指令,打開web端可查看可視化的結(jié)果

   使用Tensorborad的實例

  這里我就不講的特別詳細啦,如果用過Tensorflow的同學(xué)其實很好理解,只需要在平時寫的程序后面設(shè)置summary,tf.summary.scalar記錄標量,tf.summary.histogram記錄數(shù)據(jù)的直方圖等等,然后正常訓(xùn)練,***把所有的summary合并成一個節(jié)點,存放到一個地址下面,在linux界面輸入一下代碼:

tensorboard --logdir=‘存放的總summary節(jié)點的地址’

  然后會出現(xiàn)以下信息:

1 Starting TensorBoard 41 on port 6006
2 (You can navigate to http://127.0.1.1:6006)

  將http://127.0.1.1:6006在瀏覽器中打開,就可以看到web端的可視化了

 

  具體的參數(shù)表示的含義可以參照官網(wǎng)的解釋

 


MXNet的可視化

  MXNet的可視化之前一直使用mx.viz.plot_network來構(gòu)建一個神經(jīng)網(wǎng)絡(luò)圖,但是后來有一位阿里的同學(xué)把tensorboard封裝在了mxnet里,具體可以參照https://github.com/dmlc/tensorboard,可以對照他寫的這篇文章來看Bring TensorBoard to MXNet。

  ps:這個功能好像去年年初他們就開始搞了,看到他發(fā)的朋友圈才知道沒過幾個月就上線了,真效率,喜歡mxnet的同學(xué)可以嘗試一下。

 


PaddlePaddle的可視化--EventHandler 

  在PaddlePaddle發(fā)布VisualDL之前,我一直是用event_handler來可視化訓(xùn)練的收斂情況。我找了一段之前寫的一個類里的小代碼來展示如何使用event_handler

 
 1 def start_trainer(self,X_train,Y_train,X_val,Y_val):
 2         #獲得訓(xùn)練器
 3         trainer = self.get_trainer()
 4 
 5         result_lists = []
 6         def event_handler(event):
 7             if isinstance(event, paddle.event.EndIteration):
 8                 if event.batch_id % 10 == 0:
 9                     print "\nPass %d, Batch %d, Cost %f, %s" % (
10                         event.pass_id, event.batch_id, event.cost, event.metrics)
11             if isinstance(event, paddle.event.EndPass):
12                     # 保存訓(xùn)練好的參數(shù)
13                 with open('params_pass_%d.tar' % event.pass_id, 'w') as f:
14                     parameters.to_tar(f)
15                 # feeding = ['x','y']
16                 result = trainer.test(
17                         reader=val_reader)
18                             # feeding=feeding)
19                 print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics)
20 
21                 result_lists.append((event.pass_id, result.cost,
22                         result.metrics['classification_error_evaluator']))
23 
24         # 開始訓(xùn)練
25         train_reader = paddle.batch(paddle.reader.shuffle(
26                 reador.reader_creator(X_train,Y_train),buf_size=200),
27                 batch_size=16)
28 
29         val_reader = paddle.batch(paddle.reader.shuffle(
30                 reador.reader_creator(X_val,Y_val),buf_size=200),
31                 batch_size=16)
32 
33         trainer.train(reader=train_reader,num_passes=20,event_handler=event_handler)
34 
35     #找到訓(xùn)練誤差最小的一次結(jié)果
36     best = sorted(result_lists, key=lambda list: float(list[1]))[0]
37         print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1])
38         print 'The classification accuracy is %.2f%%' % (100 - float(best[2]) * 100)
 

  trainer = self.get_trainer()不用管,因為之前寫的一個函數(shù)叫g(shù)et_trainer,你可以先定義trainer,然后放在這里,后面設(shè)一個空列表存放每次訓(xùn)練的結(jié)果,我這個代碼里叫result_lists,然后定義event_handler函數(shù),在開始訓(xùn)練,這樣每次訓(xùn)練的結(jié)果都會傳入result_lists這個列表里面,***進行排序,把***結(jié)果放到best里,輸出就可以。***用event_handler_plot畫圖,輸出如下收斂的圖:

  但是這樣不能觀察到神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中的每個神經(jīng)元的具體變化情況,不如tensorboard的功能多,只能看到我們在訓(xùn)練過程中的loss下降的情況,訓(xùn)練是否收斂等。


PaddlePaddle的新版可視化工具--VisualDL

  大概就在上周,1.16日,PaddlePaddle和Echarts團隊練手打造了VisualDL可視化工具 ,我試用了以后發(fā)現(xiàn)和tensorborad的功能好像!簡單說說特性:

  • 支持Scaler打點數(shù)據(jù)展示,可將訓(xùn)練信息以折線圖的形式展現(xiàn)出來,方便觀察整體趨勢,還能在同一個可視化視圖中呈現(xiàn)多條折線,方便用戶對比分析。
  • 支持Image圖片展示可輕松查看數(shù)據(jù)樣本的質(zhì)量,也可以方便地查看訓(xùn)練的中間結(jié)果,例如卷積層的輸出或者GAN生成的圖片。
  • 支持Histogram參數(shù)分布展示功能,方便用戶查看參數(shù)矩陣中數(shù)值的分布曲線,并隨時觀察參數(shù)數(shù)值分布的變化趨勢。
  • 支持Graph查看深度神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)。

  這樣一看,其實基本上實現(xiàn)了tensorboard的功能,或者應(yīng)該簡稱“Bring TensorBorad To PaddlePaddle”。不知道博客園怎么放gif,具體的圖片展示就直接看官網(wǎng)吧

深度學(xué)習(xí)可視化工具Visual DL——“所見即所得”

 


總結(jié)

  總的來說,Tensorboard是一個非常好的可視化工具,mxnet原來只能可視化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖,paddlepaddle原來只能看loss下降的訓(xùn)練收斂圖,但是后來mxnet把tensorborad搞進去了,paddlepaddle發(fā)布了一個新的工具VisualDL,實現(xiàn)了Tensorborad的功能,還是非常厲害的!大家可以多體驗體驗,這樣就不用像上篇文章手動的去畫每個網(wǎng)絡(luò)結(jié)果中間的輸出結(jié)果圖,直接用VisualDL的Image展示就可以了,更加方便我們理解模型,觀察模型訓(xùn)練的過程,簡單來說,讓我們不透明的“煉丹術(shù)”變得更加透明清楚了~

責(zé)任編輯:張燕妮 來源: www.cnblogs.com
相關(guān)推薦

2018-03-27 22:40:59

深度學(xué)習(xí)

2018-03-26 20:04:16

深度學(xué)習(xí)

2018-04-04 10:19:32

深度學(xué)習(xí)

2018-03-27 22:35:35

百度

2018-01-18 08:48:56

百度工具深度學(xué)習(xí)

2018-03-26 20:49:08

圖像分類

2018-04-02 10:45:11

深度學(xué)習(xí)PaddlePaddl手寫數(shù)字識別

2018-03-26 20:14:32

深度學(xué)習(xí)

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2018-04-09 10:20:32

深度學(xué)習(xí)

2018-03-26 20:00:32

深度學(xué)習(xí)

2017-10-17 11:58:54

R語言UpSetR可視化

2017-10-14 13:54:26

數(shù)據(jù)可視化數(shù)據(jù)信息可視化

2020-05-08 13:44:26

Spark架構(gòu)RDD

2022-08-26 09:15:58

Python可視化plotly

2009-04-21 14:26:41

可視化監(jiān)控IT管理摩卡

2018-04-11 09:30:41

深度學(xué)習(xí)

2018-04-16 11:30:32

深度學(xué)習(xí)

2018-04-17 09:40:22

深度學(xué)習(xí)

2017-06-29 11:26:08

Python數(shù)據(jù)可視化
點贊
收藏

51CTO技術(shù)棧公眾號