黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

深度學(xué)習(xí)(Python)-- 神經(jīng)網(wǎng)絡(luò)入門

系統(tǒng) 2244 0

本章包括:

  • 神經(jīng)網(wǎng)絡(luò)的核心組件
  • 對(duì)Keras的介紹
  • 設(shè)置深度學(xué)習(xí)工作站
  • 使用神經(jīng)網(wǎng)絡(luò)解決基本分類和回歸問(wèn)題

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

??訓(xùn)練神經(jīng)網(wǎng)絡(luò)圍繞以下對(duì)象:

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

二、 Keras

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

三、建立深度學(xué)習(xí)工作站—NVIDIA GPU。

四、電影評(píng)論分類:二分分類示例

查看GitHub源碼

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

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

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

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

3、構(gòu)建網(wǎng)絡(luò)
??輸入數(shù)據(jù)是向量,標(biāo)簽是標(biāo)量(1和0):這是將遇到的最簡(jiǎn)單的設(shè)置。Dense(16,activation=‘relu’),傳遞給每個(gè)Dense層(16)的參數(shù)是該層的隱藏單元的數(shù)量。 隱藏單元是圖層的表示空間中的維度。
??關(guān)于這樣一堆Dense圖層,有兩個(gè)關(guān)鍵的架構(gòu)決策:1)要使用多少層;2)每層選擇多少個(gè)隱藏單位;這里使用了兩個(gè)中間層,每個(gè)層有16個(gè)隱藏單元,第三層將輸出關(guān)于當(dāng)前評(píng)論情緒的標(biāo)量預(yù)測(cè)。中間層將使用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、驗(yàn)證方法
??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)過(guò)訓(xùn)練的網(wǎng)絡(luò)生成對(duì)新數(shù)據(jù)的預(yù)測(cè)
6、進(jìn)一步實(shí)驗(yàn)
7、總結(jié)

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

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

查看GitHub源碼

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

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

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

六、預(yù)測(cè)房?jī)r(jià):一個(gè)回歸的例子

查看GitHub源碼

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

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

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

本章總結(jié)

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

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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論