每天更新教程,記得關注《編程高手傑瑞》哦!
人工智慧——深度學習
要說當前熱度最高的領域,非人工智慧領域莫屬。人工智慧(Artificial Intelligence,AI)是指計算機像人一樣擁有智能能力,是一個融合計算機科學、統計學、腦神經學和社會科學的前沿綜合學科,可以代替人類實現識別、認知,分析和決策等多種功能。
人工智慧的意義是:為機器賦予人的智能,而機器學習是實現「為機器賦予人的智能」的一種方法,深度學習則是一種實現機器學習的技術,準確來說,深度學習並不等於人工智慧,它只是人工智慧的一個子集而已。目前用來實現深度學習的框架有谷歌的TensorFlow、Facebook的Torch、Keras、Mxnet,除此之外還有百度最近開源的PddlePaddle Fluid框架等。
今天傑瑞就利用TensorFlow深度學習框架教大家如何解決一個簡單的線性回歸擬合問題。
教學
我們需要用到tensorflow框架和numpy數學庫,如果各位同學沒有安裝tensorflow框架和numpy數學庫的話,可以跟著以下步驟來安裝。
使用pip命令進行安裝:
在控制臺輸入:pip install tensorflow命令即可安裝tensorflow框架
在控制臺輸入:pip install numpy即可安裝numpy數學庫
首先導入tensorflow、numpy模塊。
將要預測的表達式
我們預測的表達式為:y = x*0.3 + 0.1,其中weights等於0.3,biases等於0.1,在這個模型中,我們需要預測出weights和biases的值,所以我們給出這樣組訓練數據[x1,x2,x3,x4……,x19,x20]、[y1,y2,y3,y4……,y19,y20],這兩組數據裡面,很明顯我們能看得出裡面的關係是:yi = xi*0.3+0.1,但現在我們要做的是讓機器能夠從這兩組數據裡面學習到,weights等於0.3,biases等於0.1。
接下來,我們使用numpy生成我們需要的訓練數據,在這裡傑瑞使用numpy.random.rand()方法生成一個擁有100個元素的行向量。numpy.random.rand()可以返回一個或一組服從「0~1」均勻分布的隨機樣本值。隨機樣本取值範圍是[0,1)。
下圖就是生成的行向量:
開始設計網絡結構
接下來我們開始設計網絡結構,這個模型的網絡結構非常簡單,我們只要實現y=x*0.3+0.1這個表達式就行了。所以,傑瑞使用tensorflow.Variable()方法分別生成weights和biases。注意,在tensorflow中,所有的變量都需要用.Variable()方法聲明,否則將無法正常使用。
這個是我們所使用的損失函數表達式(最後將整個行向量求平均值):
開始訓練
結構設計完成之後就開始訓練了,傑瑞在這裡進行400次訓練,然後每20步輸出當前的weights和biases的值,從下圖中可以看到,隨著訓練步驟的增加weights和biases越來越接近0.3和0.1。
源碼獲取
先關注《編程高手傑瑞》並點讚該文章,源碼地址將在評論區給出,請注意相關信息。