AIA (AI Adventures)系列現在已經進入第六期了。前幾期分享當中,Yufeng 介紹了機器學習的核心概念、基本邏輯,也介紹了要進行機器學習需要經過哪些步驟,并根據這些基本知識嘗試使用線性評估器 API 打造了鳶尾花分類模型,還介紹了如何用 TensorBoard 將模型可視化分析。今天的分享中,他會帶領我們一起把線性鳶尾花分類模型轉換為深度神經網絡結構。
在這一期的Cloud AI Adventures里,我們將會學習怎樣用深度神經網絡替換線性模型,從而適應日益復雜的數據集訓練任務。
隨著線性模型中特征列數量的增加,進而特征列之間的關系變得越來越復雜,在訓練中提高精確度也越來越困難。這是一個眾人皆知的問題,而數據科學家們解決它的一個有效辦法就是轉為使用深度神經網絡。
為什么叫深度?
深度神經網絡可以應對更復雜的數據集,并充分利用其多層結構來更好地概括出未知的數據,故而稱其為「深度」。多層次的結構使其相比線性模型能夠容納更多的數據。不過代價就是要花費更長的訓練時間,并且模型體積也更龐大,可解釋性也更差。那么人們為什么還這么中意它呢?因為它往往能夠提升到更高的精度。
深度學習,有如山林漫步,難尋蹊徑
關于深度學習,有那么一件頗具技巧的事,那就是把所有參數都調校得「恰到好處」。超大的數據集規模決定了調優過程差不多是無窮無盡的。不過,TensorFlow 內置的 DeepClassifier 和 Regresser 類提供了一些你能隨時使用的默認值,他們能讓你的訓練準備工作又快又輕松。
從線性訓練到深度學習
下面舉個例子來展示如何將早前我們的線性鳶尾花辨識模型轉為深度神經網絡(也就是人們常說的 DNN)。
當然, 我們不是要展示 DNN 能處理的 2000 列特征值模型,而是僅僅使用本系列貫穿始終的 4 列特征值。(要么火力全開,要么幾乎用不到,哈哈哈)其實它們背后的原理都是一樣的。
最主要的變化就是把 LinearClassifier 類換成 DNNClassifier 類。 這一更改會為我們創建一個深度神經網絡。
用 DNNClassifier 類替換 LinearClassifier 類
其他變化
其實其他部分幾乎沒有變動!只是 DNN 多了個之前我們沒有用到的參數。由于 DNN 的多層結構,而每一層可能有各不相同的結點數目,所以還需要在實例化時加上 hidden_units 參數。
加上 hidden_units 參數把所有東西都整合起來
這個 hidden_units 參數讓你為模型的每一層指定具體的結點數目。也就是讓你決定模型的大小和形狀,而不需要從頭開始手動把所有東西都連接起來。
改變模型的參數配置也就是一行變更的事兒
更多選項
對于任何預知的體系,自定義性和便利性往往不可兼得, DNNClassifier 嘗試給開發者提供額外的參數以繞過這個局限。如果留空了,就會由一些合理的默認值來填補空缺。比如優化器、激活函數、淘汰率等等都是可以自定義的。
沒錯,有這么個激活函數就叫「ELU」
再沒有什么其他變化了
還有其他要改變的嗎?沒了!這就是使用Estimators 框架的優勢:用通用的方法來組織數據、訓練、評價、導出模型,同時還能讓你用不同的模型和參數來訓練。
了解 Estimators 框架:
https://tensorflow.google.cn/api_docs/python/tf/estimator
輕松切入深度學習
又是,深度神經網絡比線性模型要更加高效。在這些情況下,TensorFlow 用「只替換一處函數調用」這種少量編碼即可切換模型種類的方式,讓一切更加簡單。此后,你會有更多的時間精力來處理數據、模型和參數,而不是費時管理訓練的循環迭代。用TensorFlow Estimators來獲得更輕松的 DNN 訓練體驗吧!
-
神經網絡
+關注
關注
42文章
4777瀏覽量
100997 -
線性
+關注
關注
0文章
199瀏覽量
25178 -
深度學習
+關注
關注
73文章
5511瀏覽量
121376
原文標題:AIA 第六期 | 通過深度神經網絡再識 Estimator
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論