當前位置:
首頁 > 最新 > 無需數學知識,輕鬆搞定鳶尾花辨識模型

無需數學知識,輕鬆搞定鳶尾花辨識模型

AIA (AI Adventures)系列現在已經進入第三期了。前兩期分享當中,Yufeng 介紹了機器學習的核心概念、基本邏輯,也介紹了要進行機器學習需要經過哪些步驟。今天的分享中,他會繼續用淺顯易懂的表達,為我們介紹 TensorFlow 的評估器 API。

總的來說,機器學習還是非常贊的(當然,除了某些時候你不得不對付複雜惱人的數學運算)。當下機器學習相關工具已經得到很大的改善,並且訓練模型也更加簡單方便。

我們將利用對數據集的認知來編寫與之對應的模型,而不是基於對原始數學問題來求解,本期,我們將會用一些簡單的代碼來實操訓練出一個簡單的分類器,請看視頻講解:

https://gist.github.com/yufengg/a6dff912ab48f7a273f5704ad9ab1311

https://www.tfimgs.cn/wechat/aia/AIA003_tf_estimators.ipynb

https://www.tfimgs.cn/download.tensorflow.org/data/iris_test.csv

https://www.tfimgs.cn/download.tensorflow.org/data/iris_training.csv

要訓練我們的分類模型,我們需要使用 Google 的開源機器學習庫——TensorFlow。TensorFlow 對外開放了非常豐富的 API 介面,但此時我們需要用到的僅僅是一些高層次 API,也就是評估器(Estimator)。

評估器替我們打包好了訓練的循環迭代,所以我們可以通過配置評估器來控制訓練過程,而不是手動編碼實現。這樣以來,許多樣板化的東西都不再存在,也讓我們能夠在更高級的抽象中考慮問題。同時這也意味著盡情享受機器學習的樂趣,而不必糾結實現的細節。

既然目前我們只探討過線性模型的設計問題,不妨就此打住。今後我們會有機會回過頭討論這個問題,並提升其識別能力。

花卉分類:是否和酒水判別同樣充滿趣味?

本周我們會構建一個模型來區分三種非常相似的花卉。雖說這次比不上上次那樣同酒水打交道那麼令人嚮往,但是由於花卉更難辨認,所以這次的任務會更具挑戰性。

特別是,今天我們需要區分開不同品種的鳶尾花。其實我自己不太能從一片玫瑰當中找出一枝鳶尾花,但是我們的模型將會準確認出山鳶尾、變色鳶尾和維吉尼亞鳶尾。

山鳶尾、變色鳶尾和維吉尼亞鳶尾

我們有一個數據集(如下圖)記錄了花卉的花瓣、萼片的寬高數據。表中的四列也就是之前提到的「特徵」。

載入數據

在引入 TensorFlow 和 NumPy 兩個模塊後,我們需要使用 TensorFlow 的 函數來載入數據集。這些數據(或者說特徵),都以浮點數的形式呈現,而每一列數據、目標花卉的標記則用 0、1 和 2 來表示,與三種花卉的品類相對應。

此時我已經將數據載入的結果輸出來了,現在我們可以通過命名屬性來取得訓練數據和相關的標記、目標。

構建模型

下一步我們需要構建模型了。為了完成這一步操作,首先需要設定特徵列。特徵列定義了進入模型當中的數據類型。我們使用四個維度的特徵列來表示數據集中的特徵,並將之稱為「花卉特徵」。

要搞定評估器非常簡單。 通過把特徵列、模型預測的輸出數量(此處為 3)和指定的用於存儲模型訓練進程以及輸出結果的目錄傳入函數就能實例化模型了。這些參數有助於讓 TensorFlow 從中斷點繼續之前的訓練。

輸入函數

上述的 classifier 對象會為我們記錄訓練狀態,此時差不多可以開始訓練了。勝利在望,我們的模型距離成功連接訓練數據僅僅只差一個輸入函數。輸入函數的主要工作是創建一個可以為模型生成數據的 TensorFlow 運算元。

現在,所以我們已經完成了從處理原始數據,到創建輸入函數(傳入之後會以特徵列來映射的數據)的過程。要注意的是我們使用與元數據中同樣的特徵列名作為特徵值的標記,這樣數據與模型訓練才能對應起來。

開始訓練

接下來開展訓練工作。只需將輸入函數傳入 方法就可以了。我們就是這樣將數據與模型聯繫起來的。

訓練函數會控制在數據集上循環或迭代的過程,同時在每一階中不斷提升自身性能。正如我們所料,下圖顯示已經成功完成了 1000 個階的訓練!我們的數據集並不算大,所以這個過程非常快。

精確度評估

好啦,是時候評估結果了。由於前面的 classifier 對象保存了模型訓練的狀態,所以我們此處仍然使用同一個對象來評估。要評估模型的優劣,我們通過調用 並傳入測試數據,然後從返回的矩陣當中提取出精確度數據即可。

快看!得到的精確度是 96.88%,厲害了我的哥!

評估器:一路向前的流水線

這周就先進行到這裡,一起來回顧學習評估器的收穫:

Estimator API 為我們提供了一個優秀的流水線用於獲取元數據、傳入輸入函數、配置特徵列和模型結構、運行訓練過程和進行預測。這個易於理解的框架讓我們能夠關注數據和他們的屬性,而不需要一直糾結數學上的問題,實在是贊!

下回預告

這次我們一起用封裝好的評估器來淺嘗了簡單版的 TensorFlow 高級 API。後面我們還會了解怎樣為模型加入更多細節、使用更複雜的數據和加入更多高級功能。

敬請期待!

感謝 & 互動

感謝來自社區的 Yuan、萌東對本系列視頻/文章的翻譯。

這位朋友先別走,TensorFlow 了解一下 (゜-゜)つロ :

https://www.bilibili.com/video/av24089149

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

達不足喜,窮不足悲
小說連載三小鳥瘋了

TAG:全球大搜羅 |