機器學習進階筆記之十一 | 利用TensorFlow實現智能數字識別

引言

TensorFlow是Google基於DistBelief進行研發的第二代人工智慧學習系統,被廣泛用於語音識別或圖像識別等多項機器深度學習領域。其命名來源於本身的運行原理。Tensor(張量)意味著N維數組,Flow(流)意味著基於數據流圖的計算,TensorFlow代表著張量從圖象的一端流動到另一端計算過程,是將複雜的數據結構傳輸至人工智慧神經網中進行分析和處理的過程。

TensorFlow完全開源,任何人都可以使用。可在小到一部智能手機、大到數千台數據中心伺服器的各種設備上運行。

『機器學習進階筆記』系列將深入解析TensorFlow系統的技術實踐,從零開始,由淺入深,與大家一起走上機器學習的進階之路。

目錄

nn

1. Mnist數字識別項目介紹

nn

2. 準備工作

nn

  • 申請一台UCloud雲主機
  • 配置Tensorflow環境

3. 編寫你的第一個Tensorflow項目——Mnist數字識別

nn

  • 訓練你的模型

  • 測試你的模型

Mnist數字識別介紹

nn

人工智慧技術已經逐漸滲透到生活中的方方面面,從大名鼎鼎的AlphaGo,再到身邊的廣告展示、新聞智能推薦等,人工智慧技術已經被廣泛運用於各行各業。近年來,人工智慧技術在圖像(物體識別、人臉識別等)、自然語言(語音識別、翻譯、對話機器人)、智能醫療、智能推薦(廣告、新聞、視頻)等領域取得了飛速的發展。

nn

在圖像識別領域中,隨著人類社會的信息量成幾何級數增長,如果對圖像的識別還僅僅是用人類的肉眼去判斷的話,那其龐大的工作量對於我們人類來說,就是一個不可能完成的任務。但在今天,隨著人工智慧技術的快速發展,基於深度學習研究理論的技術日趨成熟並廣泛應用,對海量圖像的識別進行自動智能化識別,已成為了現實。

nn

Mnist數字識別項目就正是屬於圖像識別領域,Mnist是一個入門級的計算機視覺數據集,它包含各種手寫數字圖片,如下圖圖1所示。

圖1

nn

它也包含每一張圖片對應的標籤,告訴我們這個是數字幾。比如,上圖圖1所示,這四張圖片的標籤分別是5、0、4、1。

nn

在這個項目中,我們將通過深度學習通用框架Tensorflow,訓練一個深度學習模型用於預測圖片裡面的數字是幾。

nn

通過這個項目,你除了可以見識計算機可以自動智能識別出圖片中的數字是幾,更重要的是,你可以了解深度學習框架Tensorflow的工作流程和深度學習的基本概念。本文檔將從開始的準備工作到最後的項目部署一步一步手把手的教你完成這個項目,也將很詳細地介紹所用代碼的實現原理,讓你對深度學習工作流程有個完整的體會。

nn

好,相信你看到這裡已經迫不及待摩拳擦掌躍躍欲試了吧?那我們將進入文檔的下一步,一起來完成這個有趣的數字識別項目吧!Let』s go!

準備工作

nn

1. 申請一台UCloud雲主機

nn

如下圖圖2所示,首先在你的瀏覽器地址上輸入網址ucloud.cn/ 進入UCloud官網首頁,然後點擊頁面右上方的登陸按鈕(如未註冊,需先註冊)。

圖2

nn

進入用戶登陸頁面,填寫你的用戶名及密碼,如下圖圖3所示。

nnnn

圖3

nnnnnn

登錄以後,選擇產品的雲主機UHost一欄,點擊立即使用按鈕,如下圖圖4所示。

nnnn

圖4

nn

在點擊後出現的頁面中,選擇主機管理一欄的創建主機按鈕,如下圖圖5所示。

nnnn

圖5

nnnnnnnnnnnnnnnn

在隨後出現的頁面中配置你當前申請的雲主機的相關參數,最後根據頁面右邊欄的所需費用價格點擊立即購買按鈕進行購買,如下圖圖6所示。

圖6

nn

到現在為止你就已經申請好一台UCloud的雲主機了,現在就可以啟動並登陸你剛剛創建好的UCloud的雲主機了,如下圖圖7所示。

圖7

nnnnnnnnnnnn

2. 配置Tensorflow環境

nn

進入終端,如下圖圖8所示。

圖8

nn

首先獲取軟體包的列表,在命令行鍵入命令

sudo apt-get updaten

再安裝python環境,在命令行鍵入命令

sudo apt-get install pythonn

nn

再依次安裝Tensorflow環境的依賴包,依次在命令行鍵入如下命令:

nn

sudo apt-get install python-pipnnsudo apt-get install python-devnnwget https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whlnnsudo pip install tensorflow-0.11.0-cp27-none-linux_x86_64.whln

nn

如果沒有出現什麼錯誤提示,那麼到現在為止,Tensorflow環境就已經搭建好了。

nn

編寫你的第一個Tensorflow項目——Mnist數字識別

nn

1. 訓練你的模型

nn

在名為Trainmodel.py文件下鍵入如下代碼:

nn

from __future__ import absolute_importnfrom __future__ import divisionnfrom __future__ import print_functionn# Import datanfrom tensorflow.examples.tutorials.mnist import input_datanimport tensorflow as tfnnnflags = tf.app.flagsnFLAGS = flags.FLAGSnflags.DEFINE_string(data_dir,/tmp/data/, Directory for storing data)nnnmnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)nsess = tf.InteractiveSession()nnn# Create the modelnx = tf.placeholder(tf.float32, [None,784])nW = tf.Variable(tf.zeros([784, 10]))nb = tf.Variable(tf.zeros([10]))ny = tf.nn.softmax(tf.matmul(x, W) + b)nnn# Define loss and optimizerny_ = tf.placeholder(tf.float32, [None,10])ncross_entropy = tf.reduce_mean(-tf.reduce_sum(y_* tf.log(y), reduction_indices=[1]))ntrain_step =tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)nnnsaver = tf.train.Saver()nnn# Trainntf.initialize_all_variables().run() nfor i in range(1000):n batch_xs, batch_ys = mnist.train.next_batch(100)n train_step.run({x: batch_xs, y_: batch_ys})nnnsaver.save(sess,"./TFMnist_model")n

nn

在Trainmodel.py文件目錄下,命令行使用python Trainmodel.py命令運行代碼後,會在項目目錄下生成訓練模型文件,一個是名為TFMnist_model文件,另一個是名為TFMnist_model的meta文件,還有一個是checkpoint文件。至此為止,你的訓練模型就已經訓練完成了。

nn

2. 測試你的模型

nn

在名為Testmodel.py文件下鍵入如下代碼:

nn

import tensorflow as tfn# Import datanfrom tensorflow.examples.tutorials.mnist import input_datannnflags = tf.app.flagsnFLAGS = flags.FLAGSnflags.DEFINE_string(data_dir,/tmp/data/, Directory for storing data)nnnmnist =input_data.read_data_sets(FLAGS.data_dir, one_hot=True)nnn# Create the modelnx = tf.placeholder(tf.float32, [None,784])nW = tf.Variable(tf.zeros([784, 10]))nb = tf.Variable(tf.zeros([10]))ny = tf.nn.softmax(tf.matmul(x, W) + b)nnn# Define loss and optimizerny_ = tf.placeholder(tf.float32, [None,10])nnnsaver = tf.train.Saver()nnnwith tf.Session() as sess:n saver.restore(sess, "./TFMnist_model")n correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))n accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))n print(Testing------------n)n print(test accuracy: )n print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels}n

nn

在Testmodel.py文件目錄下,命令行使用python Testmodel.py命令運行代碼後運行代碼後,就會在控制台上看到自己剛剛訓練的模型,對測試數字識別的準確率了。

——————

相關閱讀推薦:

機器學習進階筆記之十 | 那些TensorFlow上好玩的黑科技

機器學習進階筆記之九 | 利用TensorFlow搞定「倒字驗證碼」

機器學習進階筆記之八 | TensorFlow與中文手寫漢字識別

機器學習進階筆記之七 | MXnet初體驗

機器學習進階筆記之六 | 深入理解Fast Neural Style

機器學習進階筆記之五 | 深入理解VGGResidual Network

機器學習進階筆記之四 | 深入理解GoogLeNet

機器學習進階筆記之三 | 深入理解Alexnet

機器學習進階筆記之二 | 深入理解Neural Style

機器學習進階筆記之一 | TensorFlow安裝與入門

本文由『UCloud內核與虛擬化研發團隊』提供。

關於作者:

楊鴻漸(@楊鴻漸 ),UCloud應用創新部深度學習研發工程師。

在校期間參與過國家自然科委「863項目」論文查重項目,其中做過基於知識圖譜的人選推薦。工作期間,參與過智能圖片鑒黃項目及AI平台搭建。學習過程中,對Tensorflow及Keras深度學習框架很有興趣,平時會寫寫爬蟲和看看演算法原理,有時也會去參加一些數據演算法比賽。生活中,喜歡嘗試新的事物和活動,沒事練練拳擊和吉他。

———徵稿的分割線———

如果你也有一些技術實踐經驗想分享給大家,歡迎投稿給我們:)

UCloud機構號將提供 300雲服務代金券贊助+500元/篇的轉載費+全技術渠道推廣資源!

你的文章將被更多技術同學閱讀、點贊、感謝、分享!

徵稿範圍

題材不限,與「技術」及「雲」相關即可,但文章不得少於500字,圖文並茂為佳。可以是:

  • 不同雲廠商產品使用體驗及數據評測;
  • 項目部署到雲平台前後數據分析對比;
  • 雲上遷移/部署過程遇到的問題及解決方案;
  • 其他雲上部署經驗;

……

作品提交鏈接:cn.mikecrm.com/fj6KmCu

「UCloud機構號」將獨家分享雲計算領域的技術洞見、行業資訊以及一切你想知道的相關訊息。

歡迎提問&求關注 o(*////▽////*)q~

以上。

推薦閱讀:

小米年會雷軍定下2017年小目標:收入破千億元
設計師的機器學習系列隨筆1-設計師為什麼要學機器學習
非技術背景入門人工智慧,有哪些值得推薦的基礎學習資料?

TAG:云计算 | 机器学习 | 人工智能 |