0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TensorBoard:圖的直觀展示

Tensorflowers ? 來源:lp ? 2019-03-01 16:24 ? 次閱讀

TensorFlow 計(jì)算圖功能十分強(qiáng)大,但也非常復(fù)雜。圖的直觀展示可幫助您理解圖并對(duì)圖進(jìn)行調(diào)試。以下示例顯示了實(shí)際的可視化效果。

TensorFlow 圖的可視化效果。

要查看您自己的圖,請(qǐng)運(yùn)行 TensorBoard 并將其指向作業(yè)的日志目錄,點(diǎn)擊頂部窗格中的 “圖” 標(biāo)簽,然后使用左上角的菜單選擇適當(dāng)?shù)倪\(yùn)行條目。要深入了解如何運(yùn)行 TensorBoard 并確保記錄所有必要信息,請(qǐng)參閱TensorBoard:直觀展示學(xué)習(xí)。

名稱范圍和節(jié)點(diǎn)

典型的 TensorFlow 圖可能具有數(shù)千個(gè)節(jié)點(diǎn) — 數(shù)量過多,難以一次性查看,甚至難以使用標(biāo)準(zhǔn)圖工具來進(jìn)行布置。為了進(jìn)行簡(jiǎn)化,可以對(duì)變量名稱設(shè)定范圍,然后,直觀展示工具可以使用此信息來為圖中的節(jié)點(diǎn)定義層次結(jié)構(gòu)。默認(rèn)情況下僅顯示該層次結(jié)構(gòu)的頂層。以下示例使用tf.name_scope在hidden名稱作用域下定義了三個(gè)操作:

import tensorflow as tfwith tf.name_scope('hidden') as scope: a = tf.constant(5, name='alpha') W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0), name='weights') b = tf.Variable(tf.zeros([1]), name='biases')

這導(dǎo)致出現(xiàn)以下三個(gè) op 名稱:

hidden/alpha

hidden/weights

hidden/biases

默認(rèn)情況下,直觀展示工具會(huì)將這三個(gè)名稱收起到一個(gè)標(biāo)作hidden的節(jié)點(diǎn)中。其他詳細(xì)信息不會(huì)丟失。您可以雙擊節(jié)點(diǎn)或點(diǎn)擊右上角的橙色+符號(hào)以展開節(jié)點(diǎn),然后您將看到alpha、weights和biases三個(gè)子節(jié)點(diǎn)。

以下真實(shí)示例展示了一個(gè)更加復(fù)雜的節(jié)點(diǎn)的初始狀態(tài)和展開狀態(tài)。

頂級(jí)名稱范圍pool_1的初始視圖。點(diǎn)擊右上角的橙色+按鈕或雙擊節(jié)點(diǎn)本身即可展開該節(jié)點(diǎn)

pool_1名稱范圍的展開視圖。點(diǎn)擊右上角的橙色-按鈕或雙擊節(jié)點(diǎn)本身即可收起該名稱范圍

要讓圖易于觀看,按名稱范圍對(duì)節(jié)點(diǎn)進(jìn)行分組至關(guān)重要。如果您要構(gòu)建模型,名稱范圍可幫助您控制生成的直觀展示。您的名稱范圍越好,直觀展示的效果也就越棒。

上圖顯示了直觀展示的另一方面。TensorFlow 圖具有兩種連接:數(shù)據(jù)依賴關(guān)系和控制依賴關(guān)系。數(shù)據(jù)依賴關(guān)系顯示兩個(gè) op 之間的張量流動(dòng),該依賴關(guān)系顯示為實(shí)線箭頭,而控制依賴關(guān)系顯示為虛線。在展開視圖中(上圖右側(cè)),所有連接均為數(shù)據(jù)依賴關(guān)系,只有連接CheckNumerics和control_dependency的虛線除外。

還有一個(gè)技巧可以簡(jiǎn)化布局。大多數(shù) TensorFlow 圖都包含幾個(gè)連接至許多其他節(jié)點(diǎn)的節(jié)點(diǎn)。例如,許多節(jié)點(diǎn)可能對(duì)初始化步驟存在控制依賴關(guān)系。繪制init節(jié)點(diǎn)及其依賴項(xiàng)之間的所有邊緣時(shí),會(huì)產(chǎn)生極為雜亂的視圖。

為了減輕雜亂,直觀展示工具會(huì)將所有高等級(jí)節(jié)點(diǎn)劃分到右側(cè)的輔助區(qū)域中,并且不繪制線來表示它們的邊緣。我們不使用線而使用節(jié)點(diǎn)圖標(biāo)來表示連接。分出輔助節(jié)點(diǎn)時(shí)通常不會(huì)移除關(guān)鍵信息,因?yàn)檫@些節(jié)點(diǎn)通常與簿記函數(shù)相關(guān)。請(qǐng)參閱下方交互部分,了解如何在主圖和輔助區(qū)域之間移動(dòng)節(jié)點(diǎn)。

節(jié)點(diǎn)conv_1連接到save。請(qǐng)注意它右側(cè)的save節(jié)點(diǎn)小圖標(biāo)

save的級(jí)別較高,它將顯示為輔助節(jié)點(diǎn)。與conv_1的連接顯示為左側(cè)的節(jié)點(diǎn)圖標(biāo)。為了進(jìn)一步減輕雜亂,由于save有許多連接,我們僅顯示前 5 個(gè)連接,并將其余連接縮寫為... 12 more

最后一種結(jié)構(gòu)簡(jiǎn)化方法是序列收起。如下所示,序列模體 (motif)(即結(jié)構(gòu)相同但名稱末尾的數(shù)字不同的節(jié)點(diǎn))將收起到節(jié)點(diǎn)的單個(gè)層疊中。對(duì)于具有長(zhǎng)序列的網(wǎng)絡(luò),這極大地簡(jiǎn)化了視圖。對(duì)于具有層次結(jié)構(gòu)的節(jié)點(diǎn),雙擊即可展開序列。請(qǐng)參閱下方交互部分,了解如何為一組特定的節(jié)點(diǎn)停用/啟用序列收起。

節(jié)點(diǎn)序列收起后的視圖

雙擊后顯示的展開視圖的一小部分內(nèi)容

直觀展示工具為了改進(jìn)易讀性而采取的最后一項(xiàng)輔助措施是:為常量和總結(jié)節(jié)點(diǎn)使用特殊圖標(biāo)。下表對(duì)節(jié)點(diǎn)符號(hào)進(jìn)行了總結(jié):

交互

通過平移和縮放在圖中導(dǎo)航。點(diǎn)擊并拖動(dòng)可進(jìn)行平移,使用滾動(dòng)手勢(shì)可進(jìn)行縮放。雙擊節(jié)點(diǎn)或點(diǎn)擊它的+按鈕可展開代表一組指令的名稱范圍。為了在縮放和平移時(shí)輕松跟蹤當(dāng)前視點(diǎn),右下角提供了一個(gè)小地圖。

要關(guān)閉打開的節(jié)點(diǎn),請(qǐng)?jiān)俅坞p擊節(jié)點(diǎn)或點(diǎn)擊它的 — 按鈕。您也可以點(diǎn)擊一次以選擇一個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)的顏色將加深,其相關(guān)詳細(xì)信息及與其連接的節(jié)點(diǎn)將顯示在直觀展示工具右上角的信息卡上。

顯示了conv2名稱范圍的相關(guān)詳情的信息卡。輸入和輸出是從名稱范圍內(nèi)的指令節(jié)點(diǎn)的輸入和輸出合并而來。沒有顯示名稱范圍的屬性

顯示了DecodeRaw指令節(jié)點(diǎn)的詳細(xì)信息的信息卡。除了輸入和輸出以外,該卡還顯示與當(dāng)前指令關(guān)聯(lián)的設(shè)備和和屬性

TensorBoard 提供了數(shù)種方法來改變圖的視覺布局。這不會(huì)改變圖的計(jì)算語(yǔ)義,但可讓網(wǎng)絡(luò)結(jié)構(gòu)變得更加清晰。通過右鍵點(diǎn)擊節(jié)點(diǎn)或按下節(jié)點(diǎn)信息卡底部的按鈕,您可以對(duì)它的布局做出以下更改:

您可在主圖和輔助區(qū)域之間移動(dòng)節(jié)點(diǎn)

您可以對(duì)一系列節(jié)點(diǎn)取消分組,使得序列中的節(jié)點(diǎn)不以分組的形式顯示。您同樣可以對(duì)取消分組的序列進(jìn)行重新分組

選中節(jié)點(diǎn)也有助于您理解高級(jí)別節(jié)點(diǎn)。請(qǐng)選擇任意高級(jí)別節(jié)點(diǎn),隨后該節(jié)點(diǎn)的其他連接所對(duì)應(yīng)的節(jié)點(diǎn)圖標(biāo)也將被選中。此操作可幫助您輕松了解正在保存哪些節(jié)點(diǎn),以及沒有保存哪些節(jié)點(diǎn)。

點(diǎn)擊信息卡中的節(jié)點(diǎn)名稱即可選中該節(jié)點(diǎn)。如有必要,視點(diǎn)將自動(dòng)平移以便使節(jié)點(diǎn)顯示出來。

最后,您可以使用圖例上方的顏色菜單為您的圖選擇兩種配色方案。默認(rèn)的結(jié)構(gòu)視圖顯示了結(jié)構(gòu):當(dāng)兩個(gè)高級(jí)別節(jié)點(diǎn)具有相同的結(jié)構(gòu)時(shí),它們將顯示相同的彩虹色。具有獨(dú)特結(jié)構(gòu)的節(jié)點(diǎn)顯示為灰色。第二個(gè)視圖顯示運(yùn)行不同指令的設(shè)備。名稱范圍根據(jù)其內(nèi)部指令的設(shè)備比例來按比例著色。

下圖顯示了一個(gè)真實(shí)圖的一部分的圖解。

結(jié)構(gòu)視圖:灰色節(jié)點(diǎn)具有獨(dú)特的結(jié)構(gòu)。橙色conv1和conv2節(jié)點(diǎn)具有相同的結(jié)構(gòu),其他顏色相同的節(jié)點(diǎn)同樣如此

設(shè)備視圖:名稱范圍根據(jù)其內(nèi)部指令節(jié)點(diǎn)的設(shè)備比例來按比例著色。此處的紫色代表 GPU,綠色代表 CPU

張量形狀信息

當(dāng)序列化GraphDef包含張量形狀時(shí),圖可視化工具會(huì)使用張量維度來標(biāo)記邊緣,而邊緣厚度反映總張量大小。要在GraphDef中包括張量形狀,請(qǐng)?jiān)趯?duì)圖執(zhí)行序列化時(shí),將實(shí)際圖對(duì)象(如sess.graph中所示)傳遞到FileWriter。下圖顯示了包含張量形狀信息的 CIFAR-10 模型:

包含張量形狀信息的 CIFAR-10 模型

運(yùn)行時(shí)統(tǒng)計(jì)信息

通常,收集運(yùn)行的運(yùn)行時(shí)元數(shù)據(jù)(例如節(jié)點(diǎn)的總內(nèi)存使用量、總計(jì)算時(shí)間和張量形狀)很有用。以下代碼示例節(jié)選自修改版Estimator MNIST 教程的訓(xùn)練和測(cè)試部分,在該代碼段中,我們記錄了匯總和運(yùn)行時(shí)統(tǒng)計(jì)信息。請(qǐng)參閱匯總教程 以詳細(xì)了解如何記錄匯總。要查看完整的源代碼,請(qǐng)點(diǎn)擊此處(https://github.com/tensorflow/tensorflow/blob/r1.10/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py)。

# Train the model, and also write summaries. # Every 10th step, measure test-set accuracy, and write test summaries # All other steps, run train_step on training data, & add training summaries def feed_dict(train): """Make a TensorFlow feed_dict: maps data onto Tensor placeholders.""" if train or FLAGS.fake_data: xs, ys = mnist.train.next_batch(100, fake_data=FLAGS.fake_data) k = FLAGS.dropout else: xs, ys = mnist.test.images, mnist.test.labels k = 1.0 return {x: xs, y_: ys, keep_prob: k} for i in range(FLAGS.max_steps): if i % 10 == 0: # Record summaries and test-set accuracy summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False)) test_writer.add_summary(summary, i) print('Accuracy at step %s: %s' % (i, acc)) else: # Record train set summaries, and train if i % 100 == 99: # Record execution stats run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) run_metadata = tf.RunMetadata() summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True), options=run_options, run_metadata=run_metadata) train_writer.add_run_metadata(run_metadata, 'step%d' % i) train_writer.add_summary(summary, i) print('Adding run metadata for', i) else: # Record a summary summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True)) train_writer.add_summary(summary, i)

此代碼將從第 99 步開始,每隔 100 步發(fā)出一次運(yùn)行時(shí)統(tǒng)計(jì)。

當(dāng)您啟動(dòng) TensorBoard 并轉(zhuǎn)至 “圖” (Graph) 標(biāo)簽時(shí),您現(xiàn)在將在 “會(huì)話運(yùn)行” (Session runs)(與添加了運(yùn)行元數(shù)據(jù)的步對(duì)應(yīng))下看到一些選項(xiàng)。選擇其中一個(gè)運(yùn)行后,系統(tǒng)將為您顯示該步時(shí)的網(wǎng)絡(luò)快照,并將未使用的節(jié)點(diǎn)顯示為淡出。在左側(cè)的控件中,您將能夠按總內(nèi)存或總計(jì)算時(shí)間為節(jié)點(diǎn)著色。此外,點(diǎn)擊節(jié)點(diǎn)可顯示確切的總內(nèi)存量、計(jì)算時(shí)間和張量輸出大小。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1154

    瀏覽量

    20820
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    328

    瀏覽量

    60446

原文標(biāo)題:TensorBoard:圖的直觀展示

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    因?yàn)檫@種主題可以讓用戶直觀的通過主題的預(yù)覽來吸引...

    的同時(shí)引導(dǎo)瀏覽者去點(diǎn)擊購(gòu)買,所以我們要選擇圖片展示類的主題,因?yàn)檫@種主題可以讓用戶直觀的通過主題的預(yù)覽來吸引用戶瀏覽下去。2. 固定鏈接的設(shè)置因?yàn)槲覀兿Mㄟ^“主題名 + Download”這類關(guān)鍵詞來
    發(fā)表于 05-23 19:53

    成功解決tensorboard調(diào)用eventsouttfevents文件得到網(wǎng)址出現(xiàn)No dashboards are active for the current data set問題

    成功解決tensorboard調(diào)用eventsouttfevents文件得到網(wǎng)址出現(xiàn)No dashboards are active for the current data set問題
    發(fā)表于 12-21 10:42

    TF之Tensorboard實(shí)踐:將神經(jīng)網(wǎng)絡(luò)Tensorboard形式得到eventsouttfevents文件+dos內(nèi)運(yùn)行該文件本地服務(wù)器輸出到網(wǎng)頁(yè)可視化

    TF:TF之Tensorboard實(shí)踐:將神經(jīng)網(wǎng)絡(luò)Tensorboard形式得到eventsouttfevents文件+dos內(nèi)運(yùn)行該文件本地服務(wù)器輸出到網(wǎng)頁(yè)可視化
    發(fā)表于 12-21 10:43

    TF之CNN:利用sklearn使用dropout解決學(xué)習(xí)中overfitting的問題+Tensorboard顯示變化曲線

    TF之CNN:利用sklearn(自帶手寫圖片識(shí)別數(shù)據(jù)集)使用dropout解決學(xué)習(xí)中overfitting的問題+Tensorboard顯示變化曲線
    發(fā)表于 12-24 11:36

    Tensorflow之Tensorboard的可視化使用

    TF之Tensorboard:Tensorflow之Tensorboard可視化使用之詳細(xì)攻略
    發(fā)表于 12-27 10:05

    TensorFlow TensorBoard可視化數(shù)據(jù)流

    TensorBoard:接下來,打開瀏覽器并輸入地址 http://localhost:6006/(或運(yùn)行 TensorBoard 命令后收到的鏈接)。你會(huì)看到類似于 1 中的,
    發(fā)表于 07-22 21:26

    機(jī)械展示、認(rèn)識(shí)與分析直觀現(xiàn)場(chǎng)教學(xué)

    實(shí)驗(yàn)五 機(jī)械展示、認(rèn)識(shí)與分析直觀現(xiàn)場(chǎng)教學(xué) 一、實(shí)驗(yàn)?zāi)康牧私飧髁悴考慕Y(jié)構(gòu)和工作原理,增加感性認(rèn)識(shí),鞏固課堂教學(xué)。
    發(fā)表于 03-13 19:00 ?2009次閱讀

    40個(gè)動(dòng),教你直觀的體會(huì)什么是電磁場(chǎng)

    電磁場(chǎng)和電流是高二也是整個(gè)高中最難的知識(shí)點(diǎn),很多同學(xué)對(duì)場(chǎng)沒有一個(gè)直觀的概念,今天這40個(gè)動(dòng),教你直觀的體會(huì)什么是電磁場(chǎng)。
    的頭像 發(fā)表于 08-25 16:28 ?5609次閱讀
    40個(gè)動(dòng)<b class='flag-5'>圖</b>,教你<b class='flag-5'>直觀</b>的體會(huì)什么是電磁場(chǎng)

    環(huán)境監(jiān)控平臺(tái)的功能介紹

    平臺(tái)界面應(yīng)可以直觀展示該地區(qū)的環(huán)境信息、全市因子平均值、有關(guān)監(jiān)測(cè)設(shè)備的實(shí)時(shí)信息及設(shè)備列表等情況。
    發(fā)表于 04-19 09:23 ?925次閱讀

    使用TensorBoard進(jìn)行機(jī)器學(xué)習(xí)模型分析

      總體而言,TensorBoard 是幫助開發(fā)和培訓(xùn)過程的絕佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 調(diào)優(yōu)的數(shù)據(jù)有助于提高準(zhǔn)確性,而 profiling 工具有助于提高處理速度。
    發(fā)表于 06-27 11:41 ?870次閱讀
    使用<b class='flag-5'>TensorBoard</b>進(jìn)行機(jī)器學(xué)習(xí)模型分析

    使用TensorBoard進(jìn)行機(jī)器學(xué)習(xí)模型分析

      總體而言,TensorBoard 是幫助開發(fā)和培訓(xùn)過程的絕佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 調(diào)優(yōu)的數(shù)據(jù)有助于提高準(zhǔn)確性,而 profiling 工具有助于提高處理速度。
    的頭像 發(fā)表于 07-01 09:44 ?791次閱讀
    使用<b class='flag-5'>TensorBoard</b>進(jìn)行機(jī)器學(xué)習(xí)模型分析

    使用TensorBoard進(jìn)行機(jī)器學(xué)習(xí)模型分析

      總體而言,TensorBoard 是幫助開發(fā)和培訓(xùn)過程的絕佳工具。Scalar and Metrics、Image Data 和 Hyperparameter 調(diào)優(yōu)的數(shù)據(jù)有助于提高準(zhǔn)確性,而 profiling 工具有助于提高處理速度。
    發(fā)表于 07-10 09:40 ?310次閱讀
    使用<b class='flag-5'>TensorBoard</b>進(jìn)行機(jī)器學(xué)習(xí)模型分析

    使用TensorBoard的機(jī)器學(xué)習(xí)模型分析

    差異變得至關(guān)重要。TensorBoard 有助于可視化模型,使分析變得不那么復(fù)雜,因?yàn)楫?dāng)人們可以看到問題所在時(shí),調(diào)試變得更加容易。
    的頭像 發(fā)表于 11-22 16:30 ?461次閱讀

    TensorBoard的使用

    原文鏈接 簡(jiǎn)介 TensorBoard是TensorFlow自帶的一個(gè)強(qiáng)大的可視化工具,也是一個(gè)Web應(yīng)用程序套件。 使用 進(jìn)入保存節(jié)點(diǎn)目錄,輸入: tensorboard --logdir
    的頭像 發(fā)表于 01-12 17:35 ?2209次閱讀

    3D可視化技術(shù)如何讓城市規(guī)劃信息更直觀展現(xiàn)?

    城市規(guī)劃是一個(gè)復(fù)雜而又多變的過程,需要考慮眾多因素,如地形、氣候、經(jīng)濟(jì)、人口等。傳統(tǒng)的城市規(guī)劃信息展示方式主要是通過平面、立面等二維圖像來呈現(xiàn)城市規(guī)劃的方案和效果,難以全面展示城市
    的頭像 發(fā)表于 05-12 15:23 ?437次閱讀