利用阿裡雲機器學習在深度學習框架下實現智慧圖片分類
更多深度文章,請關注雲計算頻道:https://yq.aliyun.com/cloud
伴隨著今日阿裡雲機器學習PAI在雲棲大會的重磅發佈,快來感受下人工智慧的魅力。
一、背景
隨著互聯網的發展,產生了大量的圖片以及語音資料,
下面嘗試通過阿裡雲機器學習平臺產品,
二、資料集介紹
使用CIFAR-10資料集,這份資料是一份對包含6萬張圖元為32*32的彩色圖片,這6萬張圖片被分成10個類別,
資料來源在使用過程中被拆分成兩個部分,其中5萬張用於訓練,1萬張用於測試。其中5萬張訓練資料又被拆分成5個data_batch,1萬張測試資料組成test_batch。最終資料來源如圖:
三、資料探索流程
下面我們一步一步講解下如何將實驗在阿裡雲機器學習平臺跑通,首先需要開通阿裡雲機器學習產品的GPU使用權限,並且開通OSS,用於存儲資料。
機器學習:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.112.IOG7OU
OSS:https://www.aliyun.com/product/oss?spm=a2c0j.103967.416540.50.KkZyBu
1.資料來源準備
第一步,進入OSS物件存儲,將本案例使用的相關資料和代碼放到OSS的bucket路徑下。首先建立OSS的bucket,
每個資料夾的作用如下:
check_point:用來存放實驗生成的模型
predict_code:用來存放訓練資料,也就是cifar_pai.py
train_code:用來存放cifar_predict_pai.py
2.配置OSS訪問授權
現在我們已經把資料和訓練需要的代碼放入OSS,下面要配置機器學習對OSS的訪問,
3.模型訓練
從左邊的組件框中拖拽“讀OSS Bucket”以及“Tensorflow”元件連結,並且在“Tensorflow”的配置項中進行相關設置。
Python代碼檔:OSS中的cifar_pai.py
數據原始目錄:OSS中的cifar-10-batches-py資料夾
輸出目錄:OSS中的check_point資料夾
點擊運行,實驗開始訓練,可以針對底層的GPU資源靈活調節,除了介面端的設置,需要在代碼中也有相應的支持,代碼編寫符合Tensorflow的多卡規範。
4.模型訓練代碼解析
這裡針對cifar_pai.py檔中的關鍵代碼講解:
(1)構建CNN圖片訓練模型
network = input_data(shape=[None, 32, 32, 3],(2)訓練生成模型model.tfl
model = tflearn.DNN(network, tensorboard_verbose=0)5.查看訓練過程中的日誌
訓練過程中,右鍵“Tensorflow”元件,點擊查看日誌。
點擊打開logview連接,按照如下鏈路操作,打開ODPS Tasks下面的Algo Task,按兩下Tensorflow Task,點擊StdOut,可以看到模型訓練的日誌被即時的列印出來:
隨著實驗的進行,會不斷打出日誌出來,對於關鍵的資訊也可以利用print函數在代碼中列印,結果會顯示在這裡。在本案例中,可以通過acc查看模型訓練的準確度。
5.結果預測
再拖拽一個“Tensorflow”元件用於預測,
Python代碼檔:OSS中的cifar_predict_pai.py
數據原始目錄:OSS中的cifar-10-batches-py資料夾,用來讀取bird_mount_bluebird.jpg檔
輸出目錄:讀取OSS中的check_point資料夾下模型訓練生成的model.tfl模型檔
預測的圖片是存儲在checkpoint資料夾下的圖:
結果見日誌:
6.預測代碼資料
部分預測代碼解析:
predict_pic = os.path.join(FLAGS.buckets, "bird_bullocks_oriole.jpg")首先讀入圖片“bird_bullocks_oriole.jpg”,將圖片調整為圖元32*32的大小,然後帶入model.predict預測函數評分,最終會返回這張圖片對應的十種分類['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']的權重,選擇權重最高的一項作為預測結果返回。
四、其它
免費體驗:阿裡雲數加機器學習平臺
往期文章:
【玩轉資料數列一】人口普查統計案例
【玩轉資料數列二】機器學習應用沒那麼難,這次教你玩心臟病預測
【玩轉資料數列三】利用圖演算法實現金融行業風控
【玩轉資料數列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦
【玩轉資料數列五】農業貸款發放預測
【玩轉資料數列六】文本分析演算法實現新聞自動分類
【玩轉資料數列七】有娃的注意了,機器學習教您如何提高孩子學習成績
【玩轉資料數列八】機器學習演算法的離線調度實現-廣告CTR預測
【玩轉資料數列九】機器學習為您解密霧霾形成原因
上述所有連結,在這都可以看到:https://yq.aliyun.com/articles/72841
點擊運行,實驗開始訓練,可以針對底層的GPU資源靈活調節,除了介面端的設置,需要在代碼中也有相應的支持,代碼編寫符合Tensorflow的多卡規範。
4.模型訓練代碼解析
這裡針對cifar_pai.py檔中的關鍵代碼講解:
(1)構建CNN圖片訓練模型
network = input_data(shape=[None, 32, 32, 3],(2)訓練生成模型model.tfl
model = tflearn.DNN(network, tensorboard_verbose=0)5.查看訓練過程中的日誌
訓練過程中,右鍵“Tensorflow”元件,點擊查看日誌。
點擊打開logview連接,按照如下鏈路操作,打開ODPS Tasks下面的Algo Task,按兩下Tensorflow Task,點擊StdOut,可以看到模型訓練的日誌被即時的列印出來:
隨著實驗的進行,會不斷打出日誌出來,對於關鍵的資訊也可以利用print函數在代碼中列印,結果會顯示在這裡。在本案例中,可以通過acc查看模型訓練的準確度。
5.結果預測
再拖拽一個“Tensorflow”元件用於預測,
Python代碼檔:OSS中的cifar_predict_pai.py
數據原始目錄:OSS中的cifar-10-batches-py資料夾,用來讀取bird_mount_bluebird.jpg檔
輸出目錄:讀取OSS中的check_point資料夾下模型訓練生成的model.tfl模型檔
預測的圖片是存儲在checkpoint資料夾下的圖:
結果見日誌:
6.預測代碼資料
部分預測代碼解析:
predict_pic = os.path.join(FLAGS.buckets, "bird_bullocks_oriole.jpg")首先讀入圖片“bird_bullocks_oriole.jpg”,將圖片調整為圖元32*32的大小,然後帶入model.predict預測函數評分,最終會返回這張圖片對應的十種分類['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']的權重,選擇權重最高的一項作為預測結果返回。
四、其它
免費體驗:阿裡雲數加機器學習平臺
往期文章:
【玩轉資料數列一】人口普查統計案例
【玩轉資料數列二】機器學習應用沒那麼難,這次教你玩心臟病預測
【玩轉資料數列三】利用圖演算法實現金融行業風控
【玩轉資料數列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦
【玩轉資料數列五】農業貸款發放預測
【玩轉資料數列六】文本分析演算法實現新聞自動分類
【玩轉資料數列七】有娃的注意了,機器學習教您如何提高孩子學習成績
【玩轉資料數列八】機器學習演算法的離線調度實現-廣告CTR預測
【玩轉資料數列九】機器學習為您解密霧霾形成原因
上述所有連結,在這都可以看到:https://yq.aliyun.com/articles/72841