TensorFlow2-神经网络基础
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow2-神经网络基础
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
TensorFlow2神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
文章目錄
- TensorFlow2神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
- 數(shù)據(jù)加載
- 全連接神經(jīng)網(wǎng)絡(luò)
- 誤差計(jì)算
- 補(bǔ)充說明
數(shù)據(jù)加載
- TensorFlow依托Keras,預(yù)先封裝了很多小型的數(shù)據(jù)集,可以通過接口下載并使用該數(shù)據(jù)集。包含boston_housing(波士頓房價回歸預(yù)測數(shù)據(jù)集)、cifar10(Cifar圖像分類數(shù)據(jù)集共10大類)、cifar100(Cifar圖像分類數(shù)據(jù)集共100小類)、mnist(手寫數(shù)字識別數(shù)據(jù)集)、fashion_mnist(常用品分類數(shù)據(jù)集)、imdb(電影情感評論文本分類數(shù)據(jù)集)。
- 調(diào)用load_data方法TensorFlow會自動從Google下載暫存的數(shù)據(jù)集到本地(第一次運(yùn)行,后面不再下載,需要科學(xué)上網(wǎng)),然后以numpy格式返回訓(xùn)練集和測試集的x和y。
- tf.data.Dataset
- 在TensorFlow中,data模塊中的Dataset是一個很重要的對象,作為數(shù)據(jù)加載的接口。
- Dataset對象的form_tensor_slices方法可以很方便地從numpy矩陣等加載數(shù)據(jù)并進(jìn)行預(yù)處理(注意Dataset對象的使用必須先取得對應(yīng)的迭代器)。
- Dataset對象的shuffle方法可以很方便地打散數(shù)據(jù)(特征和標(biāo)簽同步打散),一般只需要一個buffer_size參數(shù),該數(shù)值越大,混亂程度越大。
- Dataset對象的map方法可以很方便地進(jìn)行數(shù)據(jù)預(yù)處理或者數(shù)據(jù)增廣的操作,其功能類似于Python的map方法,傳入一個函數(shù)對象,對每個數(shù)據(jù)調(diào)用該函數(shù)進(jìn)行處理。
- Dataset對象的batch方法可以直接設(shè)定每次取出數(shù)據(jù)的batch_size(默認(rèn)為1),這是最核心的功能。
- Dataset對象的repeat方法可以指定迭代器迭代的次數(shù)(在Python中對可迭代對象一旦取完就會停止取數(shù)據(jù),但是訓(xùn)練往往需要很多輪次),默認(rèn)不指定repeat的參數(shù)則會一直迭代下去。
全連接神經(jīng)網(wǎng)絡(luò)
- 說明
- 經(jīng)典的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是由多個隱藏層的神經(jīng)元級聯(lián)形成的全連接神經(jīng)網(wǎng)絡(luò),后來各類針對不同任務(wù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)都是基于全連接神經(jīng)網(wǎng)絡(luò)的思路,如計(jì)算機(jī)視覺的卷積神經(jīng)網(wǎng)絡(luò)、自然語言處理的循環(huán)神經(jīng)網(wǎng)絡(luò)等。對于全連接神經(jīng)元的神經(jīng)網(wǎng)絡(luò),由于結(jié)構(gòu)固定,已經(jīng)做了一定程度的封裝。
- tf.keras.layers.Dense(units)
- 可以創(chuàng)建包含參數(shù)w和偏置b的一層全連接層網(wǎng)絡(luò),units表示神經(jīng)元的數(shù)目。注意在創(chuàng)建Dense對象后,weights參數(shù)是默認(rèn)沒有創(chuàng)建的,需要通過build方法創(chuàng)建,使用net實(shí)例進(jìn)行運(yùn)算時會自動檢查參數(shù),若沒有創(chuàng)建,則依據(jù)參與運(yùn)算的數(shù)據(jù)自動創(chuàng)建weights。
- tf.keras.Sequential
- Sequential是用于線性堆疊多層網(wǎng)絡(luò)結(jié)構(gòu)的一個基礎(chǔ)容器,其會自動將輸入的張量流過多層得到輸出。
誤差計(jì)算
- MSE均方差
- 計(jì)算式為loss?=1N∑(y?out)2\operatorname{loss}=\frac{1}{N} \sum(y-o u t)^{2}loss=N1?∑(y?out)2,在TensorFlow中對這類簡單的誤差函數(shù)(損失函數(shù))進(jìn)行了簡單封裝。MSE這類損失函數(shù)一般都要除以一個樣本量N,以保證求得的梯度值不會太大。
- CrossEntropy交叉熵
- 計(jì)算式為H(p,q)=?∑p(x)log?q(x)H(p, q)=-\sum p(x) \log q(x)H(p,q)=?∑p(x)logq(x),預(yù)測的q分布盡量逼近于真實(shí)的p分布,此時交叉熵函數(shù)值最小,故優(yōu)化該損失函數(shù)合理。在TensorFlow中,對交叉熵函數(shù)計(jì)算進(jìn)行了封裝。
補(bǔ)充說明
- 本文主要針對TensorFlow2中數(shù)據(jù)加載和誤差計(jì)算的接口進(jìn)行了簡略說明。
- 博客同步至我的個人博客網(wǎng)站,歡迎瀏覽其他文章。
- 如有錯誤,歡迎指正。
總結(jié)
以上是生活随笔為你收集整理的TensorFlow2-神经网络基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据科学竞赛-计算机视觉赛流程
- 下一篇: TensorFlow2-神经网络训练