日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...

發布時間:2024/9/27 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“CVer”,選擇加"星標"置頂

重磅干貨,第一時間送達

開發者在煉丹的過程中會不會遇到這些問題呢?比如說深度學習模型訓練過程中盯 Log 盯得頭暈眼花?復雜模型結構全靠腦補?網絡各層效果無法評估?模型評估指標難以綜合權衡?想必各位「煉丹師」、「調參俠」都中過招吧?莫慌,飛槳給大家「送解藥」來了!

這劑解藥就是VisualDL 2.0——飛槳可視化分析工具全面改版升級,幫眾位開發者們從 「煉丹萌新」 變身「太上老君」。懷疑我們自吹自擂?那就讓我們一起看看 VisualDL 到底是啥?先上圖為證!VisualDL 2.0 是什么?

?

看到這里,有些小伙伴可能已經大概知道 VisualDL 是什么了,不知道的同學請繼續往下看,反正花花綠綠的,至少比 log 看著養眼多了!?

具體來說,VisualDL 是飛槳團隊為廣大深度學習開發者訂制的功能完備的可視化分析工具,可以幫助深度學習開發者了解訓練過程中模型參數的變化趨勢、 網絡層對數據特征的提取情況、網絡結構應該如何調整、精度與召回是否達到了理想的平衡等,從而實現有方向性的錯誤排查,實現高效的模型調優。其實,VisualDL 1.0 早在 2017 年就推出了,隨著飛槳開源深度學習框架歷經 3 年深入產業實踐的不斷打磨,VisualDL 本次也完成了 2.0 版本的全新蛻變!相較 VisualDL 1.0,新版本的 API 設計更加簡潔易用、與框架銜接更為順暢、功能更豐富,界面設計也全面進行了升級,致力為老用戶帶來全新體驗,為新用戶帶來使用上的驚喜VisualDL 2.0 能做什么?VisualDL 2.0 共有五大可視化功能,下面我們來逐一講解。標量(Scalar)?標量可以通過圖表的形式展示 Loss、Accuracy、Learning Rate 等參數指標在訓練過程中的變化趨勢,幫助開發者了解其是否朝著理想的方向優化,便于發現異常情況,及時排查并修復問題;另外,通過對比多組實驗的訓練參數,開發者們能深入探究參數對模型效果的影響,加速模型的調優。實現代碼如下:add_scalar(tag,?value,?step,?walltime=None)數據樣本分析(Sample)?數據樣本分析可以在多種深度學習任務中發揮重要作用。例如在計算機視覺任務中,該功能不僅可以查看每個訓練批次中的指定的樣本圖片,也可以展示圖像數據的在訓練過程中間階段的提取特征情況,便于開發者們觀察圖片數據在訓練過程中的狀態,進而深入了解訓練過程及效果。實現代碼如下:add_image(tag,?img,?step,?walltime=None)在語音識別或合成任務中,數據樣本分析功能可以幫助開發者實時獲取訓練過程中的音頻數據,評估語音識別或合成的效果,挑選最優的訓練模型。實現代碼如下:add_audio(tag,?audio_array,?step,?sample_rate)模型結構(Graph)模型結構功能支持一鍵可視化模型網絡結構。開發者們可查看模型屬性、節點信息、節點輸入輸出等,并支持節點搜索功能,協助開發者們快速分析模型結構并了解數據流向。當前支持如下兩種操作方式:
  • 模型文件拖拽上傳

  • 在命令行加入參數 --model 并指定模型文件路徑(非文件夾路徑),運行命令后即可啟動:

visualdl?--model?./log/model?--port?8080

直方圖(Histogram)?直方圖可以展示 Tensor(weight、bias、gradient 等)數據在訓練過程中的變化趨勢,深入了解模型各層效果,幫助開發者精準調整模型結構。實現代碼如下:add_histogram(tag,?values,?step,?walltime=None,?buckets=10)PR 曲線(PR Curve)PR 曲線可以展示每一分類在不同閾值下的精度(Precision)- 召回率(Recall)曲線,幫助開發者權衡模型精度和召回率之間的平衡,設定最佳閾值。精度是指正樣本的數量除以所有被選中樣本的數量,而召回率是指所有正樣本中被推理正確的比例,由此可見精度越高,召回率越高,我們的模型就越好。但是很多情況下,魚和熊掌不可兼得,無法同時保證精度和召回率都是最高,此時需要通過 PR 曲線,權衡精度與召回率,確定最佳閾值。實現代碼如下:add_pr_curve(tag,?labels,?predictions,?step=None,?num_thresholds=10)為了便于大家更好的了解 VisualDL,我們結合一個簡單的實際模型例子來更直觀的看下這幾個功能。真的是很簡單的例子——那就是深度學習中的「Hello World」,手寫數字識別!VisualDL 2.0 怎么用?假設在一個風和日麗的早晨,作為深度學習愛好者的你,想要建立一個簡單的 LeNet 模型進行手寫數字識別,在辛苦完成模型搭建后,進入模型訓練時,卻看到了如下一幕:

你心里一沉,這精度怎么抖得那么厲害啊。訓練中哪里出現問題了呢?到底誰是「兇手」?可是連問題出在哪都不知道,模型優化和修復更是無從下手。這時你想起幾日前偶然發現的深度學習可視化分析工具——VisualDL,心中頓時升起希望,因為在訓練之前,已經把下面的代碼添加到訓練腳本中了。#使用VisualDL的第一步是在訓練腳本中添加如下代碼創建日志文件,用于記錄訓練中產生的數據。
from?visualdl?import?LogWriter
log_writer?=?LogWriter("./paddle_lenet_log")

#?使用標量(Scalar)記錄Loss、Accuracy參數,用于觀察其變化趨勢
writer.add_scalar(tag="train/loss",?step=step,?value=cost)
writer.add_scalar(tag="train/acc",?step=step,?value=accuracy)

#?使用數據樣本分析功能記錄每批次第一張數據,用于查看圖像數據
img?=?np.reshape(batch[0][0],?[28,?28,?1])?*?255
writer.add_image(tag="train/input",?step=step,?img=img)

#?使用直方圖功能記錄所有參數,用于查看weight、bias在訓練步數中的分布變化
for?param?in?params:
?????values?=?fluid.global_scope().find_var(param).get_tensor()
?????writer.add_histogram(tag='train/{}'.format(param),?step=step,?values=values)

#?記錄PR曲線查看不同閾值下的精度和召回率
labels?=?np.array(batch)[:,?1]
for?i?in?range(10):
label_i?=?np.array(labels?==?i,?dtype='int32')
prediction_i?=?pred[:,?i]
writer.add_pr_curve(tag='train/class_{}_pr_curve'.format(i),
????????????????????????????labels=label_i,
????????????????????????????predictions=prediction_i,
????????????????????????????step=step,
????????????????????????????num_thresholds=20)
#?使用save_inference_model保存模型結構至“./model”目錄,便于訓練后使用模型結構(Graph)功能查看模型網絡結構
fluid.io.save_inference_model(dirname='./model',?feeded_var_names=['img'],target_vars=[predictions],?executor=exe)接下來就執行下面的命令來開始奇幻的破案(調優)之旅吧!visualdl--logdir?./paddle_lenet_log?--port?8080執行命令后,即可得到這樣一個網址 http://localhost:8080/,打開瀏覽器輸入這個網址即可查看究竟發生了什么。首先來看看案發現場。。1. 點擊 「標量數據」 頁簽查看模型的 Loss 和 Accuracy 整體變化趨勢,也就是把剛才的日志信息通過圖形直觀的展示出來。這部分對應的代碼如下所示:writer.add_scalar(tag="train/loss",?step=step,?value=cost)
writer.add_scalar(tag="train/acc",?step=step,?value=accuracy)一眼望去,這哪是 Loss 和 Accuracy 的變化曲線啊,這明顯是心率不齊啊,讓人有打 120 叫救護車的沖動了!顯而易見,Accuracy 一直在 10% 左右徘徊,Loss 一直無法下降,由此我們開始逐個查看問題出在哪個環節。首先看看模型結構的實際樣子,是否是結構設計出了問題。

2. 點擊 「網絡結構」 頁簽,將保存在 「./model」 目錄下的模型文件拖進頁面即可看到模型的結構。

通過觀察模型結構、節點屬性、模型屬性、數據流向,咱們可以直觀的發現整體結構是符合預期的,也就是說模型網絡本身是清白的,那么是否是模型 「吃進」 的數據有問題呢??3. 點擊 「樣本數據」 查看訓練中的樣本數據。這部分對應的代碼如下所示:#?使用數據樣本分析功能記錄每批次第一張數據,用于查看圖像數據
img?=?np.reshape(batch[0][0],?[28,?28,?1])?*?255
writer.add_image(tag="train/input",?step=step,?img=img)通過查看每批次數據的第一張圖片,發現輸入數據也是沒有問題的。那么咱們再來「回放錄像」,看看每一時間步的參數變化情況吧。

4. 點擊 「直方圖」 頁簽,查看訓練過程中每一時間步權重和偏差的變化情況,就如同回放整個訓練過程的監控錄像一樣,讓訓練過程中參數變化不正常的問題無所遁形!這部分對應的代碼如下所示:for?param?in?params:
?????????values?=?fluid.global_scope().find_var(param).get_tensor()
?????????writer.add_histogram(tag='train/{}'.format(param),?step=step,?
values=values)

通過查看后發現,每一層的權重和偏差的變化正常。由此證明不是特定層的初始參數配置出現問題,排除了模型結構、數據樣本、每層網絡參數配置后,還剩下超參數的配置,因此決定嘗試不同的學習率(0.001,0.03,0.05,0.08,0.1),并通過 VisualDL 的多實驗對比功能,來觀察學習率對模型訓練效果的影響情況。5. 啟動多實驗對比功能非常的簡單,只需要在訓練腳本中參考如下代碼實現同一個目錄下記錄多份不同學習率的訓練日志文件,并啟動相應訓練即可。接著啟動 VisualDL,就會得到多組實驗記錄對比圖了。#創建日志文件,儲存當lr=0.001時訓練結果
log_writer?=?LogWriter("paddle_lenet_log/lr0.001")
#創建日志文件,儲存當lr=0.03時訓練結果
log_writer?=?LogWriter("paddle_lenet_log/lr0.03")
#創建日志文件,儲存當lr=0.05時訓練結果
log_writer?=?LogWriter("paddle_lenet_log/lr0.05")
#創建日志文件,儲存當lr=0.08時訓練結果
log_writer?=?LogWriter("paddle_lenet_log/lr0.08")
#創建日志文件,儲存當lr=0.1時訓練結果
log_writer?=?LogWriter("paddle_lenet_log/lr0.1")

你終于發現了問題所在了,原來是學習率設置的過大了,導致 Loss 無法下降收斂,根據 「標量數據」 展示的效果,當學習率為 0.001 時(深藍色線條),Loss 呈現優美的下降趨勢且后續漸漸收斂,Accuracy 呈現逐漸上升并趨于平穩,因此你將學習率設置為 0.001,使得模型呈現最佳效果。但是你還不滿足于現狀,想要選擇一個最佳閾值,使得模型的精準度和召回率都達到最優,于是又開始使用 「PR 曲線」 功能。6. 點擊 「PR 曲線」 頁簽,權衡精確度與召回間的關系,確定最佳閾值。這部分對應的代碼如下所示:labels?=?np.array(batch)[:,?1]
for?i?in?range(10):
label_i?=?np.array(labels?==?i,?dtype='int32')
prediction_i?=?pred[:,?i]
writer.add_pr_curve(tag='train/class_{}_pr_curve'.format(i),
????????????????????????????labels=label_i,
????????????????????????????predictions=prediction_i,
????????????????????????????step=step,
????????????????????????????num_thresholds=20)

以上圖為例,該圖是手寫數字識別任務中類別 7 對應的 PR 曲線,從圖中可以看出,當閾值為 0.10、0.15 或 0.20 時,準確率和召回率同時達到最高值,因此選擇上述中的任意閾值,模型都可達到最佳效果。最終,在 VisualDL 的幫助下,你確定了模型閾值為 0.15,學習率為 0.001,至此,一個效果理想的手寫數字識別模型搭建完成。如需查看完整應用案例代碼,請參考:
  • https://aistudio.baidu.com/aistudio/projectdetail/622772?

如需查看較復雜的應用案例 -- 眼疾識別,請參考:
  • https://aistudio.baidu.com/aistudio/projectdetail/502834

寫在最后看到這里,相信大家已經對 VisualDL 2.0 有了一個比較全面的了解,也發現它是真的又有用,又好用吧?然而這還不夠,飛槳團隊還為它增加了諸多軟實力:
  • 高兼容:全面支持飛槳、ONNX、Caffe 等市面主流模型結構可視化,廣泛支持各類用戶實現可視化分析。

  • 生態支持全面:與飛槳的多個套件、工具組件以及 AI 學習和實訓社區 AI Studio 全面打通,為開發者們在飛槳生態系統中提供最佳使用體驗。

在未來,VisualDL 將會持續加入新的功能組件,致力于為開發者們提供簡單易用、功能豐富、性能強大的可視化分析工具,助力模型的優化過程。小伙伴們是不是已經破迫不及待想要親自上手嘗試了呢?歡迎登錄 VisualDL 2.0 官網查看功能示例,GitHub 上也提供了詳細的使用指南,大家可以踴躍嘗試!想要與其他使用 VisualDL 的小伙伴們交流心得么?請加入 VisualDL 官方 QQ 群:1045783368,提出使用中遇到的問題與對于可視化的其他需求,同時還有機會與深度學習高手們面對面過招!如果您加入飛槳官方 QQ 群,您將遇上大批志同道合的深度學習同學。官方 QQ 群:1108045677。如果您想詳細了解更多飛槳的相關內容,請參閱以下文檔。
  • 飛槳官網地址:https://www.paddlepaddle.org.cn

  • VisualDL 官網地址:https://www.paddlepaddle.org.cn/paddle/visualdl

飛槳 VisualDL 項目地址:
  • GitHub:https://github.com/PaddlePaddle/VisualDL

  • Gitee: https://gitee.com/paddlepaddle/VisualDL?

飛槳開源框架項目地址:
  • GitHub: https://github.com/PaddlePaddle/Paddle?

  • Gitee:? https://gitee.com/paddlepaddle/Paddle?

整理不易,請給CVer點贊和在看

總結

以上是生活随笔為你收集整理的echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。