日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习实战1(基本概念、全连接神经网络、CNN)

發(fā)布時(shí)間:2023/12/20 pytorch 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习实战1(基本概念、全连接神经网络、CNN) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、深度學(xué)習(xí)基礎(chǔ)

1.1 深度學(xué)習(xí)(DL)概念

深度學(xué)習(xí)是指從有限樣例中通過算法總結(jié)出一般性的規(guī)律,并可以應(yīng)用到新的未知數(shù)據(jù)上。神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)并不等價(jià),深度學(xué)習(xí)可以采用神經(jīng)網(wǎng)絡(luò)模型,也可以采用其他模型,但由于神經(jīng)網(wǎng)絡(luò)可以比較容易的解決貢獻(xiàn)度分配問題,因此神經(jīng)網(wǎng)絡(luò)模型成為深度學(xué)習(xí)中主要采用的模型。

  • 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)子問題,主要目的是從數(shù)據(jù)中自動(dòng)學(xué)習(xí)到有效的特征表示。所謂深度是指原始數(shù)據(jù)進(jìn)行非線性特征轉(zhuǎn)換的次數(shù)。
  • 深度學(xué)習(xí)是將原始的數(shù)據(jù)特征通過多步特征轉(zhuǎn)換得到一種特征表示,并進(jìn)一步輸入到預(yù)測(cè)函數(shù)得到最終結(jié)果。
  • 深度學(xué)習(xí)需要解決的關(guān)鍵問題是貢獻(xiàn)度分配問題(CAP),即一個(gè)系統(tǒng)中不同的組件或其參數(shù)對(duì)最終系統(tǒng)輸出結(jié)果的貢獻(xiàn)或影響。
  • 深度學(xué)習(xí)采用的模型主要是神經(jīng)網(wǎng)絡(luò)模型,其主要原因是神經(jīng)網(wǎng)絡(luò)模型可以使用誤差反向傳播算法,從而比較好的解決貢獻(xiàn)度分配問題。
  • 1.2 深度學(xué)習(xí)模型

    深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,神經(jīng)網(wǎng)絡(luò)是由大量相互連接的神經(jīng)元節(jié)點(diǎn)構(gòu)成的進(jìn)行信息處理的數(shù)學(xué)模型??蓪⑸窠?jīng)元按功能分為輸入層、隱藏層和輸出層三個(gè)層次。其中輸入層接受數(shù)據(jù)輸入,將輸入數(shù)據(jù)傳遞給第一層隱藏層,由隱藏層對(duì)輸入數(shù)據(jù)進(jìn)行相關(guān)數(shù)學(xué)計(jì)算,最后經(jīng)由輸出層產(chǎn)生輸出。

    傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的隱藏層數(shù)目一般不超過兩層,但深度學(xué)習(xí)網(wǎng)絡(luò)一般含多層隱藏層?。典型的深度學(xué)習(xí)模型包括卷積神經(jīng)網(wǎng)絡(luò)、深度信念網(wǎng)絡(luò)、堆疊自編碼網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。

    1.2.1 全連接神經(jīng)網(wǎng)絡(luò)

    全連接神經(jīng)網(wǎng)絡(luò)(Fully Connected Neural Network),CNN、RNN、LSTM等網(wǎng)絡(luò)都是基于全連接神經(jīng)網(wǎng)絡(luò)出發(fā)。

    ?

    ?圓圈中的計(jì)算公式:

    ?反向傳播

    ?神經(jīng)網(wǎng)絡(luò)的輸出Y 與真實(shí)值Y 之間的損失Loss

    ?上述的公式經(jīng)過化簡(jiǎn),我們可以看到A、B、C、D、E、F都是常系數(shù),未知數(shù)就是w 和b ,也就是為了讓Loss 最小,我們要求解出最佳的w 和b 。

    為了求解 Loss,我們采用梯度下降法

    ?學(xué)習(xí)率α,一般在(0,1)之間,一般來說,學(xué)習(xí)率越大,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度越快。如果學(xué)習(xí)率太小,網(wǎng)絡(luò)很可能會(huì)陷入局部最優(yōu);但是如果太大,超過了極值,損失就會(huì)停止下降,在某一位置反復(fù)震蕩。

    1.2.2 卷積神經(jīng)網(wǎng)絡(luò)

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是深度學(xué)習(xí)的代表模型。常用于目標(biāo)檢測(cè)、圖像識(shí)別、模式分類和數(shù)據(jù)預(yù)測(cè)等。主要由輸入層、隱藏層(其中包含卷積層、激活函數(shù)、池化層、全連接層)和輸出層組成。

    一個(gè)經(jīng)典的CNN網(wǎng)絡(luò)結(jié)構(gòu)一般包含輸入層(Input layer)、卷積層(convolutional layer)、池化層(pooling layer)和輸出層(全連接層+softmax layer)。

    • 輸入層: 網(wǎng)絡(luò)的輸入,以圖像為例,一般代表一張圖片的像素矩陣。

    以處理圖像數(shù)據(jù)為例。在處理圖像時(shí),輸入層一般代表一張圖像的三維像素矩陣,大小通常為w*h*3或者w*h*1的矩陣,其中這三個(gè)維度分別圖像的寬度、長度、深度。深度也稱為通道數(shù),在彩色圖像中有R、G、B三種色彩通道,而黑白圖像只有一種色彩通道。

    • 卷積層: CNN中最為重要的部分。通過卷積操作獲取圖像的局部區(qū)域信息。

    卷積操作:

    卷積操作通過使用過濾器filter(也稱作卷積核),將當(dāng)前層神經(jīng)網(wǎng)絡(luò)上的子節(jié)點(diǎn)矩陣轉(zhuǎn)化為下一層神經(jīng)網(wǎng)絡(luò)上的一個(gè)節(jié)點(diǎn)矩陣,得到的矩陣稱之為特征圖(feature map)。

    首先,先定義一個(gè)3*3 的filter,其實(shí)是一個(gè)矩陣。filter的數(shù)值這里是手工設(shè)置的。在實(shí)際中,這些值是網(wǎng)絡(luò)的參數(shù),通常是隨機(jī)初始化后通過網(wǎng)絡(luò)學(xué)習(xí)得到的

    ?

    卷積操作就是filter矩陣跟filter覆蓋的圖片局部區(qū)域矩陣(如下圖image中的黃色區(qū)域)對(duì)應(yīng)的每個(gè)元素相乘后累加求和。

    ?

    ?計(jì)算過程如下:

    在完成上面的卷積操作后,filter會(huì)繼續(xù)移動(dòng),然后再進(jìn)行卷積操作。一次移動(dòng)的距離稱作步長(Stride)。這里設(shè)定步長為1,則向右移動(dòng)1個(gè)單元格,在當(dāng)前區(qū)域繼續(xù)進(jìn)行卷積操作,得到卷積值。注意,卷積步長只在輸入矩陣的長和寬這兩個(gè)維度實(shí)施。

    ?

    當(dāng)filter移動(dòng)到輸入矩陣的最右側(cè)時(shí),下一次將向下移動(dòng)一個(gè)步長,同時(shí)從最左側(cè)重新開始。

    ?filter為什么能夠有效提取特征信息:

    • 如果有圖片的局部區(qū)域跟filter矩陣比較相似,在進(jìn)行卷積后的輸出值會(huì)比較大。卷積值越大,就越表明檢測(cè)到filter對(duì)應(yīng)的物體特征。
    • filter的大小只覆蓋圖片的局部區(qū)域,這種局部連接可以讓特征只關(guān)注其應(yīng)該關(guān)注的部分。這種設(shè)計(jì)符合人類對(duì)物體認(rèn)知原理的,試想一下,我們?cè)诳吹揭恢回埡?#xff0c;其實(shí)是記住這只貓各個(gè)區(qū)域最顯著的特征,這樣當(dāng)我們看到一只狗時(shí),就能夠根據(jù)局部特征區(qū)分貓與狗。
    • 同一個(gè)filter在進(jìn)行卷積計(jì)算時(shí)參數(shù)是不變的,也被稱作權(quán)值共享,這樣就可以檢測(cè)不同區(qū)域上相同的物體特征。

    前面計(jì)算的卷積值是輸入矩陣的線性函數(shù)。在實(shí)際使用中,引入激活函數(shù),其目的是增加整個(gè)網(wǎng)絡(luò)的非線性表達(dá)能力,否則,若干線性操作層的堆疊仍然是線性映射,無法形成復(fù)雜函數(shù),也就無法捕獲實(shí)際應(yīng)用中非線性特征的表達(dá)形式。

    • 池化層: 對(duì)數(shù)據(jù)進(jìn)行降采樣(Down Sampling),縮小數(shù)據(jù)規(guī)模,收集關(guān)鍵數(shù)據(jù),同時(shí)提高計(jì)算速度。

    池化層的作用是縮小特征圖,保留有用信息,得到一個(gè)更小的子圖來表征原圖。池化操作本質(zhì)上是對(duì)圖片進(jìn)行降采樣,可以認(rèn)為是將一張分辨率高的圖片轉(zhuǎn)化為分辨率較低的子圖,保留的子圖不會(huì)對(duì)圖片內(nèi)容理解產(chǎn)生太大影響。

    池化的方式一般有兩種:Max Pooling和Average Pooling

    Max Pooling,首先設(shè)定Pooling的大小與步長,然后覆蓋到對(duì)應(yīng)格子上面,找出最大值作為輸出結(jié)果,例如上圖Pooling選擇2×2,步長選擇為2,因此輸出就是2×2的維度,每個(gè)輸出格子都是對(duì)應(yīng)維度上輸入的最大值。

    如果為Average Pooling,那么就是選擇其間的平均值作為輸出的值。

    ?

    • 全連接層: 將學(xué)到的特征表示映射到類標(biāo)簽空間,起到分類器的作用。

    在經(jīng)過多層的卷積層和池化層操作后,一般會(huì)有1-2個(gè)全連接層,給出最后的分類結(jié)果。全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用,它將學(xué)到的特征表示映射到類標(biāo)簽空間。

    ?卷積核在滑動(dòng)過程中做的卷積運(yùn)算就是卷積核w 與其所覆蓋的區(qū)域的數(shù)進(jìn)行點(diǎn)積,最后將結(jié)果映射到卷積層。具體的運(yùn)算公式如下,過程為特征提取:

    CNN減少計(jì)算的方式:局部鏈接和權(quán)值共享方式

    ?

    卷積神經(jīng)網(wǎng)絡(luò)與全連接神經(jīng)網(wǎng)絡(luò)的區(qū)別

    1)總有至少1個(gè)的卷積層,用以提取特征。

    2)卷積層級(jí)之間的神經(jīng)元是局部連接和權(quán)值共享,這樣的設(shè)計(jì)大大減少了(w , b)的數(shù)量,加快了訓(xùn)練。

    (2)深度信念網(wǎng)絡(luò)

    深度信念網(wǎng)絡(luò)(Deep Belief Network, DBN)是一個(gè)概率生成模型,由多個(gè)限制波爾茨曼機(jī)(Restricted Boltzmann Machines, RBM)層組成。RBM 具有一個(gè)顯層和一個(gè)隱層,其中顯層由顯性神經(jīng)元(即顯元)組成,用于接收輸入數(shù)據(jù);隱層由隱性神經(jīng)元(即隱元)組成,用于特征提取。

    ?DBN 的訓(xùn)練過程主要可分為以下兩步,一是無監(jiān)督的預(yù)訓(xùn)練,二是反向微調(diào)。預(yù)訓(xùn)練是指無監(jiān)督地對(duì)每個(gè) RBM 網(wǎng)絡(luò)進(jìn)行逐層訓(xùn)練。其中最底層的 RBM 將以原始數(shù)據(jù)輸入進(jìn)行訓(xùn)練,之后再將底層 RBM 提取的特征輸入上一層的 RBM 繼續(xù)進(jìn)行訓(xùn)練。接下來重復(fù)這個(gè)過程直至訓(xùn)練合適的 RBM 層。

    卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的代表模型之一,其優(yōu)點(diǎn)是無需手動(dòng)選取特征,可以共享卷積核,方便處理高維數(shù)據(jù),缺點(diǎn)是需要調(diào)參且物理含義不明確。

    深度信念網(wǎng)絡(luò)解決了深層次神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間較長的問題,有效避免了深度學(xué)習(xí)容易陷入局部最優(yōu)的陷阱,易于拓展,但只能學(xué)習(xí)帶標(biāo)簽的數(shù)據(jù)。堆疊稀疏自編碼器用自編碼器替換了傳統(tǒng) DBN 中的 RBM 層,大大方便了無標(biāo)簽數(shù)據(jù)的學(xué)習(xí)。?
    循環(huán)神經(jīng)網(wǎng)絡(luò)是一類以序列數(shù)據(jù)為輸入的遞歸神經(jīng)網(wǎng)絡(luò),通過各個(gè)隱藏層之間的聯(lián)系,使得當(dāng)前的輸出與前一時(shí)刻的輸出有關(guān),實(shí)現(xiàn)對(duì)處理過的信息進(jìn)行記憶,但當(dāng)序列過長時(shí) RNN 的表現(xiàn)不佳。長短期記憶網(wǎng)絡(luò)是一種改進(jìn)的 RNN 模型,在 RNN 的基礎(chǔ)上增加了三個(gè)控制門,通過增加的控制單元解決了 RNN 中長序列依賴問題,常用于長時(shí)間序列的預(yù)測(cè),非常適合應(yīng)用于城市軌道交通短期客流預(yù)測(cè)領(lǐng)域。?

    (3)循環(huán)神經(jīng)網(wǎng)絡(luò)

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是一類以序列數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸,且所有節(jié)點(diǎn)按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)。。

    傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型中,同一個(gè)隱藏層中的神經(jīng)元節(jié)點(diǎn)間并無連接,而 RNN 增加了各個(gè)隱藏
    層內(nèi)部節(jié)點(diǎn)之間的聯(lián)系,通過隱藏層之間的關(guān)聯(lián)作用,使得當(dāng)前的輸出與前一時(shí)刻的輸出有關(guān),實(shí)現(xiàn)對(duì)處理過的信息進(jìn)行記憶。


    (4)長短期記憶神經(jīng)網(wǎng)絡(luò)

    長短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)是 RNN 的一種變體,由于 LSTM 網(wǎng)絡(luò)通過門控制將短期記憶與長期記憶結(jié)合起來,在一定程度上解決了 RNN 由于梯度消失只能有短期記憶的問題。?在實(shí)際應(yīng)用中,當(dāng)預(yù)測(cè)信息和相關(guān)信息間的間隔超過一定范圍時(shí),傳統(tǒng) RNN很難把它們關(guān)聯(lián)起來,同時(shí) RNN 也存在著梯度消失和梯度爆炸的問題。為了處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長的事件,Hochreiter 和 Schmidhuber 提出了長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)。

    區(qū)別于 RNN 的地方主要在于它在算法中加入了一個(gè)判斷信息是否有用的結(jié)構(gòu),稱為單元,以單元狀態(tài)來保存長期的記憶。

    LSTM 擅長學(xué)習(xí)和分類順序數(shù)據(jù)。常見的應(yīng)用領(lǐng)域包括情感分析、語音識(shí)別、視頻分析和時(shí)間序列預(yù)測(cè)等。

    長短時(shí)記憶模型(LSTM)的結(jié)構(gòu)與 RNN 相同,由輸入層、隱含層、輸出層構(gòu)成。與 RNN 不同的是,LSTM 中存在有記憶模塊,因此 LSTM 能夠?qū)τ诳土髁侩S時(shí)間的變化能夠進(jìn)行捕捉,通過進(jìn)行深層次的訓(xùn)練以便用于提取特征。

    2.2 人工智能(AI)

    人工智能就是讓機(jī)器的行為看起來就像是人所表現(xiàn)出來的智能行為一樣。

    • 感知能力:模擬人的感知能力,可對(duì)外部刺激信息進(jìn)行感知和加工,主要研究領(lǐng)域包括語言信息處理和計(jì)算機(jī)視覺等。
    • 學(xué)習(xí)能力:模擬人的學(xué)習(xí)能力,主要研究如何從樣例或從環(huán)境的交互中進(jìn)行學(xué)習(xí),主要研究領(lǐng)域包括監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。
    • 認(rèn)知能力:模擬人的認(rèn)知能力,主要研究領(lǐng)域包括知識(shí)表示、自然語言理解、推理、規(guī)劃、決策等。

    3.3. 機(jī)器學(xué)習(xí)(ML)

    機(jī)器學(xué)習(xí)讓計(jì)算機(jī)從數(shù)據(jù)中進(jìn)行自動(dòng)學(xué)習(xí),得到某種知識(shí)(或規(guī)律)。

    三、TensorFlow與Keras?簡(jiǎn)介

    3.1 TensorFlow 與Keras

    TensorFlow 框架是谷歌公司開發(fā)的最受歡迎的端到端深度學(xué)習(xí)平臺(tái),是一個(gè)用Python、C++和CUDA語言編寫的免費(fèi)開源軟件庫,廣泛用于各種深度學(xué)習(xí)網(wǎng)絡(luò)。

    keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,用python編寫,能夠在TensorFlow、CNTK和Theano上運(yùn)行。

    3.2 tensorflow與keras的區(qū)別

    tensorflow是比較地圖的深度學(xué)習(xí)模型開發(fā)語言,keras是基于tensorflow 的高級(jí)API,通常調(diào)用一些封裝好的函數(shù)就可以實(shí)現(xiàn)某些功能,而tensorflow比較底層,可以靈活的定義模型結(jié)構(gòu)。

    • ensorFlow和theano以及Keras都是深度學(xué)習(xí)框架,TensorFlow和theano比較靈活,也比較難學(xué)

    • Keras是一個(gè)由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可以作為Tensorflow、Microsoft-CNTK和Theano的高階應(yīng)用程序接口,進(jìn)行深度學(xué)習(xí)模型的設(shè)計(jì)、調(diào)試、評(píng)估、應(yīng)用和可視化

    參考文獻(xiàn):
    【1】C++11標(biāo)準(zhǔn)庫第二版:https://blog.csdn.net/a123a55/article/details/109403182

    【2】基于深度學(xué)習(xí)的城市軌道交通客流量預(yù)測(cè)研究 -北京交通大學(xué) 薛秋馳

    【3】基于深度學(xué)習(xí)模型的城市軌道交通短時(shí)客流量預(yù)測(cè)方法研究 -北京交通大學(xué) 王佳琳

    【4】深度學(xué)習(xí)開端|全連接神經(jīng)網(wǎng)絡(luò):https://zhuanlan.zhihu.com/p/104576756

    【5】一文掌握CNN卷積神經(jīng)網(wǎng)絡(luò):https://zhuanlan.zhihu.com/p/104776627

    【6】卷積神經(jīng)網(wǎng)絡(luò)CNN學(xué)習(xí):https://zhuanlan.zhihu.com/p/31919653

    【7】深度學(xué)習(xí)之卷積神經(jīng)網(wǎng)絡(luò)CNN:https://zhuanlan.zhihu.com/p/137756756

    總結(jié)

    以上是生活随笔為你收集整理的深度学习实战1(基本概念、全连接神经网络、CNN)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。