機器學習不像傳統的程式設計,它往往變幻莫測。模型間的細小差别和資料品質、參數微調中的小小改變都可能對最終成功與否造成巨大的影響。
用 TensorBoard 找到缺口
隻有當我們跟蹤某些特征資料在整個訓練過程當中的變化,并且縱覽模型結構,才能有效調校模型并調試所「看到」的問題。
這一抽象的流程往往難以通過可視化的方式呈現,不過現在 TensorFlow 内置了解決方案将會帶來改變。
現在一起來看看内置于 TensorFlow 的可視化方案 — TensorBoard,一個讓你更能把控大量操作的工具。不論是觀察模型整體結構還是監視整個模型訓練過程。
TensorFlow 在内部使用了計算機圖形理論的思想。
也就是說,為了取締傳統意義上兩數相加的思維,TensorFlow 構造了加法運算,并将之作為參數傳入,随後數值将會被這一運算加在一起。
是以我們回頭思考 TensorFlow 訓練過程,其實就是将所有操作作為其圖的一部分來執行的過程。TensorBoard 可以将這些模型可視化,是以你能看到模型抽象出來是什麼樣子,更讓你得以檢查是否所有部分都按要求組合在了一起。
下面來個更複雜點的例子,一個同樣是用 TensorFlow 将模型可視化的例子。注意看上圖,TensorFlow 讓我們可以縮放、掃視、展開模型的各個元素以得到更多細節。這就是說,我們可以從不同的抽象層次觀察模型,進而降低了視覺複雜度。
并且,TensorBoard 除了向我們展示模型的結構,還會将各項特征值的變化很好布局在圖上。我們會将精确度、失真、跨熵等拿來布局觀測,且另一方面,依賴于模型的衆多特征值往往至關重要。至于 TensorFlow 的預置發射器,它們自帶了一套預設值用于在 TensorBoard 中使用。這一特性為後續使用做好了鋪墊。
TensorBoard 除了上述功能,還能展示包括條形圖、分布圖以及諸如聲音、圖像、文字等與模型共生的資料等等大量的資訊。不過關于那部分的詳細介紹要等到後面的視訊。
回歸正題,我們來看看之前一直使用的線性模型在 TensorBoard 當中的表現。首先需要啟動 TensorBoard 并将之指向目标模型層次結構及重要中間檔案所在的目錄:
tensorboard --logdir=」/tmp/iris_model/」
此項操作會啟動一個偵聽 6006 端口的本地伺服器。6006 看起來是不是非常像「GOOG」呀?
我們可以看到一些線性 classifier 預設提供的标量特征值。稍後可以通過縮放和展開來研究這些圖像。
輕按兩下能夠回退到更高的縮放級别。可見,我們的模型訓練随着時間推移正以逐漸降低的失真井然有序進行。并且我們能清晰看到模型訓練尚未完成,原因是失真下降率仍然不可忽視直至訓練的終點。是以這就提示我們,也許應當将訓練的過程再多持續一會兒,進而從訓練過程中獲得更多收益。
接下來看看 Graphs 小分頁。注意看,此時的圖還是非常簡單的。
我們能通過點選小塊兒上面的加号展開檢視更詳細的内容。比如,我現在展開了「linear」這個子產品,可以看到它由不少子子產品組成。我們可以通過滾輪來縮放視野,也可以通過點按拖拽來檢視其他部分。
注意我們給特征列的名字,比如此處的 flower_features 在圖中以子產品形式呈現。
這種方式将有助于調試并了解上面展示的圖中各部分是怎樣聯結起來的。大多數 TensorFlow 的操作是可以命名的,是以這是一個将模型闡述清楚和觀察目前訓練進展的好機會。
今天,我們學到了簡單有趣的機器學習模型重要特征值可視化相關知識。TensorBoard 将讓你輕松體驗到這種樂趣,并且最妙之處是它已經完全内置在 TensorFlow 當中了。
記住下一次你想要把機器學習過程可視化時,TensorBoard 是你的不二選擇。
轉自;https://zhuanlan.zhihu.com/p/31497981