亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

深度學習(Python)-- 神經(jīng)網(wǎng)絡入門

系統(tǒng) 2045 0

本章包括:

  • 神經(jīng)網(wǎng)絡的核心組件
  • 對Keras的介紹
  • 設置深度學習工作站
  • 使用神經(jīng)網(wǎng)絡解決基本分類和回歸問題

一、神經(jīng)網(wǎng)絡的剖析

??訓練神經(jīng)網(wǎng)絡圍繞以下對象:

  1. 圖層,組合成網(wǎng)絡(或模型)。層是數(shù)據(jù)處理模塊,其將一個或多個張量作為輸入并且輸出一個或多個張量。存儲在形狀(樣本,特征)的2D張量中的簡單矢量數(shù)據(jù)通常由密集連接的層處理,也稱為完全連接或密集層(Keras中的密集類)。存儲在形狀(樣本,時間步長,特征)的3D張量中的序列數(shù)據(jù)通常由諸如LSTM層的循環(huán)層處理。 存儲在4D張量中的圖像數(shù)據(jù)通常由2D卷積層(Conv2D)處理。
  2. 輸入數(shù)據(jù)和相應的目標 常見的網(wǎng)絡拓撲結構:Two-branch、networks、 Multihead networks、 Inception blocks。通過選擇網(wǎng)絡拓撲,可以將可能性空間(假設空間)約束到一系列特定的張量,將輸入數(shù)據(jù)映射到輸出數(shù)據(jù)。 接下來將要搜索的是這些張量操作中涉及的權重張量的一組很好的值。
  3. 損失函數(shù),定義用于學習的反饋信號。使其最小化。
  4. 優(yōu)化器,決定學習的進度。
    深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第1張圖片

二、 Keras

??目前,三個現(xiàn)有的后端實現(xiàn)是TensorFlow后端,Theano后端和Microsoft Cognitive Toolkit(CNTK)后端。使用Keras編寫的任何代碼都可以使用任何這些后端運行,而無需更改代碼中的任何內(nèi)容。
??定義模型有兩種方法:使用Sequential類(僅用于線性堆棧的層,這是迄今為止最常見的網(wǎng)絡架構)或功能API(用于層的有向非循環(huán)圖,它允許您構建完全任意的體系結構)。

三、建立深度學習工作站—NVIDIA GPU。

四、電影評論分類:二分分類示例

查看GitHub源碼

??學習根據(jù)評論的文本內(nèi)容將電影評論分類為正面或負面。
??使用IMDB數(shù)據(jù)集:來自Internet電影數(shù)據(jù)庫的一組50,000個高度極化的評論。 他們分為25,000條培訓評論和25,000條測試評論,每組評估50%為負,50%為正面評價。

1. IMDB數(shù)據(jù)集

??1)Loading the IMDB dataset
2、準備數(shù)據(jù)
??1)Encoding the integer sequences into a binary matrix
??因為無法將整數(shù)列表提供給神經(jīng)網(wǎng)絡,將列表轉換為張量的兩種方法:

  • 填充列表,使它們都具有相同的長度,將它們轉換為整數(shù)張形狀(samples,word_indices),然后將網(wǎng)絡中的第一層用作處理此類整數(shù)張量的層(嵌入層);
  • 對您的列表進行One-hot encode,將其轉換為0和1的向量。這里使用的是這個。將整數(shù)序列編碼為二進制矩陣。

3、構建網(wǎng)絡
??輸入數(shù)據(jù)是向量,標簽是標量(1和0):這是將遇到的最簡單的設置。Dense(16,activation=‘relu’),傳遞給每個Dense層(16)的參數(shù)是該層的隱藏單元的數(shù)量。 隱藏單元是圖層的表示空間中的維度。
??關于這樣一堆Dense圖層,有兩個關鍵的架構決策:1)要使用多少層;2)每層選擇多少個隱藏單位;這里使用了兩個中間層,每個層有16個隱藏單元,第三層將輸出關于當前評論情緒的標量預測。中間層將使用relu作為其激活功能,最后一層將使用sigmoid激活以輸出可執(zhí)行性(得分在0和1之間,越靠近1越積極)
??1) The model definition
??2) Compiling the model
??3) Configuring the optimizer
??4) Using custom losses and metrics
4、驗證方法
??1)Setting aside a validation set
??2)Training your model
??3)Plotting the training and validation loss
??4)Plotting the training and validation accuracy
??5)Retraining a model from scratch
5、使用經(jīng)過訓練的網(wǎng)絡生成對新數(shù)據(jù)的預測
6、進一步實驗
7、總結

  • 通常需要對原始數(shù)據(jù)進行相當多的預處理,以便能夠將其作為張量傳送到神經(jīng)網(wǎng)絡中。單詞序列可以編碼為二進制向量,但也有其他編碼選項。
  • 具有relu激活的密集層堆棧可以解決各種問題(包括情感分類),可能經(jīng)常使用。
  • 在二分分類問題(兩個輸出類)中,網(wǎng)絡應該以一個單元和一個sigmoid激活的Dense層結束:網(wǎng)絡的輸出應該是0到1之間的標量,編碼概率。
  • 在二分分類問題上使用這樣的標量sigmoid輸出,應該使用的損失函數(shù)是binary_crossentropy。
  • 無論遇到什么問題,rmsprop優(yōu)化器通常都是一個不錯的選擇。
  • 隨著模型的訓練數(shù)據(jù)越來越好,神經(jīng)網(wǎng)絡最終開始過度擬合,并最終獲得越來越糟糕的數(shù)據(jù),這些數(shù)據(jù)是模型以前從未見過的。
  • 務必始終監(jiān)控訓練集之外的數(shù)據(jù)的性能。
    運行結果:
    深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第2張圖片
    深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第3張圖片

五、新聞專線分類:多類分類示例

查看GitHub源碼

這是一個single-label, multiclass classification的例子
1、 Reuters數(shù)據(jù)集
??Reuters數(shù)據(jù)集是一個簡單,廣泛使用的文本分類數(shù)據(jù)集。 有46個不同的主題; 某些主題比其他主題更具代表性,但每個主題在訓練集中至少有10個示例。
??1) Loading the Reuters dataset
??2) Decoding newswires back to text
2、 準備數(shù)據(jù)
??1) Encoding the data
??要對標簽進行矢量化,有兩種方法:可以將標簽列表轉換為整數(shù)張量,也可以使用one-hot encoding(也叫做分類編碼,經(jīng)常使用)。除此外,在Keras中有一種內(nèi)置的方法。(from keras.utils.np_utils import to_categorical)
3、 構建網(wǎng)絡
??1) Model definition
??2) Compiling the model
4、 驗證方法
??1) Setting aside a validation set
??2) Training the model
??3) Plotting the training and validation loss
??4) Plotting the training and validation accuracy
??5) Retraining a model from scratch
5、 生成對新數(shù)據(jù)的預測
??1) Generating predictions for new data
6、 處理標簽和損失的不同方式
??處理標簽和損失的不同方式,我們之前提到過,編碼標簽的另一種方法是將它們轉換為整數(shù)張量,這種方法唯一會改變的是損失函數(shù)的選擇,從頭開始重新訓練模型中使用的損失函數(shù)是ategorical_crossentropy,期望標簽遵循分類編碼。但是對于整數(shù)標簽,應該使用sparse_categorical_crossentropy。
7、 具有足夠大的中間層的重要性
??1) 一個具有信息瓶頸的模型的例子,以4維為例
8、 進一步實驗
??1)嘗試使用更大或更小的層:32個單位,128個單位,依此類推。
??2)嘗試使用單個隱藏層或三個隱藏層。
9、總結

  • 如果嘗試在N個類別中對數(shù)據(jù)點進行分類,則網(wǎng)絡應以大小為N的Dense層結束。
  • 在單標簽,多類別分類問題中,網(wǎng)絡應以softmax激活結束,以便在N個輸出類別上輸出概率分布。
  • Categorical crossentropy幾乎總是我們應該用于此類問題的損失函數(shù)。它最小化了網(wǎng)絡輸出的概率分布與目標的真實分布之間的距離。
  • 在多類分類中有兩種處理標簽的方法:a) 通過分類編碼(也稱為單熱編碼)對標簽進行編碼,并使用categorical_crossentropy作為丟失函數(shù); b) 將標簽編碼為整數(shù)并使用arse_categorical_crossentropy損失函數(shù)。
  • 如果需要將數(shù)據(jù)分類為大量類別,則應避免由于中間層太小而在網(wǎng)絡中造成信息瓶頸。
    運行結果:
    顯示loss 和 accuracy 曲線:
    深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第4張圖片
    深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第5張圖片
    顯示準確度和與random baseline的對比:

深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第6張圖片

六、預測房價:一個回歸的例子

查看GitHub源碼

??前兩個示例被認為是分類問題,其目標是預測輸入數(shù)據(jù)點的單個離散標簽。 另一種常見類型的機器學習問題是回歸,它包括預測連續(xù)值而不是離散標簽。
??注意:不要混淆回歸和算法邏輯回歸。 邏輯回歸不是回歸算法 - 它是一種分類算法。
1、 波士頓住房價格數(shù)據(jù)集–Loading the Boston housing dataset
??本次采用的數(shù)據(jù)集具有相對較少的數(shù)據(jù):僅506,在404個訓練樣本和102個測試樣本之間分配。 輸入數(shù)據(jù)中的每個功能(例如,犯罪率)都有不同的比例。目標是自住房屋的中位數(shù),價值數(shù)千美元
2、 準備數(shù)據(jù)—Normalizing the data
??將神經(jīng)網(wǎng)絡輸入所有采用不同范圍的值都是有問題的,處理此類數(shù)據(jù)的一種廣泛的最佳實踐是進行特征標準化:對于輸入數(shù)據(jù)中的每個特征(輸入數(shù)據(jù)矩陣中的一列),減去feature的平均值并除以標準偏差,以便該要素以0為中心并具有單位標準差。 這很容易在Numpy中完成。
??注意,使用訓練數(shù)據(jù)計算用于歸一化測試數(shù)據(jù)的量。 不應該在工作流程中使用在測試數(shù)據(jù)上計算的任何數(shù)量,即使對于像數(shù)據(jù)規(guī)范化這樣簡單的事情也是如此。
3、 構建網(wǎng)絡—Model definition
??擁有的訓練數(shù)據(jù)越少,過度擬合就越差,使用小型網(wǎng)絡是緩解過度擬合的一種方法。
??網(wǎng)絡以單個單元結束而不激活(它將是線性層)。 這是標量回歸的典型設置(嘗試預測單個連續(xù)值的回歸)。應用激活函數(shù)會限制輸出可以采用的范圍, 例如,如果將sigmoid激活函數(shù)應用于最后一層,網(wǎng)絡只能學習預測0到1之間的值。這里,因為最后一層是純線性的,所以網(wǎng)絡可以自由地學習預測任何范圍內(nèi)的值。
??對于回歸問題,廣泛使用的損失函數(shù):mse loss函數(shù) - 均方誤差編譯網(wǎng)絡,即預測和目標之間差異的平方。
??在訓練期間監(jiān)控新指標:平均絕對誤差(MAE)。 它是預測和目標之間差異的絕對值。 例如,此問題的MAE為0.5意味著您的預測平均減少500美元。
4、 使用K-fold驗證來驗證我們的方法
??1) K-fold validation
??它包括將可用數(shù)據(jù)拆分為K個分區(qū)(通常為K = 4或5),實例化K個相同模型,并在評估剩余分區(qū)時對K-1分區(qū)進行訓練。所用模型的驗證分數(shù)是獲得的K驗證分數(shù)的平均值。
??2) Saving the validation logs at each fold
??3) Building the history of successive mean K-fold validation scores
??4) Plotting validation scores
??5) Plotting validation scores, excluding the first 10 data points
??6) Training the final model
5、總結

  • 使用與我們用于分類的不同的損失函數(shù)進行回歸。 均方誤差(MSE)是通常用于回歸的損失函數(shù)。
  • 用于回歸的評估指標與用于分類的評估指標不同; 自然地,準確性的概念不適用于回歸。 常見的回歸度量是平均絕對誤差(MAE)。
  • 當輸入數(shù)據(jù)中的要素具有不同范圍的值時,應將每個要素作為預處理步驟單獨進行縮放。
  • 當數(shù)據(jù)很少時,使用K-fold驗證是可靠評估模型的好方法。
  • 當可用的訓練數(shù)據(jù)很少時,最好使用一個隱藏層較少的小型網(wǎng)絡(通常只有一個或兩個),以避免嚴重的過度擬合。

??運行結果:
??K-fold validation:
深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第7張圖片
??繪制驗證分數(shù):
深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第8張圖片
??繪制排除前10個數(shù)據(jù)點的驗證分數(shù) :
深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第9張圖片
??訓練最終模型,結果:
深度學習(Python)-- 神經(jīng)網(wǎng)絡入門_第10張圖片
??我們?nèi)匀黄x約$ 2,678

本章總結

  1. 目前為止,可以處理矢量數(shù)據(jù)中最常見的機器學習任務:二分分類,多類分類和標量回歸。
  2. 通常需要在將原始數(shù)據(jù)輸入神經(jīng)網(wǎng)絡之前對其進行預處理。
  3. 當數(shù)據(jù)具有不同范圍的要素時,要在預處理過程中單獨縮放每個要素。
  4. 隨著訓練的進行,神經(jīng)網(wǎng)絡最終開始過度擬合并在前所未見的數(shù)據(jù)上獲得更差的結果。
  5. 如果沒有太多的訓練數(shù)據(jù),使用只有一個或兩個隱藏層的小型網(wǎng)絡,避免嚴重過度擬合。
  6. 如果數(shù)據(jù)分為多個類別,如果使中間層太小,可能會導致信息瓶頸。
  7. 回歸使用不同的損失函數(shù)和不同的評估指標而不是分類。
  8. 當處理少量數(shù)據(jù)時,K-fold驗證可以可靠地評估模型。

更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 老子影院午夜伦不卡手机 | 精品91自产拍在线观看一区 | 9久热这里只有精品视频在线观看 | 国产福利福利视频 | 欧美在线视频免费 | 亚洲综合久久久久久中文字幕 | 国产亚洲精品免费 | 波多野结衣高清在线播放 | 日本一级做人免费视频 | 亚洲视频免费播放 | 97视频免费上传播放 | 一级特级欧美午夜片免费观看 | 国产一级一国产一级毛片 | 91久久99热青草国产 | 欧美freesex呦交| 99尹人香蕉国产免费天天拍 | 亚洲欧洲日韩国产一区二区三区 | 亚洲精品久久99久久 | 亚洲综合春色另类久久 | 中文精品视频一区二区在线观看 | 亚洲夂夂婷婷色拍ww47 | 色婷婷中文网 | 天天操天天干天天 | 国产成人精品影院狼色在线 | 2019年国产不卡在线刷新 | 在线观看亚洲国产 | 国内一级特黄女人精品片 | 亚洲综合极品香蕉久久网 | 亚洲国产日韩欧美mv | 中日韩欧美中文字幕毛片 | 九九精品免视看国产成人 | 亚洲国产99在线精品一区69堂 | 国产视频一二 | 全黄毛片 | 日本爱爱视频 | 精品国产成人a在线观看 | 国产精品免费观在线 | 国产精品久久久免费视频 | 伊人久久波多野结衣中文字幕 | 免费观看欧美一级高清 | 国外欧美一区另类中文字幕 |