主頁 >  其他 > 深度學習筆記總結(待更新)

深度學習筆記總結(待更新)

2022-01-06 16:44:48 其他

神經網路與深度學習結構(圖片選自《神經網路與深度學習》一邱錫鵬)

機器學習基礎學習可參考:

機器學習知識點總結(待更新)_GoAl的博客-CSDN博客_機器學習知識點總結

常見的分類演算法

SVM、神經網路、隨機森林、邏輯回歸、KNN、貝葉斯

常見的監督學習演算法

感知機、SVM、人工神經網路、決策樹、邏輯回歸

一、深度學習概念

1.深度學習定義

深度學習定義:一般是指通過訓練多層網路結構對未知資料進行分類或回歸

深度學習分類:有監督學習方法——深度前饋網路、卷積神經網路、回圈神經網路等;無監督學習方法——深度信念網、深度玻爾茲曼機,深度自編碼器等,

2.深度學習應用

影像處理領域主要應用

  • 影像分類(物體識別):整幅影像的分類或識別
  • 物體檢測:檢測影像中物體的位置進而識別物體
  • 影像分割:對影像中的特定物體按邊緣進行分割
  • 影像回歸:預測影像中物體組成部分的坐標

語音識別領域主要應用

  • 語音識別:將語音識別為文字
  • 聲紋識別:識別是哪個人的聲音
  • 語音合成:根據文字合成特定人的語音

自然語言處理領域主要應用

  • 語言模型:根據之前詞預測下一個單詞,
  • 情感分析:分析文本體現的情感(正負向、正負中或多型度型別),
  • 神經機器翻譯:基于統計語言模型的多語種互譯,
  • 神經自動摘要:根據文本自動生成摘要,
  • 機器閱讀理解:通過閱讀文本回答問題、完成選擇題或完型填空,
  • 自然語言推理:根據一句話(前提)推理出另一句話(結論),

綜合應用

  • 影像描述:根據影像給出影像的描述句子
  • 可視問答:根據影像或視頻回答問題
  • 影像生成:根據文本描述生成影像
  • 視頻生成:根據故事自動生成視頻

3.深度學習主要術語

參考這篇文章:

機器學習與深度學習基礎概念詳解_GoAl的博客-CSDN博客

二、神經網路基礎

1. 神經網路組成

人工神經網路(Artificial Neural Networks,簡寫為ANNs)是一種模仿動物神經網路行為特征,進行分布式并行資訊處理的演算法數學模型,這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理資訊的目的,并具有自學習和自適應的能力,神經網路型別眾多,其中最為重要的是多層感知機,為了詳細地描述神經網路,我們先從最簡單的神經網路說起,

感知機

感知機是1957年,由Rosenblatt提出會,是神經網路和支持向量機的基礎,

感知機是有生物學上的一個啟發,他的參照物件和理論依據可以參照下圖:(我們的大腦可以認為是一個神經網路,是一個生物的神經網路,在這個生物的神經網路里邊呢,他的最小單元我們可以認為是一個神經元,一個neuron,這些很多個神經元連接起來形成一個錯綜復雜的網路,我們把它稱之為神經網路,當然我們現在所說的,在深度學習包括機器學習指的神經網路Neural Networks實際上指的是人工神經網路Artificial Neural Networks,簡寫為ANNs,我們只是簡化了,我們人的神經網路是由這樣一些神經元來構成的,那么這個神經元他的一些作業機制呢就是通過這樣一個下面圖的結構,首先接收到一些信號,這些信號通過這些樹突(dendrite)組織,樹突組織接收到這些信號送到細胞里邊的細胞核(nucleus),這些細胞核對接收到的這些信號,這些信號是以什么形式存在的呢?這些信號比如說眼睛接收到的光學啊,或者耳朵接收到的聲音信號,到樹突的時候會產生一些微弱的生物電,那么就形成這樣的一些刺激,那么在細胞核里邊對這些收集到的接收到的刺激進行綜合的處理,當他的信號達到了一定的閾值之后,那么他就會被激活,就會產生一個刺激的輸出,那么就會形成一個我們大腦接收到的進一步的信號,那么他是通過軸突這樣的輸出計算的,這就是我們人腦的一個神經元進行感知的時候大致的一個作業原理,)

2

簡單的感知機如下圖所示:

請添加圖片描述

設定合適的x和b,一個簡單的感知機單元的與非門表示如下:

當輸入為0,1 時,感知機輸出為0 × ( ? 2 ) + 1 × ( ? 2 ) + 3 = 1 ,

復雜一些的感知機由簡單的感知機單元組合而成:

多層感知機

多層感知機由感知機推廣而來,最主要的特點是有多個神經元層,因此也叫深度神經網路,相比于單獨的感知機,多層感知機的第i ii層的每個神經元和第i ? 1 i-1i?1層的每個神經元都有連接,

輸出層可以不止有11個神經元,隱藏層可以只有11層,也可以有多層,輸出層為多個神經元的神經網路例如下圖所示:

在這里插入圖片描述

2.神經網路有哪些常用模型結構?

人工神經網路由神經元模型構成,這種由許多神經元組成的資訊處理網路具有并行分布結構,

4.3

其中圓形節點表示一個神經元,方形節點表示一組神經元,

下圖包含了大部分常用的模型:

3.前向傳播和反向傳播介紹

神經網路的計算主要有兩種:前向傳播(foward propagation, FP)作用于每一層的輸入,通過逐層計算得到輸出結果;反向傳播(backward propagation, BP)作用于網路的輸出,通過計算梯度由深到淺更新網路引數,

前向傳播

假設上一層結點i , j , k , . . . i,j,k,...i,j,k,...等一些結點與本層的結點w ww有連接,那么結點w ww的值怎么算呢?就是通過上一層的i , j , k , . . . i,j,k,...i,j,k,...等結點以及對應的連接權值進行加權和運算,最終結果再加上一個偏置項(圖中為了簡單省略了),最后在通過一個非線性函式(即激活函式),如R e L u ReLuReLu,s i g m o i d sigmoidsigmoid等函式,最后得到的結果就是本層結點w ww的輸出,

最終不斷的通過這種方法一層層的運算,得到輸出層結果,

反向傳播

由于我們前向傳播最終得到的結果,以分類為例,最終總是有誤差的,那么怎么減少誤差呢,當前應用廣泛的一個演算法就是梯度下降演算法,但是求梯度就要求偏導數,下面以圖中字母為例講解一下:

此部分待更新!

三、超引數

1 什么是超引數?

? 超引數 : 在機器學習的背景關系中,超引數是在開始學習程序之前設定值的引數,而不是通過訓練得到的引數資料,通常情況下,需要對超引數進行優化,給學習機選擇一組最優超引數,以提高學習的性能和效果,

? 超引數通常存在于:

1.  定義關于模型的更高層次的概念,如復雜性或學習能力,
2.  不能直接從標準模型培訓程序中的資料中學習,需要預先定義,
3.  可以通過設定不同的值,訓練不同的模型和選擇更好的測驗值來決定

? 超引數具體來講比如演算法中的學習率(learning rate)、梯度下降法迭代的數量(iterations)、隱藏層數目(hidden layers)、隱藏層單元數目、激活函式( activation function)都需要根據實際情況來設定,這些數字實際上控制了最后的引數和的值,所以它們被稱作超引數,

2.如何尋找超引數的最優值?

? 在使用機器學習演算法時,總有一些難調的超引數,例如權重衰減大小,高斯核寬度等等,這些引數需要人為設定,設定的值對結果產生較大影響,常見設定超引數的方法有:

  1. 猜測和檢查:根據經驗或直覺,選擇引數,一直迭代,

  2. 網格搜索:讓計算機嘗試在一定范圍內均勻分布的一組值,

  3. 隨機搜索:讓計算機隨機挑選一組值,

  4. 貝葉斯優化:使用貝葉斯優化超引數,會遇到貝葉斯優化演算法本身就需要很多的引數的困難,

  5. MITIE方法,好初始猜測的前提下進行區域優化,它使用BOBYQA演算法,并有一個精心選擇的起始點,由于BOBYQA只尋找最近的區域最優解,所以這個方法是否成功很大程度上取決于是否有一個好的起點,在MITIE的情況下,我們知道一個好的起點,但這不是一個普遍的解決方案,因為通常你不會知道好的起點在哪里,從好的方面來說,這種方法非常適合尋找區域最優解,稍后我會再討論這一點,

  6. 最新提出的LIPO的全域優化方法,這個方法沒有引數,而且經驗證比隨機搜索方法好,

3.超引數搜索一般程序?

超引數搜索一般程序:

  1. 將資料集劃分成訓練集、驗證集及測驗集,
  2. 在訓練集上根據模型的性能指標對模型引數進行優化,
  3. 在驗證集上根據模型的性能指標對模型的超引數進行搜索,
  4. 步驟 2 和步驟 3 交替迭代,最終確定模型的引數和超引數,在測驗集中驗證評價模型的優劣,

其中,搜索程序需要搜索演算法,一般有:網格搜索、隨機搜過、啟發式智能搜索、貝葉斯搜索,

四、激活函式

1.什么是激活函式

激活函式(Activation functions)對于人工神經網路 模型去學習、理解非常復雜和非線性的函式來說具有十分重要的作用,它們將非線性特性引入到我們的網路中,如下圖,在神經元中,輸入的 inputs 通過加權,求和后,還被作用了一個函式,這個函式就是激活函式,引入激活函式是為了增加神經網路模型的非線性,沒有激活函式的每層都相當于矩陣相乘,就算你疊加了若干層之后,無非還是個矩陣相乘罷了,

圖1

2.為什么要使用激活函式?

  1. 激活函式對模型學習、理解非常復雜和非線性的函式具有重要作用,
  2. 激活函式可以引入非線性因素,如果不使用激活函式,則輸出信號僅是一個簡單的線性函式,線性函式一個一級多項式,線性方程的復雜度有限,從資料中學習復雜函式映射的能力很小,沒有激活函式,神經網路將無法學習和模擬其他復雜型別的資料,例如影像、視頻、音頻、語音等,
  3. 激活函式可以把當前特征空間通過一定的線性映射轉換到另一個空間,讓資料能夠更好的被分類,

3.為什么激活函式需要非線性函式?

  1. 假若網路中全部是線性部件,那么線性的組合還是線性,與單獨一個線性分類器無異,這樣就做不到用非線性來逼近任意函式,
  2. 使用非線性激活函式 ,以便使網路更加強大,增加它的能力,使它可以學習復雜的事物,復雜的表單資料,以及表示輸入輸出之間非線性的復雜的任意函式映射,使用非線性激活函式,能夠從輸入輸出之間生成非線性映射,

4.常見激活函式

具體激活函式學習參考以下資料:

激活函式的前世今生_不積跬步,無以至千里!

激活函式常見問題總結_不積跬步,無以至千里

深度學習筆記_各種激活函式總結對比_驚鴻一博-CSDN博客

在這里插入圖片描述

一些選擇激活函式的經驗法則:
如果輸出是0、1值(二分類問題),則輸出層選擇 sigmoid 函式,然后其它的所有單元都選擇 Relu 函式,這是很多激活函式的默認選擇,如果在隱藏層上不確定使用哪個激活函式,那么通常會使用 Relu 激活函式,有時,也會使用 tanh 激活函式,

五、優化方法總結

一、基本的梯度下降方法

深度學習網路訓練程序可以分成兩大部分:前向計算程序與反向傳播程序,前向計算程序,是指通過我們預先設定好的卷積層、池化層等等,按照規定的網路結構一層層前向計算,得到預測的結果,反向傳播程序,是為了將設定的網路中的眾多引數一步步調整,使得預測結果能更加貼近真實值,

那么,在反向傳播程序中,很重要的一點就是:引數如何更新?或者問的更具體點:引數應該朝著什么方向更新?

顯然,引數應該是朝著目標損失函式下降最快的方向更新,更確切的說,要朝著梯度方向更新! 假設網路引數是 θ \thetaθ,學習率是 η \etaη,網路表示的函式是 J ( θ ) J(\theta)J(θ),函式此時對θ \thetaθ的梯度為:▽ θ J ( θ ) \bigtriangledown_{\theta }J(\theta)▽θ?J(θ),于是引數 θ \thetaθ 的更新公式可表示為:

在這里插入圖片描述

在深度學習中,有三種最基本的梯度下降演算法:SGD、BGD、MBGD,他們各有優劣,

在這里插入圖片描述

(1)隨機梯度下降法 SGD

隨機梯度下降法 (Stochastic Gradient Descent,SGD),每次迭代(更新引數)只使用單個訓練樣本( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)})(x(i),y(i)),其中x是輸入資料,y是標簽,因此,引數更新運算式如下:

在這里插入圖片描述
優點: SGD 一次迭代只需對一個樣本進行計算,因此運行速度很快,還可用于在線學習,

缺點:(1)由于單個樣本的隨機性,實際程序中,目標損失函式值會劇烈波動,一方面,SGD 的波動使它能夠跳到新的可能更好的區域最小值,另一方面,使得訓練永遠不會收斂,而是會一直在最小值附近波動,(2)一次迭代只計算一張圖片,沒有發揮GPU并行運算的優勢,使得整體計算的效率不高,

(2)批量梯度下降法 BGD

批量梯度下降法 (Batch Gradient Descent,BGD),每次迭代更新中使用所有的訓練樣本,引數更新運算式如下:

在這里插入圖片描述
優缺點分析:BGD能保證收斂到凸誤差表面的全域最小值和非凸表面的區域最小值,但每迭代一次,需要用到訓練集中的所有資料,如果資料量很大,那么迭代速度就會非常慢,

(3)小批量梯度下降法 MBGD

小批量梯度下降法 (Mini-Batch Gradient Descent,MBGD),折中了 BGD 和 SGD 的方法,每次迭代使用 batch_size 個訓練樣本進行計算,引數更新運算式如下:

在這里插入圖片描述
優缺點分析:因為每次迭代使用多個樣本,所以 MBGD 比 SGD 收斂更穩定,也能避免 BGD 在資料集過大時迭代速度慢的問題,因此,MBGD是深度學習網路訓練中經常使用的梯度下降方法,

深度學習中,一般的mini-batch大小為64~256,考慮到電腦存盤設定和使用的方式,如果mini-batch是2的次方,代碼會運行地更快一些,
在這里插入圖片描述
上圖是BGD和MBGD訓練時,損失代價函式的變化圖,可見BGD能使代價函式逐漸減小,最終保證收斂到凸誤差表面的全域最小值;MBGD的損失代價函式值比較振蕩,但最終也能優化到損失最小值,

二、Momentum 動量梯度下降

Momentum 主要引入了基于梯度的移動指數加權平均的思想,即當前的引數更新方向不僅與當前的梯度有關,也受歷史的加權平均梯度影響,對于梯度指向相同方向的維度,動量會積累并增加,而對于梯度改變方向的維度,動量會減少更新,這也就使得收斂速度加快,同時又不至于擺動幅度太大,如下圖紅色線所示:
在這里插入圖片描述

動量梯度下降(Momentum)的引數更新運算式如下所示:

在這里插入圖片描述

其中,λ \lambdaλ 表示動量引數momentum;當λ = 0 \lambda=0λ=0時,即是普通的SGD梯度下降,0 < λ < 1 0<\lambda<10<λ<1 ,表示帶了動量的SGD梯度下降引數更新方式,λ \lambdaλ通常取0.9,

普通SGD的缺點:SGD很難在溝壑(即曲面在一個維度上比在另一個維度上彎曲得更陡的區域)中迭代,這在區域最優解中很常見,在這些場景中,SGD在溝壑的斜坡上振蕩,同時沿著底部向區域最優方向緩慢前進,為了緩解這一問題,引入了動量momentum,

在這里插入圖片描述

本質上,當使用動量時,如同我們將球推下山坡,球在滾下坡時積累動量,在途中變得越來越快,同樣的事情發生在引數更新上:對于梯度指向相同方向的維度,動量會積累并增加,而對于梯度改變方向的維度,動量會減少更新,結果,我們獲得了更快的收斂和減少的振蕩,

三、Adam 優化器

Adam 是另一種引數自適應學習率的方法,相當于 RMSprop + Momentum,利用梯度的一階矩估計和二階矩估計動態調整每個引數的學習率,公式如下:

一階矩和二階矩 m t 、 v t m_t、v_tmt?、vt? 類似于動量,將其初始化為:m 0 = 0 , v 0 = 0 m_{0}=0, v_{0}=0m0?=0,v0?=0

m t 、 v t m_t、v_tmt?、vt?分別是梯度的一階矩(均值)和二階矩(非中心方差)的估計值:

在這里插入圖片描述

由于移動指數平均在迭代開始的初期會導致和開始的值有較大的差異,所以我們需要對上面求得的幾個值做偏差修正,通過計算偏差校正的一階和二階矩估計來抵消這些偏差:

在這里插入圖片描述

然后使用這些來更新引數,就像在 RMSprop 中看到的那樣, Adam 的引數更新公式:

在這里插入圖片描述

在Adam演算法中,引數 β1 所對應的就是Momentum演算法中的 β 值,一般取0.9,引數 β2 所對應的就是RMSProp演算法中的 β 值,一般我們取0.999,而 ? 是一個平滑項,我們一般取值為 1 0 ? 8 10^{?8}10?8,而學習率則需要我們在訓練的時候進行微調,

四、RMSprop 優化器

RMSProp演算法的全稱叫 Root Mean Square Prop(均方根傳遞),是 Hinton 在 Coursera 課程中提出的一種優化演算法,在上面的 Momentum 優化演算法中,雖然初步解決了優化中擺動幅度大的問題,

為了進一步優化損失函式在更新中存在擺動幅度過大的問題,并且進一步加快函式的收斂速度,RMSProp演算法對權重 W 和偏置 b 的梯度使用了微分平方加權平均數,優化后的效果如下:藍色的為Momentum優化演算法所走的路線,綠色的為RMSProp優化演算法所走的路線,

在這里插入圖片描述
假設在第 t 輪迭代程序中,各個公式如下所示:
在這里插入圖片描述
在上面的公式中 s d w s_{dw}sdw? 和 s d b s_{db}sdb? 分別是損失函式在前 t?1輪迭代程序中累積的梯度平方動量, β 是梯度累積的一個指數,所不同的是,RMSProp 演算法對梯度計算了微分平方加權平均數,這種做法有利于消除了擺動幅度大的方向,用來修正擺動幅度,使得各個維度的擺動幅度都較小,另一方面也使得網路函式收斂更快,

六、CNN卷積神經網路

卷積神經網路 – CNN 最擅長的就是圖片的處理,它受到人類視覺神經系統的啟發,

CNN 2大特點:

  1. 能夠有效的將大資料量的圖片降維成小資料量,
  2. 能夠有效的保留圖片特征,符合圖片處理的原則,

卷積神經網路(Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網路(Feedforward Neural Networks),是深度學習(deep learning)的代表演算法之一 ,目前 CNN 已經得到了廣泛的應用,比如:人臉識別、自動駕駛、美圖秀秀、安防等很多領域,

以下主要介紹:卷積層、池化層、激活函式、全連接層概念及原理

典型的 CNN 由3個部分構成?

1. 卷積層

卷積是一種有效提取圖片特征的方法 , 一般用一個正方形卷積核,遍歷圖片上的每一個像素點,圖片與卷積核重合區域內相對應的每一個像素值,乘卷積核內相對應點的權重,然后求和, 再加上偏置后,最后得到輸出圖片中的一個像素值,
圖片分灰度圖和彩色圖,卷積核可以是單個也可以是多個,因此卷積操作分以下三種情況:

1.1 單通道輸入,單卷積核

這里單通道指的是輸入為灰度圖,單卷積核值卷積核個數是1個,

在這里插入圖片描述

?
上面是 5x5x1 的灰度圖片,1 表示單通道,5x5 表示解析度,共有 5 行5列個灰度值,若用一個 3x3x1 的卷積核對此 5x5x1 的灰度圖片進行卷積,偏置項b=1,則求卷積的計算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注意不要忘記加偏置 1),

1.2 多通道輸入,單卷積核

多數情況下,輸入的圖片是 RGB 三個顏色組成的彩色圖,輸入的圖片包含了紅、綠、藍三層資料,卷積核的深度(通道數)應該等于輸入圖片的通道數,所以使用 3x3x3的卷積核,最后一個 3 表示匹配輸入影像的 3 個通道,這樣這個卷積核有三通道,每個通道都會隨機生成 9 個待優化的引數,一共有 27 個待優化引數 w 和一個偏置 b,

在這里插入圖片描述

?
注:這里還是單個卷積核的情況,但是一個卷積核可以有多個通道,默認情況下,卷積核的通道數等于輸入圖片的通道數,

1.3 多通道輸入,多卷積核

多通道輸入、多卷積核是深度神經網路中間最常見的形式,指的是多通道輸入,且用多個卷積核的情況,那么卷積程序其實也很簡單,以3通道輸入,2個卷積核為例

(1)先取出一個卷積核與3通道的輸入進行卷積,這個程序就和多通道輸入,單卷積核一樣,得到一個1通道的輸出output1,同樣再取出第二個卷積核進行同樣的操作,得到第二個輸出output2
(2)將相同size的output1與output2進行堆疊,就得到2通道的輸出output,

為了更直觀地理解,下面給出圖示:

在這里插入圖片描述?
圖中輸入X:[1,h,w,3]指的是:輸入1張高h寬w的3通道圖片,
卷積核W:[k,k,3,2]指的是:卷積核尺寸為3*3,通道數為3,個數為2,

總結:
(1)卷積操作后,輸出的通道數=卷積核的個數
(2)卷積核的個數和卷積核的通道數是不同的概念,每層卷積核的個數在設計網路時會給出,但是卷積核的通道數不一定會給出,默認情況下,卷積核的通道數=輸入的通道數,因為這是進行卷積操作的必要條件
(3)偏置數=卷積核數

1.4 填充padding

為了使卷積操作后能得到滿意的輸出圖片尺寸,經常會使用padding對輸入進行填充操作,默認在圖片周圍填充0,

(1)全零填充padding='same’
使用same時,會自動對原圖進行全0填充,當步長為1時,可以保證輸出的圖片與輸入的圖片尺寸一致,
輸出尺寸計算公式:輸入長/步長 (向上取整)
TensorFlow中實作如下:(這里以卷積核個數:48,卷積核尺寸:3,步長:1,全填充為例)

layers.Conv2D(48, kernel_size=3, strides=1, padding='same')

(2)不填充padding='valid’
使用valid時,不進行任何填充,直接進行卷積,這是layers.Conv2D()默認的方式,
輸出尺寸計算公式:(輸入長-核長)/步長+1 (向下取整)
TensorFlow中實作如下:

layers.Conv2D(48, kernel_size=3, strides=1, padding='valid')

(3)自定義填充
一般是從上下左右四個方向進行填充,且左、右填充的列數p w p_wpw?一般相同,上、下填充的行數p h p_hph?也應該相同,如下圖所示:
在這里插入圖片描述?
輸出尺寸計算公式:
在這里插入圖片描述?
在這里插入圖片描述?
其中,h,w為原圖的高和寬,k是卷積核的尺寸,s是步長,

在TensorFlow2.0中,自定義填充程序中,padding引數的設定格式為:
padding=[ [0,0],[上,下],[左,右],[0,0] ]

# 例如要在上下左右各填充一個單位,實作如下:
layers.Conv2D(48, kernel_size=3, strides=1, padding=[[0,0], [1,1], [1,1], [0,0]])

2. 池化層

在卷積層中,可以通過調節步長引數 s 實作特征圖的高寬成倍縮小,從而降低了網路的引數量,實際上,除了通過設定步長,還有一種專門的網路層可以實作尺寸縮減功能,它就是我們要介紹的池化層(Pooling layer),

池化層同樣基于區域相關性的思想,通過從區域相關的一組元素中進行采樣或資訊聚合,從而得到新的元素值,通常我們用到兩種池化進行下采樣:
(1)最大池化(Max Pooling),從區域相關元素集中選取最大的一個元素值,
(2)平均池化(Average Pooling),從區域相關元素集中計算平均值并回傳,

3. 激活函式

激活函式也是神經網路不可缺少的部分,常用的激活函式有好幾種,具體如何選擇合適的激活函式可參考這篇博文:神經網路搭建:激活函式總結 或者上文介紹,

4.全連接層

全連接層FC,之所以叫全連接,是因為每個神經元與前后相鄰層的每一個神經元都有連接關系,如下圖所示,是一個簡單的兩層全連接網路,輸入時特征,輸出是預測的結果,

在這里插入圖片描述?
全連接層的引數量是可以直接計算的,計算公式如下:

在這里插入圖片描述?
按照上圖搭建的兩層全連接網路,要訓練解析度僅僅是 28x28=784 的黑白影像,就有近 40 萬個待優化的引數,現實生活中高解析度的彩色影像,像素點更多,且為紅綠藍三通道資訊,待優化的引數過多, 容易導致模型過擬合,為避免這種現象,實際應用中一般不會將原始圖片直接喂入全連接網路,
在實際應用中,會先對原始影像進行卷積特征提取,把提取到的特征喂給全連接網路,再讓全連接網路計算出分類評估值,

5. 網路引數量與計算量

5.1 卷積層

比如:輸入是32x32x3的的彩色圖片,經過卷積層:

layers.Conv2D(100, kernel_size=3, strides=1, padding='same')

(1)網路引數量
主要是卷積核的引數和偏置的引數:
3x3x3x100+100=2800

(2)計算量FLOPS
深度學習框架FLOPs的概念:Floating point operations,即浮點運算元量,
{32x32x[3x3+(3x3-1)]x3+32x32x(3-1)}x100

5.2 全連接層

比如第一層節點數是5,第二層節點數是10,求網路引數量和計算量FLOPS

(1)網路引數量
網路引數量主要來源神經元連接權重和偏置:
5x10+10=60

(2)計算量FLOPS
5x10+10=60
2015 年,Google 研究人員Sergey 等基于引數標準化設計了BN層,BN層提出后,廣泛地應用在各種深度網路模型上,使得網路的超引數的設定更加自由,同時網路的收斂速度更快,性能也更好,
詳細了解請看:神經網路搭建:BN層

CNN總結

CNN 的價值:

  1. 能夠將大資料量的圖片有效的降維成小資料量(并不影響結果)
  2. 能夠保留圖片的特征,類似人類的視覺原理

CNN 的基本原理:

  1. 卷積層 – 主要作用是保留圖片的特征
  2. 池化層 – 主要作用是把資料降維,可以有效的避免過擬合
  3. 全連接層 – 根據不同任務輸出我們想要的結果

CNN 的實際應用:

  1. 圖片分類、檢索
  2. 目標定位檢測
  3. 目標分割
  4. 人臉識別
  5. 骨骼識別

七、RNN回圈神經網路

RNN 的基本原理

傳統神經網路的結構比較簡單:輸入層 – 隱藏層 – 輸出層,如下圖所示:

傳統神經網路?

RNN 跟傳統神經網路最大的區別在于每次都會將前一次的輸出結果,帶到下一次的隱藏層中,一起訓練,如下圖所示:

RNN區別?

以上未完待更新!!!!!!!

本文參考資料及相關深度學習資料推薦

水很深的深度學習:Unusual-Deep-Learning

?????吳恩達老師深度學習課程筆記

不積跬步,無以至千里!-CSDN博客

五萬字總結,深度學習基礎,_AI浩-CSDN博客

深度學習入門筆記- 我是管小亮CSDN博客

以上僅供個人學習,侵權聯系洗掉!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/404228.html

標籤:其他

上一篇:邊緣檢測---多尺度 (金字塔+BEMD+小波分析)

下一篇:opencv實戰:餐盤影像矯正(一)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more