TensorFlow 建立網路模型
TensorFlow 建立網路模型
上次一我們在fashion-mnist上面體驗了一把,但是裡面有一些建立模型和一些TensorFlow的基礎概念都沒有給大家講,所以這節決定將這方面的知識介紹一些,上節是為了引起大家的注意,TensorFlow具有很強大的功能,我們只能後續慢慢的學習。
1.其實在上一次的實例中,有很多地方確實是很困惑的,如果沒有接觸過機器學習的小夥伴可能理解起來會有一些問題,那麼我開頭就稍微講一下,機器學習有一些什麼?就我現在了解的一些內容給大家介紹,有可能有一些不到位的地方,還請多多包涵:
其實機器學習,總的宗旨就是利用數據的特徵來做識別和分類等任務
第一大類是分類工作,假設有一百類,經典的做法,就是使用神經網路提取一些數據的特徵,然後利用softmax輸出層進行不同種類概率的預測:
上面是softmax層計算的公式,從一百類裡面找出每一類的概率值,然後按照概率值來預測輸入數據是哪一種類型,就像上一次文章裡面的fashion-mnist的數據一樣,會預測出輸出的類別。softmax(i)代表的就是這個種類的概率值,取最大值作為預測類別。
你可以把一個矩陣看成一個數據集合,一行是一個數據信息,就和我們的關係型數據一樣,一行代表一個表的一條信息,那麼每列就是每一行數據的一個屬性,那麼在機器學習裡面就是數據的特徵了,因為在網路模型中,每個特徵都有對應的權重,那麼,對於每個特徵來說,對於最後的分類,識別等工作起的重要程度是不一樣的。這也和我們的資料庫信息差不多,有一些信息也是無關緊要的。有些信息可以主要決定這一行數據。
第二大類就是回歸,回歸可以看作是一個連續的分類,對於二維數據來說,其實就是根據你給出的數據來擬合一條線。對於三維來講就是擬合一個平面。再高維就是超平面。
2.最近,也就是2018年3月31在加利福尼亞州山景城的計算機歷史博物館舉辦了第二屆TensorFlow開發者峰會,會上有超過500名使用TensorFlow的用戶,還有一些觀眾,大家有興趣的話可以關注youtube的TensorFlow官方頻道。可以查看開會的視頻。
TensorFlow應用廣泛,其中有使用TensorFlow來做開普勒任務分析的
也有使用TensorFlow預測心臟發作和中風概率
還有一些應用在現實當中的項目。
這讓我們認識到TensorFlow對於實際領域中應用的越來越廣泛,所以我們不學習是不是有點虧。這麼好的開源項目。
3.上一次我們既然做過了一次服裝類別識別,那麼這次我主要從TensorFlow建立模型的步驟講起:讓大家再深入理解一下TensorFlow。
第一步也是很重要的一步,那就是導入數據。
第二步一般就是對數據進行的預處理,一般包括歸一化數據,轉換數據等操作。
第三步設置演算法的超參數,一般也就是學習率,batchsize(批處理個數),epoch(輪次)。這裡舉一個例子,假如你有10000條訓練數據。那麼,batchsize設置為100,那麼你的一個epoch就迭代100次才能將所有數據訓練一遍,每次輸入數據是100條,因為一個epoch的意思就是訓練完一次訓練數據,所以一個epoch是迭代100次就可以結束一輪了。learningrate一般設置為0.1-0.0001之間,但是也不排除一些特殊情況,主要是learningrate設置的過小,反向傳播更新參數的時候速度會很慢,設置的過大,會出現無法收斂的情況。
第四步設置變數和placeholders,變數是記錄權重和偏置項信息的,一般在最小化loss函數的時候,反向傳播演算法會更新權重和偏置項,TensorFlow導入數據是通過placeholders來實現的,大家還記得我們上次的fashion-mnist識別,我的數據就是通過先定義placeholders,最後在Session運行的時候,在feed_dict這個字典參數裡面將訓練數據喂進去的。
第五步定義圖模型,我們有了數據,初始化了變數和placeholders,那我們就需要定義一個圖模型,來生成TensorFlow的圖模型(計算圖)我們必須告訴TensorFlow對我們的數據進行哪些操作,來讓我們的模型具有預測能力(更加深入的運算我們在後續的博客裡面會陸續講到)
第六步聲明loss函數,在上面計算圖中我們定義了一些對我們數據的操作。那麼我們需要驗證我們預測的輸出,和我們真實之間的差距,一般對於回歸任務來講的話,就是平方誤差:這樣就求得了平方誤差。但是對於分類任務,那就是交叉熵誤差。就像上一節我們用到的loss生成函數就是softmax這種方式。,交叉熵的公式後續用到再給大家介紹。
第七步聲明了loss函數以後,我們需要使用BP演算法也就是反向傳播演算法來更新權重和偏置項。在TenorFlow框架裡面有好多這樣的優化器,都在 tf.train這個模塊裡面。
最後一步那就是初始化會話Session(),開始訓練模型
4.由上面的步驟,大家再結合上一次的網路代碼,是不是可以理解了TensorFlow在建立一個網路模型的時候的具體步驟。
5.其實在TensorFlow中還有一個很重要的概念,那就是Tensor,上次說過了它的概念,那麼接下來我講一下TensorFlow裡面的Tensor。
6.那怎麼使用tensorboard
可以看到我上面執行的命令。然後在瀏覽器裡面輸入127.0.0.1:6006然後你就可以看到剛才那個變數的操作過程,這就是tensorboard的魅力
上面就是一個變數在進行初始化時候可視化顯示
7. Placeholders使用(一樣可以使用tensorboard來查看)
總結
第一篇 TensorFlow安裝
第二篇 TensorFlow初體驗(fasion-mnist識別)
修改pip全局鏡像方法
※文本聚類系列教程:(三)構建詞袋空間VSM(Vector Space Model
TAG:weafteam |