1. 程式人生 > >TensorFlow2.0(9):TensorBoard視覺化

TensorFlow2.0(9):TensorBoard視覺化

 

注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。

 

1 神器級的TensorBoard¶

 

TensorBoard是TensorFlow中的又一神器級工具,想使用者提供了模型視覺化的功能。我們都知道,在構建神經網路模型時,只要模型開始訓練,很多細節對外界來說都是不可見的,引數如何變化,準確率怎麼樣了,loss還在減小嗎,這些問題都很難弄明白。但是,TensorBoard通過結合web應用為我們提供了這一功能,它將模型訓練過程的細節以圖表的形式通過瀏覽器視覺化得展現在我們眼前,通過這種方式我們可以清晰感知weight、bias、accuracy的變化,把握訓練的趨勢。

 

本文介紹兩種使用TensorBoard的方式。不過,無論使用那種方式,請先啟動TensorBoard的web應用,這個web應用讀取模型訓練時的日誌資料,每隔30秒更新到網頁端。在TensorFlow2.0中,TensorBoard是預設安裝好的,所以,可以直接根據以下命令啟動:

 

tensorboard --logdir "/home/chb/jupyter/logs"

 

logdir指的是日誌目錄,每次訓練模型時,TensorBoard會在日誌目錄中建立一個子目錄,在其中寫入日誌,TensorBoard的web應用正是通過日誌來感知模型的訓練狀態,然後更新到網頁端。

如果命令成功執行,可以通過本地的6006埠開啟網頁,但是,此時開啟的頁面時下面這個樣子,因為還沒有開始訓練模型,更沒有將日誌寫入到指定的目錄。

 

 

要將訓練資料寫入指定目錄就必須將TensorBoard嵌入模型的訓練過程,TensorFlow介紹了兩種方式。下面,我們通過mnist資料集訓練過程來介紹著兩種方式。

 

2 在Model.fit()中使用TensorBoard¶

In [1]:
import tensorflow as tf
import tensorboard
import datetime
In [20]:
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
In [21]:
model = create_model()
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 定義日誌目錄,必須是啟動web應用時指定目錄的子目錄,建議使用日期時間作為子目錄名
log_dir="/home/chb/jupyter/logs/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)  # 定義TensorBoard物件

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])  # 將定義好的TensorBoard物件作為回撥傳給fit方法,這樣就將TensorBoard嵌入了模型訓練過程
 
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 4s 71us/sample - loss: 0.2186 - accuracy: 0.9349 - val_loss: 0.1180 - val_accuracy: 0.9640
Epoch 2/5
60000/60000 [==============================] - 4s 66us/sample - loss: 0.0972 - accuracy: 0.9706 - val_loss: 0.0754 - val_accuracy: 0.9764
Epoch 3/5
60000/60000 [==============================] - 4s 66us/sample - loss: 0.0685 - accuracy: 0.9781 - val_loss: 0.0696 - val_accuracy: 0.9781
Epoch 4/5
60000/60000 [==============================] - 4s 66us/sample - loss: 0.0527 - accuracy: 0.9831 - val_loss: 0.0608 - val_accuracy: 0.9808
Epoch 5/5
60000/60000 [==============================] - 4s 66us/sample - loss: 0.0444 - accuracy: 0.9859 - val_loss: 0.0637 - val_accuracy: 0.9803
Out[21]:
<tensorflow.python.keras.callbacks.History at 0x7f9b690893d0>
 

相關推薦

TensorFlow2.09TensorBoard視覺

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   1 神器級的TensorBoard&p

TensorFlow2.01基本資料結構—張量

1 引言 TensorFlow2.0版本已經發布,雖然不是正式版,但預覽版都發布了,正式版還會遠嗎?相比於1.X,2.0版的TensorFlow修改的不是一點半點,這些修改極大的彌補了1.X版本的反人類設計,提升了框架的整體易用性,絕對好評! 不多說了,趕緊來學習一波吧,做最先吃螃蟹的那一批人!先從Ten

TensorFlow2.0數學運算

1 基本運算:加(+)、減(-)、點乘(*)、除(/)、地板除法(//)、取餘(%) 基本運算中所有例項都以下面的張量a、b為例進行: >>> a = tf.random.uniform([2, 3], minval=1, maxval=6,dtype=tf.int32) >

TensorFlow2.0張量限幅

  1 maxmium()與minmium()¶   maximum()用於限制最小值,也即是說,將一個tensor中小於指定值的元素替換為指定值:

TensorFlow2.0Dataset

  在整個機器學習過程中,除了訓練模型外,應該就屬資料預處理過程消耗的精力最多,資料預處理過程需要完成的任務包括資料讀取、過濾、轉換等等。為了將使用者從繁雜的預處理操作中解放處理,更多地將精力放在演算法建模上,Te

TensorFlow2.07啟用函式

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   1 什麼是啟用函式¶

TensorFlow2.08誤差計算——損失函式總結

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   1 均方差損失函式:MSE¶

TensorFlow2.010載入自定義圖片資料集到Dataset

  前面的部落格中我們說過,在載入資料和預處理資料時使用tf.data.Dataset物件將極大將我們從建模前的資料清理工作中釋放出來,那麼,怎麼將自定義的資料集載入為DataSet物件呢?這對很多新手來說都是一個難題,因為絕大多數案例教學都是以

TensorFlow2.011tf.keras建模三部曲

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   Keras是一個基於Python編寫的高層神經網路API,憑藉使用者友好性、模組化以及易擴充套件等有點大受好評

TensorFlow2.012模型儲存與序列

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   模型訓練好之後,我們就要想辦法將其持久化儲存下來,不然關機或者程式退出後模型就不復存在了。本文介紹兩種持久化儲

Caffe視覺網路結構視覺用Caffe自帶程式實現

Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現) 本文記錄瞭如何利用Caffe自帶的程式實現網路的視覺化,包括可能遇到的問題和解決方案。更新於2018.10.25。 文章目錄 Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現

pytorch學習筆記PytTorch視覺工具 visdom

Visdom PyTorch視覺化工具 本文翻譯的時候把 略去了 Torch部分。 專案地址 一個靈活的視覺化工具,可用來對於 實時,富資料的 建立,組織和共享。支援Torch和Numpy。 總覽基本概念Setup啟動視覺化介面總結 總覽 Visdom目的是促

Caffe原始碼解讀Caffe視覺工具

從網路結構視覺化、caffemodel的視覺化、特徵圖視覺化、視覺化loss和accurary曲線等四個方面講視覺化 網路結構視覺化 有兩種辦法:draw_net.py工具和線上視覺化工具,推薦後者,靈活簡便。 1、使用draw_net.py工具

小白學 Python 資料分析15資料視覺概述

![](https://cdn.geekdigging.com/python/spider-blog/Python_logo.jpg) > 人生苦短,我用 Python 前文傳送門: [小白學 Python 資料分析(1):資料分析基礎](https://www.geekdigging.com/2020

初識ABP vNext9ABP模組開發-檔案管理

Tips:本篇已加入系列文章閱讀目錄,可點選檢視更多相關文章。 [TOC] # 前言 在之前的章節中介紹過ABP擴充套件實體,當時在使用者表擴充套件了使用者頭像欄位,使用者頭像就涉及到檔案上傳和檔案儲存。檔案上傳是很多系統都會涉及到的一個基礎功能,在ABP的模組化思路下,檔案管理可以做成一個通用的模組,

每天一個linux命令9cp命令

系統 lin 維基 介紹 參考 vip 聲明 com 開發平臺 版權聲明更新:2017-05-13博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 本文介紹了Linux下面的cp命令。

springBoot9web開發-CORS支持

springboot springboot web開發-cors支持 一、簡介Web 開發經常會遇到跨域問題,解決方案有:jsonp,iframe,CORS 等等1.1、CORS與JSONP相比1、JSONP只能實現GET請求,而CORS支持所有類型的HTTP請求。2、使用CORS,開發者可以使用普通

NS3網絡仿真9 構建以太網幀

構造 style lib ans 嘗試 pos height prot art 快樂蝦http://blog.csdn.net/lights_joy/歡迎轉載,但請保留作者信息在NS3使用了一個叫Packet的類來表示一個數據幀,本節嘗試用它構造一個以太網幀。以下是一個

初識vue 2.02路由與組件

組件化 script -128 watch css image 暫時 效果 默認 1,在上一篇的創建工程中,使用的的模版 webpack-simple 只是創建了一個簡單的demo,並沒有組件和路由功能,此次采用了webpack模版,自動生成組件和路由。^_^ 在模版初始

Chapter 2 User Authentication, Authorization, and Security9防止登錄名和用戶查看元數據

eight ssms ini auto 情況 con title cas mar 原文出處:http://blog.csdn.net/dba_huangzj/article/details/39003679。專題文件夾:http://blog.csdn.net/dba_