導航:首頁 > 網路共享 > 神經網路隨機梯度下降軟體

神經網路隨機梯度下降軟體

發布時間:2023-02-16 19:30:51

① 神經網路中自適應的梯度下降優化演算法(二)

Adagrad演算法可以針對不同的參數自適應的採用不同的更新頻率,對低頻出現的特徵採用低的更新率,對高頻出現的特徵採用高的更新率,因此,對於稀疏的數據它表現的很好,很好的提升了SGD的魯棒性,在Google的通過Youtube視頻識別貓的神經網路訓練中有很好的表現。

梯度更新規則:

g(t,i)表示在t時刻目標函數對θ(i)的偏導數。SGD的每個參數的更新過程如下:

Adagrad的每個參數更新過程如下:

G(t)是一個對角矩陣,對角線上的每個元素是t時刻前所有θ(i)的梯度的平方和。ε通常取值在1e-8量級,它的存在是為了避免除數為0。一個有趣的現象是,如果沒有平方根操作,演算法的表現就非常糟糕。

Adagrad的主要缺點是,它的分母是平方梯度的累積,它的值會一直增加,最終導致學習率衰減到非常小,從而使得學習演算法無法進行下去。

TensorFlow實現:

tf.train.AdagradOptimizer(learning_rate, initial_accumulator_value=0.1, use_locking=False, name='Adagrad')

Adadelta演算法主要解決Adagrad的缺陷,它不再累加過去所有的梯度,而是僅累積過去固定個數的梯度。

Adadelta不是採用平方梯度的簡單累加,而是採用 歷史 平方梯度的衰減的平均。

γ通常等於0.9

分母相當於梯度的均方根(root mean squared, RMS),即將所有值平方求和,求其均值,再開平方,就得到均方根值。

梯度更新規則:

將學習率η設置為

,我們就不需要提前設定學習率。

RMSprop是Geoff Hinton提出的一種自適應學習率的方法,它與Adadelta方法都是為了解決Adagrad學習率急劇下降問題的。它與Adadelta方法是一致的。

梯度更新規則

超參數設定值:

Hinton建議設定γ=0.9, 學習率η=0.001。

TensorFlow實現:

tf.train.RMSPropOptimizer.__init__(learning_rate, decay, momentum=0.0, epsilon=1e-10, use_locking=False, name='RMSProp')

Adam也是對不同的參數自適應設置不同的學習率。它對 歷史 梯度和 歷史 平方梯度同時採用指數梯度衰減(exponentially decaying average)。

梯度更新規則

Adam作者觀察到,如果m(t)和v(t)初始化為零向量,並且衰減率很小時(比如β1和β2都非常接近於1時),在開始的迭代中,m(t)和v(t)總是向零偏移,所以需要做偏移校正。

然後用校正後的值進行梯度更新:

Adam作者建議β1=0.9,β2=0.999,ε=10^{-8}

,在實踐中,Adam比其它演算法的效果要好。

TensorFlow實現:

tf.train.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')

Adam更新規則中的梯度縮放與 歷史 梯度的L2范數成反比。

我們可以把這個規則泛化到Lp范數。

當p值增大的時候,Lp的值往往會變得不穩定,所以在實踐中L1和L2使用的比較普遍。但是Adamax作者發現L∞可以收斂到一個穩定值。

然後我們可以採用u(t)代替

來更新Adam中的梯度。

同時u(t)不需要做零偏校正。默認取值建議:

② 請問,在MATLAB的神經網路聚類分析中這個圖片是什麼

我先告訴你這是什麼圖,如果你感興趣數據網路聚類,你可以看下面的一段話。

這是Self Organizing Maps (SOM)。

它的思想很簡單,本質上是一種只有輸入層--隱藏層的神經網路。隱藏層中的一個節點代表一個需要聚成的類。訓練時採用「競爭學習」的方式,每個輸入的樣例在隱藏層中找到一個和它最匹配的節點,稱為它的激活節點,也叫「winning neuron」。 緊接著用隨機梯度下降法更新激活節點的參數。同時,和激活節點臨近的點也根據它們距離激活節點的遠近而適當地更新參數。

所以,SOM的一個特點是,隱藏層的節點是有拓撲關系的。這個拓撲關系需要我們確定,如果想要一維的模型,那麼隱藏節點依次連成一條線;如果想要二維的拓撲關系,那麼就行成一個平面,如下圖所示

迭代,直到收斂。

③ 非線性建模-神經網路

        這學期選修了Python與演算法基礎,利用Python語言編寫力圖實現高效演算法。前期接觸了線性建模中的單變數及多元變數回歸模型、多項式回歸和灰度模型等。目前正在解決非線性建模問題,引入了神經網路的概念,這里作為自我梳理。

        首先該網路有三層:輸入層、隱含層和輸出層。輸入層進行變數與優化權重的加權計算,每個節點輸出z=Σxiwij,此時我們把多個變數(x),變為了單個變數(z)。隱含層完成「非線性的實現」,節點值ho=1/((1+e^(-z))),此處使用了生長函數。當我們調節wij(優化權重),使模型收斂,就能解決該非線性問題。

        接著我們建立MLPClassifier神經網路模型。以下辨明多個參數。

hidden_layer_sizes :用元組,一個數字代表一個隱含層的節點。如hidden_layer_sizes=(50,50) 兩個隱含層,每層50個節點hidden_layer_sizes=(60,) 一個隱含層,60個節點,其中逗號不能省略

activation :激活函數, 對Σxiwij的函數轉換。

{'identity','logistic', 'tanh', 'relu'}, 默認relu                                                

•identity:f(x)= x

•logistic:其實就是sigmod,f(x) = 1 / (1 + exp(-x)).

•tanh:f(x) = tanh(x).

•relu:f(x) = max(0, x)

solver : {'bfgs', 'sgd', 'adam'}, 默認adam,用來優化權重

lbfgs:quasi-Newton(擬牛頓法)方法的優化器

sgd:隨機梯度下降

adam: Kingma, Diederik, and Jimmy Ba提出的基於隨機梯度的優化器

注意:默認solver 'adam',在相對較大的數據集上效果比較好(幾千個樣本或者更多),對小數據集來說,lbfgs收斂更快效果也更好。

learning_rate  :學習率,用於權重更新,只有當solver為』sgd』時使用,{'constant','invscaling', 'adaptive'},默認constant

•constant: 由learning_rate_init給定的恆定學習率

•invscaling:隨著時間t使用power_t的逆標度指數不斷降低學習率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t)

•adaptive:只要訓練損耗在下降,就保持學習率為learning_rate_init不變,當連續兩次不能降低訓練損耗或驗證分數停止升高至少tol時,將當前學習率除以5。

④ 手機上運行的深度神經網路模型-MobileNet

文章引用自《 從MobileNet看輕量級神經網路的發展 》,詳情請點擊原文觀看

前  言 

隨著深度學習的火熱,計算機視覺領域內的卷積神經網路模型也層出不窮。從1998年的LeNet,到2012年引爆深度學習熱潮的AlexNet,再到後來2014年的VGG,2015年的ResNet,深度學習網路模型在圖像處理中應用的效果越來越好。神經網路體積越來越大,結構越來越復雜,預測和訓練需要的硬體資源也逐步增多,往往只能在高算力的伺服器中運行深度學習神經網路模型。移動設備因硬體資源和算力的限制,很難運行復雜的深度學習網路模型。

深度學習領域內也在努力促使神經網路向小型化發展。在保證模型准確率的同時體積更小,速度更快。到了2016年直至現在,業內提出了SqueezeNet、ShuffleNet、NasNet、MnasNet以及MobileNet等輕量級網路模型。這些模型使移動終端、嵌入式設備運行神經網路模型成為可能。而MobileNet在輕量級神經網路中較具代表性。

谷歌在2019年5月份推出了最新的MobileNetV3。新版MobileNet使用了更多新特性,使得MobileNet非常具有研究和分析意義,本文將對MobileNet進行詳細解析。

MobileNet的優勢

MobileNet網路擁有更小的體積,更少的計算量,更高的精度。在輕量級神經網路中擁有極大的優勢。

1

更小的體積

MobileNet相比經典的大型網路,參數量明顯更少,參數量越少模型體積越小。

2

更少的計算量

MobileNet優化網路結構使模型計算量成倍下降。

3

更高的准確率

MobileNet憑借網路結構優化,在更少的參數及更少的計算量情況下,網路精度反而超過了部分大型神經網路。在最新的MobileNetV3-Large中,實現ImageNet數據集Top1准確率達到75.2%。

4

更快的速度

使用Google Pixel-1手機測試,MobileNet各版本都能保持運行時間在120ms以下,最新版MobileNetV3-Large運行時間達到66ms,參數量和計算量更低的MobileNetV3-Small更是能達到22ms;GoogleNet運行速度約為250ms,而VGG-16由於一次性需要載入至內存的空間已超過500MB,手機系統會報內存溢出錯誤導致無法運行。

5

多種應用場景

MobileNet可以在移動終端實現眾多的應用,包括目標檢測,目標分類,人臉屬性識別和人臉識別等。

MobileNet各版本介紹

1

MobileNetV1網路結構

整個網路不算平均池化層與softmax層,共28層;

在整個網路結構中步長為2的卷積較有特點,卷積的同時充當下采樣的功能;

第一層之後的26層都為深度可分離卷積的重復卷積操作;

每一個卷積層(含常規卷積、深度卷積、逐點卷積)之後都緊跟著批規范化和ReLU激活函數;

最後一層全連接層不使用激活函數。

2

MobileNetV2網路結構

MobileNetV2中主要引入線性瓶頸結構和反向殘差結構。

MobileNetV2網路模型中有共有17個Bottleneck層(每個Bottleneck包含兩個逐點卷積層和一個深度卷積層),一個標准卷積層(conv),兩個逐點卷積層(pw conv),共計有54層可訓練參數層。MobileNetV2中使用線性瓶頸(Linear Bottleneck)和反向殘差(Inverted Resials)結構優化了網路,使得網路層次更深了,但是模型體積更小,速度更快了。

3

MobileNetV3網路結構

MobileNetV3分為Large和Small兩個版本,Large版本適用於計算和存儲性能較高的平台,Small版本適用於硬體性能較低的平台。

Large版本共有15個bottleneck層,一個標准卷積層,三個逐點卷積層。

Small版本共有12個bottleneck層,一個標准卷積層,兩個逐點卷積層。

MobileNetV3中引入了5×5大小的深度卷積代替部分3×3的深度卷積。引入Squeeze-and-excitation(SE)模塊和h-swish(HS)激活函數以提高模型精度。結尾兩層逐點卷積不使用批規范化(Batch Norm),MobileNetV3結構圖中使用NBN標識。

(圖片來源https://arxiv.org/pdf/1905.02244.pdf)

網路結構上相對於MobileNetV2的結尾部分做了優化,去除三個高階層,如上圖所示。去除後減少了計算量和參數量,但是模型的精度並沒有損失。

值得一提的是,不論是Large還是Small版本,都是使用神經架構搜索(NAS)技術生成的網路結構。

4

MobileNet各版本特性

MobileNet實現計算量減小、參數量減少的同時保證了較高的准確率,這和其擁有的特性息息相關:

MobileNetV1提出的特性

MobileNetV2提出的特性

MobileNetV3提出的特性

MobileNet各個版本擁有的特性匯總

下文將對上表中的各個特性詳細闡述。

MobileNet的特性詳解

1

深度可分離卷積

從MobileNetV1開始,到V2、V3的線性瓶頸結構都大量使用了深度可分離卷積。

深度可分離卷積(Depthwise Separable Convolution)是一種卷積結構。它是由一層深度卷積(Depthwise convolution)與一層逐點卷積(Pointwise Convolution)組合而成的,每一層卷積之後都緊跟著批規范化和ReLU激活函數。跟標准卷積的區別就是精度基本不變的情況下,參數與計算量都明顯減少。

深度卷積

深度卷積(Depthwise convolution, DW)不同於常規卷積操作,深度卷積中一個卷積核只有一維,負責一個通道,一個通道只被一個卷積核卷積;常規卷積每個卷積核的維度與輸入維度相同,每個通道單獨做卷積運算後相加。

以一張5x5x3(長和寬為5,RGB3通道)的彩色圖片舉例。每層深度卷積卷積核的數量與上一層的通道數相同(通道和卷積核一一對應)。設padding=1,stride=1,一個三通道的圖像經過運算後生成了3個特徵圖,如下圖所示:

深度卷積完成後的輸出特徵圖通道數與輸入層的通道數相同,無法擴展通道數。而且這種運算對輸入層的每個通道獨立進行卷積運算,沒有有效的利用不同通道在相同空間位置上的特徵信息。因此需要逐點卷積來將生成的特徵圖進行組合生成新的特徵圖。

逐點卷積

逐點卷積(Pointwise Convolution, PW)的運算與標准卷積運算非常相似。

逐點卷積卷積核大小為1×1xM(M為輸入數據的維度),每次卷積一個像素的區域。逐點卷積運算會將上一層的特徵圖在深度方向上進行加權組合,生成新的特徵圖,新的特徵圖的大小與輸入數據大小一致;然後組合各通道的特徵圖,以較少的計算量進行降維或升維操作(改變輸出數據的維度)。

以一張5x5x3(長和寬為5,RGB3通道)的彩色圖片舉例,使用4個1x1x3的逐點卷積核進行卷積,逐點卷積運算後生成了4個特徵圖。這個例子是使用逐點卷積進行升維的操作,特徵圖從5x5x3 升維到5x5x4。如下圖所示:

深度可分離卷積結構解析

將深度卷積和逐點卷積組成深度可分離卷積後的示意圖,如下圖所示:

首先進行深度卷積操作,得出的特徵圖各通道之間是不關聯的。接著進行逐點卷積把深度卷積輸出的特徵圖各通道關聯起來。

深度可分離卷積使用了更小的空間代價(參數減少)和更少的時間代價(計算量更少)實現了標准卷積層一樣的效果(提取特徵)。

一般的設Df為輸入特徵圖邊長,Dk為卷積核邊長,特徵圖和卷積核均為長寬一致,輸入通道數為M,輸出通道數為N,則:

標准卷積計算量為:Df×Df×Dk×Dk×M×N

深度卷積的計算量為:Df×Df×Dk×Dk×M

逐點卷積的計算量為:Df×Df×M×N

上圖所示實現輸入特徵圖大小為5×5×3,輸出特成圖大小為5×5×4,設padding=1,stride=1,深度卷積卷積核大小為3×3,標准卷積也使用3×3尺寸卷積核。實現相同的卷積效果,參數量(不包含偏置)與計算量對比如下表所示:

深度可分離卷積的演變

事實上深度可分離卷積不是在MobileNetV1中第一次提出的,而是在2016年由谷歌的Xception網路結構中提出的。MobileNetV1在Xception的基礎上,對深度可分離卷積進行了改進,做到了計算量與參數量的下降:

假定M為輸入層的通道數,N為輸出層的通道數。

Xcenption的深度可分離卷積是由輸入參數開始,使用1x1xMxN卷積將輸入層的通道數轉換為目標通道數,再通過3x3x1卷積核對每個通道進行卷積,每次卷積過後使用ReLU進行激活。

MobileNetV1的深度可分離卷積則是先使用3x3x1xM對輸入層的每個通道分別卷積,之後通過1x1xMxN將輸入層通道數轉換為輸出層通道數,每次卷積過後做一次批規范化操作,再使用ReLU進行激活。

這里我們使用MobileNetV1網路結構的第一個深度可分離卷積層來舉例,輸入層維度為112x112x32,輸出層維度為112x112x64,Xception與MobileNet的深度可分離卷積的計算量與參數個數對比如下表:

由此可知將PW卷積與DW卷積的順序調整後,優化了網路的空間復雜度和時間復雜度。

2

寬度因子

MobileNet本身的網路結構已經比較小並且執行延遲較低,但為了適配更定製化的場景,MobileNet提供了稱為寬度因子(Width Multiplier)的超參數給我們調整。寬度因子在MobileNetV1、V2、V3都可以運用。

通過寬度因子,可以調整神經網路中間產生的特徵的大小,調整的是特徵數據通道數大小,從而調整了運算量的大小。

寬度因子簡單來說就是新網路中每一個模塊要使用的卷積核數量相較於標準的MobileNet比例。對於深度卷積結合1x1方式的卷積核,計算量為:

算式中α即為寬度因子,α常用的配置為1,0.75,0.5,0.25;當α等於1時就是標準的MobileNet。通過參數α可以非常有效的將計算量和參數數量約減到α的平方倍。

下圖為MobileNetV1使用不同α系數進行網路參數的調整時,在ImageNet上的准確率、計算量、參數數量之間的關系(每一個項中最前面的數字表示α的取值)。

(數據來源https://arxiv.org/pdf/1704.04861.pdf)

可以看到當輸入解析度固定為224x224時,隨著寬度因子的減少,模型的計算量和參數越來越小。從上表可以看到, 0.25 MobileNet的正確率比標准版1.0MobileNet低20%,但計算量和參數量幾乎只有標准版1.0MobileNet計算量、參數量的10%!對於計算資源和存儲資源都十分緊張的移動端平台,可以通過α寬度因子調節網路的餐數量是非常實用的,在真正使用時我們可以按需調整α寬度因子達到准確率與性能的平衡。

3

解析度因子

MobileNet還提供了另一個超參數解析度因子(Resolution Multiplier)供我們自定義網路結構,解析度因子同樣在MobileNetV1、V2、V3都可以運用。

解析度因子一般用β來指代,β的取值范圍在(0,1]之間,是作用於每一個模塊輸入尺寸的約減因子,簡單來說就是將輸入數據以及由此在每一個模塊產生的特徵圖都變小了,結合寬度因子α,深度卷積結合1x1方式的卷積核計算量為:

下圖為MobileNetV1使用不同的β系數作用於標准MobileNet時,在ImageNet上對精度和計算量的影響(α固定1.0)

(數據來源https://arxiv.org/pdf/1704.04861.pdf)

上圖中的 224、192、160、128 對應的解析度因子分別為 1、 6/7、5/7、4/7。

β=1時,輸入圖片的解析度為224x224,卷積後的圖像大小變化為: 224x224 、112x112、56x56、28x28、14x14、7x7。

β= 6/7時,輸入圖片的解析度為192x192,卷積後各層特徵圖像大小變化為:192x192、96x96、48x48、24x24、12x12、6x6。

卷積特徵圖像的大小變化不會引起參數量的變化,只改變模型M-Adds計算量。上圖中 224解析度模型測試ImageNet數據集准確率為70.6%,192解析度的模型准確率為69.1%,但是M-Adds計算量減少了151M,對移動平台計算資源緊張的情況下,同樣可以通過β解析度因子調節網路輸入特徵圖的解析度,做模型精度與計算量的取捨。

4

規范化

深度學習中的規范化操作(Normalization),有助於加快基於梯度下降法或隨機梯度下降法模型的收斂速度,提升模型的精度,規范化的參數能夠提升模型泛化能力,提高模型的可壓縮性。

按照規范化操作涉及對象的不同可以分為兩大類,一類是對輸入值進行規范化操作,比如批規范化(Batch Normalization)、層規范化(Layer Normalization)、實例規范化(Instance Normalization)、組規范化(Group Normalization)方法都屬於這一類。另外一類是對神經網路中參數進行規范化操作,比如使用L0,L1范數。

批規范化

批規范化(Batch Normalization)幾乎存在於MobileNetV1、V2、V3的每個卷積層的後面,目的是加快訓練收斂速度,提升准確率。

批規范化是一種對數值的特殊函數變換方法,也就是說假設原始的某個數值是 x,套上一個起到規范化作用的函數,對規范化之前的數值 x 進行轉換,形成一個規范化後的數值,即:

所謂規范化,是希望轉換後的數值滿足一定的特性,至於對數值具體如何變換,跟規范化目標有關,不同的規范化目標導致具體方法中函數所採用的形式不同。通過自適應的重新參數化的方法,克服神經網路層數加深導致模型難以訓練的問題。

參數規范化

參數規范化(Weight Normalization, WN)是規范化的一種, 通過人為的設定稀疏演算法,去除模型中多餘的參數(置為0)使得模型參數稀疏化,可以通過L1範式實現。

參數規范化是防止模型過分擬合訓練數據。當訓練一批樣本的時候,隨著訓練的推移模型會越來越趨向於擬合樣本數據。因為參數太多,會導致模型復雜度上升,容易過擬合。

需要保證模型"簡單"的基礎上最小化訓練誤差,這樣得到的參數才具有好的泛化性能(也就是測試誤差也小),而模型"簡單"就是通過規則函數來實現的。

如上圖所示,左側分類明顯的是欠擬合,模型並沒有能夠擬合數據。中間圖示為合適的擬合,右邊圖示是過擬合,模型在訓練樣本中擬合度是很好的,但是卻違背了特徵分類規律,在新的測試樣本中表現糟糕,影響模型的泛化能力。顯然右側模型在訓練是受到額外參數干擾。參數規則化能夠使參數稀疏,減少額外參數的干擾,提高泛化能力。

模型擁有稀疏的參數(模型中有大量參數為0),也有利於通過壓縮演算法壓縮模型的大小。

5

線性瓶頸

線性瓶頸英文為Linear Bottleneck,是從Bottleneck結構演變而來的,被用於MobileNetV2與V3。

Bottleneck結構首次被提出是在ResNet網路中。該結構第一層使用逐點卷積,第二層使用3×3大小卷積核進行深度卷積,第三層再使用逐點卷積。MobileNet中的瓶頸結構最後一層逐點卷積使用的激活函數是Linear,所以稱其為線性瓶頸結構(Linear Bottleneck)。線性瓶頸結構有兩種,第一種是步長為1時使用殘差結構,第二種是步長為2時不使用殘差結構。

其中輸入通道數為M,擴大倍數系數為T。T的值為大於0 的正數,當 0<T<1時,第一層逐點卷積起到的作用是降維。當 1<T時,第一層逐點卷積起到的作用是升維。

第二層為深度卷積,輸入通道數 = 輸出通道數 = M×T。

第三層為逐點卷積,作用是關聯深度卷積後的特徵圖並輸出指定通道數N。

線性瓶頸結構相對標准卷積能夠減少參數數量,減少卷積計算量。從空間和時間上優化了網路。

6

反向殘差

MobileNetV2中以ResNet的殘差(Resials)結構為基礎進行優化,提出了反向殘差(Inverted Resials)的概念,之後也同樣運用與MobileNetV3中。

ResNet中提出的殘差結構解決訓練中隨著網路深度增加而出現的梯度消失問題,使反向傳播過程中深度網路的淺層網路也能得到梯度,使淺層網路的參數也可訓練,從而增加特徵表達能力。

ResNet的殘差結構實際是在線性瓶頸結構的基礎上增加殘差傳播。如下圖所示:

ResNet中的殘差結構使用第一層逐點卷積降維,後使用深度卷積,再使用逐點卷積升維。

MobileNetV2版本中的殘差結構使用第一層逐點卷積升維並使用Relu6激活函數代替Relu,之後使用深度卷積,同樣使用Relu6激活函數,再使用逐點卷積降維,降維後使用Linear激活函數。這樣的卷積操作方式更有利於移動端使用(有利於減少參數與M-Adds計算量),因維度升降方式與ResNet中的殘差結構剛好相反,MobileNetV2將其稱之為反向殘差(Inverted Resials)。

7

5x5 的深度卷積

MobileNetV3中,深度卷積大量使用5x5大小的卷積核。這是因為使用神經結構搜索(NAS)技術計算出的MobileNetV3網路結構的過程中,發現了在深度卷積中使用5x5大小的卷積核比使用3x3大小的卷積核效果更好,准確率更高。關於NAS技術將會在下文的單獨章節中做介紹。

8

Squeeze-and-excitation 模塊

Squeeze-and-Excitation模塊(簡稱SE模塊)的首次提出是在2017年的Squeeze-and-Excitation Networks(SENet)網路結構中,在MNasNet中進行了改進,之後在MobileNetV3中大量使用。研究人員期望通過精確的建模卷積特徵各個通道之間的作用關系來改善網路模型的表達能力。為了達到這個期望,提出了一種能夠讓網路模型對特徵進行校準的機制,使得有效的權重大,無效或效果小的權重小的效果,這就是SE模塊。

(圖片來源https://arxiv.org/pdf/1905.02244.pdf)

如上圖,MobileNetV3的SE模塊被運用在線性瓶頸結構最後一層上,代替V2中最後的逐點卷積,改為先進行SE操作再逐點卷積。這樣保持了網路結構每層的輸入和輸出,僅在中間做處理,類似於軟體開發中的鉤子。

SE模塊結構詳解

下圖表示一個SE 模塊。主要包含Squeeze和Excitation兩部分。W,H表示特徵圖寬,高。C表示通道數,輸入特徵圖大小為W×H×C。

壓縮(Squeeze)

第一步是壓縮(Squeeze)操作,如下圖所示

這個操作就是一個全局平均池化(global average pooling)。經過壓縮操作後特徵圖被壓縮為1×1×C向量。

激勵(Excitation)

接下來就是激勵(Excitation)操作,如下圖所示

由兩個全連接層組成,其中SERatio是一個縮放參數,這個參數的目的是為了減少通道個數從而降低計算量。

第一個全連接層有C*SERatio個神經元,輸入為1×1×C,輸出1×1×C×SERadio。

第二個全連接層有C個神經元,輸入為1×1×C×SERadio,輸出為1×1×C。

scale操作

最後是scale操作,在得到1×1×C向量之後,就可以對原來的特徵圖進行scale操作了。很簡單,就是通道權重相乘,原有特徵向量為W×H×C,將SE模塊計算出來的各通道權重值分別和原特徵圖對應通道的二維矩陣相乘,得出的結果輸出。

這里我們可以得出SE模塊的屬性:

參數量 = 2×C×C×SERatio

計算量 = 2×C×C×SERatio

總體來講SE模塊會增加網路的總參數量,總計算量,因為使用的是全連接層計算量相比卷積層並不大,但是參數量會有明顯上升,所以MobileNetV3-Large中的總參數量比MobileNetV2多了2M。

MobileNetV3中的SE模塊

SE模塊的使用是很靈活的,可以在已有網路上添加而不打亂網路原有的主體結構。

ResNet中添加SE模塊形成SE-ResNet網路,SE模塊是在bottleneck結構之後加入的,如下圖左邊所示。

MobileNetV3版本中SE模塊加在了bottleneck結構的內部,在深度卷積後增加SE塊,scale操作後再做逐點卷積,如上圖右邊所示。MobileNetV3版本的SERadio系數為0.25。使用SE模塊後的MobileNetV3的參數量相比MobileNetV2多了約2M,達到5.4M,但是MobileNetV3的精度得到了很大的提升,在圖像分類和目標檢測中准確率都有明顯提升。

9

h-swish激活函數

MobileNetV3中發現swish激活函數能夠有效提高網路的精度,但是swish的計算量太大了,並不適合輕量級神經網路。MobileNetV3找到了類似swish激活函數但是計算量卻少很多的替代激活函數h-swish(hard version of swish)如下所示:

sigmoid、h-sigmoid、swish、h-swish激活函數的比較:

(圖片來源https://arxiv.org/pdf/1905.02244.pdf)

這種非線性在保持精度的情況下帶來了很多優勢,首先ReLU6在眾多軟硬體框架中都可以實現,其次量化時避免了數值精度的損失,運行快。這一非線性改變將模型的延時增加了15%。但它帶來的網路效應對於精度和延時具有正向促進,剩下的開銷可以通過融合非線性與先前層來消除。

⑤ 神經網路演算法-梯度下降GradientDescent

神經網路文章索引

上一篇神經網路結構中,我們介紹了神經元的結構,激活函數以及每個神經元激活值的演算法,涉及到權重、偏置值等。

上一篇結尾提到,對於28*28的黑白手寫圖像識別,我們需要13002個權重和偏置數值,才能讓我們的神經網路最後輸出正確結果。

所謂的機器學習,就是尋找這13002個數值的過程。首先這里有兩點需要注意:

在負無窮到正無窮之間,如何獲得一萬多個數字最佳的匹配值?這比在全世界挑選1萬人讓TA們一起相愛還要難。

我們的做法是用計算機強大運算速度,暴力解決問題。

好了,現在,暴力不是問題,要想出奇跡的關鍵就在於如何找到如何 優化的規律

要想做優化,首先要明確目標,找到當前神經網路和期望結果之間的差距。

從下圖可以看到,隨機設定的神經網路最終輸出的是混亂的一層(被黃色線框標出),距離最右邊我們期望只點亮神經元3的情況差距很大。

我們把混亂輸出層的每個神經元與期望層每個對應神經元激活值相減,然後平方,再累加在一起,這就是方差cost代價,如下圖,計算得到cost是3.37。

我們用這個cost來表示當前神經網路13002個設定值和期望設定值之間的差距,當然,這個cost等於0是差距最小,也就是最接近期望設定值。——當然這只是針對數字3的1張圖片來說,我們需要的是針對0~9共10個數字的數萬張圖片,cost都能是最小。

從下圖,我們來看一下神經網路的功能。它能利用13002個設定值經過3層神經元激活值的計算,把784個像素亮度變為10個數字(我們期望這10個數字中只有一個是1,其他都是0)。

這13002個權重和偏置數字,加上激活值的演算法,就是神經網路的「想法」。

我們再來看看代價函數的情況,如下圖,它是利用很多很多的訓練圖片(已經明確了對應的數字),把13002個數字變為1個cost代價數。

寫成函數形式

我們假設最簡單的情況,只有1個權重和1個偏置:

x和y是任意可能的數值,我們希望知道當x和y是什麼數值的時候z最小。

每一組[x,y]都對應唯一的z,我們可以假想,有無數個[x,y,z]這樣的位置點,在三維空間坐標中,它們就會組成一個面(曲面或平面),如下圖。

從幾何意義上看,我們就是要找到凹陷最低的那個位置點的x,y的值,因為那裡z也就是cost代價最低。

假設上面的xyz繪制的cost曲面是個山地,你是一個旅行者,需要行走找到最低點的位置,你會怎麼辦?

沒錯,只要一直往下走,那麼就能走到所在區域的最低點。——當然,如果山後面還有更深的山谷,那麼你可能找到的只是局部最低點,而並非世界最低點。

實際上,對於復雜的超多維度來說,找到世界最低點幾乎是不可能任務。我們唯一能做的就是多找幾個局部最低點,然後選擇其中最低的那個。

同樣,如果我們落腳在[x',y'],那麼可以嘗試對比[x'+0.1,y'],[x'-0.1,y'],[x',y'-0.1],[x',y'+0.1],如果[x'+0.1,y']是最低的,那麼我們就走到這里,然後繼續嘗試對比四周點的高度。這就是梯度下降的演算法。

如下圖,我們沿著虛線一步一步下山找到最低點。

首先快速的從下圖了解幾個基本概念。
下圖的弧線表示的是某個函數y=f(x),比如拋物線方程y=x 2 。
曲線上任取兩個點a,b,它們對應x和x+dx。(d是指德爾塔大寫Δ,小寫δ)
ab兩點對應的y的差是dy。
現在直線ab看上去是曲線的割線(有ab兩個交點)。
假設b點沿著曲線,越來越靠近a點,那麼dx極限趨近於0,這時候dy也會越來越小趨近於0,但是!我們會意識到dy/dx永遠不會是0,而最終它仍然是角∠cab的對邊比鄰邊,也就是正切三角函數值。
實際上,這也正是曲線的切線的定義。
可以想像,我們取的a點越是靠右,那麼這個切線越是豎直。
如果我們把這個切線看做表示某個一次方程,如y=mx+n這種形式,那麼a點越靠右,直線越豎直,m值也就越大。
我們把m值叫做直線的斜率。

導數derivative ,一元函數y=f(x)(即因變數y只受到一個自變數x影響的函數)中任意取x,如果x增加極小趨近於0的Δx(或者寫為dx),那麼y相應的被增加Δy(或者寫作dy),那麼導數就是dy/dx,而又有dy=f(x+dx)-f(x),所以:

從函數的曲線圖上可以看到,某點的導數就是dx趨近於0時候∠cab的正切,導數反映了切線的陡峭程度,也就是y隨著x變化的快慢程度。

微分differential ,簡單說就是Δx和Δy,或者記作dx和dy。x稱之為自變數,y稱之為因變數,那麼x趨近於最小的時候的值,就是x的微分(趨近0又不是0的那個神秘值),同樣y的微分也是這個意思,總之是想得到又摸不到的神奇值。

斜率slope ,一元一次函數(直線方程)y=mx+n的系數m值。在這里就是a點的導數值f'(x)。

切線tangent ,某個點a的切線,就是經過a點的,以A點斜率為系數的方程y=f'(x)x+n所表示的直線。

自變數dependent variable和因變數 independent variable ,x自己的變化,引發y被動變化。

好了,我們來看 多變數微分Multivariable differential

上面都是一個y收到一個x的影響y=f(x),多變數就是不止受到一個自變數的影響,我們以最簡單的z=f(x,y)為例,z=x 2 +y 2 。

綠軸x的變化和紅軸y的變化,都會對應藍軸z的變化。
x從負無窮到正無窮無限種可能,y也是無限種可能,x和y復合到一起就在水平方向覆蓋了全部地面,z值有高有低,就像現實世界中的海拔一樣,把xy平面凸起或凹陷。(圖中粉色沒有畫出全部曲面)

我們可以想像,這時候不能討論A點的切線了,而應該考慮它的 切平面tangent plane (下圖綠色平面)。

方向導數directional derivative ,就是曲面上過A點的任意曲線的切線(下圖紫色線)組成的平面,就是切平面。

這么多紫色的方向中,哪一個方向最陡峭?對於這個z=x 2 +y 2 函數來說,明顯是最接近豎直朝上的那個箭頭和最接近豎直朝下的那個箭頭。
和曲線一樣道理,越陡峭意味著z對x、y的變化越敏感,或者說dx、dy的變化會引發更多的dz。
梯度gradient ,我們規定,能夠引發因變數最快變化的那個切線正方向,就叫做曲面方程上這個點的梯度。注意梯度是個xyz表示的三維方向,例如[0,0,1]表示z軸豎直向上,[0.1,0.1,1]就往xy的正方向偏一點點。

對於只有xy兩個變數的三維曲面來說,我們還可以只是考慮x+0.1,x-0.1,y+0.1,y-0.1這樣的試探方法找到最低點,只要2*2=4次就可以了,周全一點也就8次。

但是對於我們手寫數字識別中13002個自變數來說,那就要2 13002 次,這是不可行的。

借用多元微分,我們可以找到13002個自變數某一隨機點對應的切平面(實際早已不是什麼平面了,我們姑且這么說),也可以計算出其中變化最快的方向,就是梯度,數學家已經證明,不管多少個維度,沿著梯度往前走一步,都能獲得最快變化後新的一個點,這個點是一個n維向量,對於我們的案例來說就是13003個新數字組成的數組[0.322,0.123,0.55,0.222,...0.233]共13003個數字。

唯一要說明的一點不同就是,為了找最低點,我們不是往上走,而是往相反的負方向,朝下走。

步長step size ,就是我們每次沿著 負梯度 往下走多遠,在機器學習演算法裡面它叫做 學習率learning rate ,同樣道理,步子邁小了走得太慢,找到最低點耗時間太久,步子太大了容易跳過最低點(注意,1萬多維的復雜情況不是我們上面三維漏斗曲面那麼簡單可以描述的)。所以我們經常設置0.00001這樣小的數字,好在很多機器學習程序都會適當的自動調整它(比如Tensorflow中的梯度下降優化GradientDescentOptimizer),實際上不會讓它太慢。

同時,我們從上圖中看到,計算出的負梯度是由很多數字組成的數組,每個數字代表一個維度(就像xy那樣),所以我們只要在原來的位置點坐標(比如[x,y])上分別把這個梯度(比如[0.1,-0.3])加上去就能得到新的點([x+0.1,y-0.3])。

內容小結

如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,感謝轉發~

END

⑥ ENAS:首個權值共享的神經網路搜索方法,千倍加速 | ICML 2018

論文: Efficient Neural Architecture Search via Parameter Sharing

  神經網路結構搜索(NAS)目前在圖像分類的模型結構設計上有很大的成果,但十分耗時,主要花在搜索到的網路(child model)的訓練。論文的主要工作是提出 Efficient Neural Architecture Search (ENAS),強制所有的child model進行權重共享,避免從零開始訓練,從而達到提高效率的目的。雖然不同的模型使用不同的權重,但從遷移學習和多任務學習的研究結果來看,將當前任務的模型A學習到的參數應用於別的任務的模型B是可行的。從實驗看來,不僅共享參數是可行的,而且能帶來很強的表現,實驗僅用單張1080Ti,相對與NAS有1000x倍加速

  NAS的搜索結果可以看作是大圖中的子圖,可以用單向無環圖(DAG)來表示搜索空間,每個搜索的結構可以認為是圖2的DAG一個子網。ENAS定義的DAG為所有子網的疊加,其中每個節點的每種計算類型都有自己的參數,當特定的計算方法激活時,參數才使用。因此,ENAS的設計允許子網進行參數共享,下面會介紹具體細節

  為了設計循環單元(recurrent cell),採用 節點的DAG,節點代表計算類型,邊代表信息流向,ENAS的controller也是RNN,主要定義:1) 激活的邊 2) 每個節點的計算類型。在NAS(Zoph 2017),循環單元的搜索空間在預先定義結構的拓撲結構(二叉樹)上,僅學習每個節點的計算類型,而NAS則同時學習拓撲結構和計算類型,更靈活

  為了創建循環單元,the controller RNN首先採樣 個block的結果,取 , 為當前單元輸入信息(例如word embedding), 為前一個time step的隱藏層輸出,具體步驟如下:

  注意到每對節點( )都有獨立的參數 ,根據選擇的索引決定使用哪個參數,因此,ENAS的所有循環單元能同一個共享參數集合。論文的搜索空間包含指數數量的配置,假設有N個節點和4種激活函數,則共有 種配置

  ENAS的controller為100個隱藏單元的LSTM,通過softmax分類器以自回歸(autoregressive fashion)的方式進行選擇的決定,上一個step的輸出作為下一個step的輸入embedding,controller的第一個step則接受空embedding輸入。學習的參數主要有controller LSTM的參數 和子網的共享權重 ,ENAS的訓練分兩個交叉的階段,第一階段在完整的訓練集上進行共享權重 學習,第二階段訓練controller LSTM的參數

  固定controller的策略 ,然後進行 進行隨機梯度下降(SGD)來最小化交叉熵損失函數的期望 , 為模型 在mini-batch上的交叉熵損失,模型 從 采樣而來

  梯度的計算如公式1, 上從 采樣來的,集合所有模型的梯度進行更新。公式1是梯度的無偏估計,但有一個很高的方差(跟NAS一樣,采樣的模型性能差異),而論文發現,當 時,訓練的效果還行

  固定 然後更新策略參數 ,目標是最大化期望獎勵 ,使用Adam優化器,梯度計算使用Williams的REINFORCE方法,加上指數滑動平均來降低方差, 的計算在獨立的驗證集上進行,整體基本跟Zoph的NAS一樣

  訓練好的ENAS進行新模型構造,首先從訓練的策略 采樣幾個新的結構,對於每個采樣的模型,計算其在驗證集的minibatch上的准確率,取准確率最高的模型進行從零開始的重新訓練,可以對所有采樣的網路進行從零訓練,但是論文的方法准確率差不多,經濟效益更大

  對於創建卷積網路,the controller每個decision block進行兩個決定,這些決定構成卷積網路的一層:

  做 次選擇產生 層的網路,共 種網路,在實驗中,L取12

  NASNet提出設計小的模塊,然後堆疊成完整的網路,主要設計convolutional cell和rection cell

  使用ENAS生成convolutional cell,構建B節點的DAG來代表單元內的計算,其中node 1和node 2代表單元輸入,為完整網路中前兩個單元的輸出,剩餘的 個節點,預測兩個選擇:1) 選擇兩個之前的節點作為當前節點輸入 2) 選擇用於兩個輸入的計算類型,共5種運算元:identity, separable convolution with kernel size 3 × 3 and 5 × 5, and average pooling and max pooling with kernel size 3×3,然後將運算元結果相加。對於 ,搜索過程如下:

  對於rection cell,可以同樣地使用上面的搜索空間生成: 1) 如圖5采樣一個計算圖 2) 將所有計算的stride改為2。這樣rection cell就能將輸入縮小為1/2,controller共預測 blocks
  最後計算下搜索空間的復雜度,對於node i ,troller選擇前 個節點中的兩個,然後選擇五種運算元的兩種,共 種坑的單元。因為兩種單元是獨立的,所以搜索空間的大小最終為 ,對於 ,大約 種網路

  節點的計算做了一點修改,增加highway connections,例如 修改為 ,其中 , 為elementwise乘法。搜索到的結果如圖6所示,有意思的是:1) 激活方法全部為tanh或ReLU 2) 結構可能為局部最優,隨機替換節點的激活函數都會造成大幅的性能下降 3) 搜索的輸出是6個node的平均,與mixture of contexts(MoC)類似

  單1080Ti訓練了10小時,Penn Treebank上的結果如表1所示,PPL越低則性能越好,可以看到ENAS不準復雜度低,參數量也很少

  表2的第一塊為最好的分類網路DenseNet的結構,第二塊為ENAS設計整個卷積網路的結果(感覺這里不應有micro search space),第三塊為設計單元的結果

  全網路搜索的最優結構如圖7所示,達到4.23%錯誤率,比NAS的效果要好,大概單卡搜索7小時,相對NAS有50000x倍加速

  單元搜索的結構如圖8所示,單卡搜索11.5小時, ,錯誤率為3.54%,加上CutOut增強後比NASNet要好。論文發現ENAS搜索的結構都是局部最優的,修改都會帶來性能的降低,而ENAS不採樣多個網路進行訓練,這個給NAS帶來很大性能的提升

  NAS是自動設計網路結構的重要方法,但需要耗費巨大的資源,導致不能廣泛地應用,而論文提出的 Efficient Neural Architecture Search (ENAS),在搜索時對子網的參數進行共享,相對於NAS有超過1000x倍加速,單卡搜索不到半天,而且性能並沒有降低,十分值得參考



⑦ sklearn 神經網路 MLPClassifier簡單應用與參數說明

MLPClassifier是一個監督學習演算法,下圖是只有1個隱藏層的MLP模型 ,左側是輸入層,右側是輸出層。

上圖的整體結構可以簡單的理解為下圖所示:

MLP又名多層感知機,也叫人工神經網路(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱藏層,如果沒有隱藏層即可解決線性可劃分的數據問題。最簡單的MLP模型只包含一個隱藏層,即三層的結構,如上圖。

從上圖可以看到,多層感知機的層與層之間是全連接的(全連接的意思就是:上一層的任何一個神經元與下一層的所有神經元都有連接)。多層感知機最底層是輸入層,中間是隱藏層,最後是輸出層。

輸入層沒什麼好說,你輸入什麼就是什麼,比如輸入是一個n維向量,就有n個神經元。

隱藏層的神經元怎麼得來?首先它與輸入層是全連接的,假設輸入層用向量X表示,則隱藏層的輸出就是

f(W1X+b1),W1是權重(也叫連接系數),b1是偏置,函數f 可以是常用的sigmoid函數或者tanh函數:

最後就是輸出層,輸出層與隱藏層是什麼關系?其實隱藏層到輸出層可以看成是一個多類別的邏輯回歸,也即softmax回歸,所以輸出層的輸出就是softmax(W2X1+b2),X1表示隱藏層的輸出f(W1X+b1)。

MLP整個模型就是這樣子的,上面說的這個三層的MLP用公式總結起來就是,函數G是softmax

因此,MLP所有的參數就是各個層之間的連接權重以及偏置,包括W1、b1、W2、b2。對於一個具體的問題,怎麼確定這些參數?求解最佳的參數是一個最優化問題,解決最優化問題,最簡單的就是梯度下降法了(sgd):首先隨機初始化所有參數,然後迭代地訓練,不斷地計算梯度和更新參數,直到滿足某個條件為止(比如誤差足夠小、迭代次數足夠多時)。這個過程涉及到代價函數、規則化(Regularization)、學習速率(learning rate)、梯度計算等。

下面寫了一個超級簡單的實例,訓練和測試數據是mnist手寫識別數據集:

from sklearn.neural_network import MLPClassifier

import gzip

import pickle

with gzip.open('./mnist.pkl.gz') as f_gz:

    train_data,valid_data,test_data = pickle.load(f_gz)

clf = MLPClassifier(solver='sgd',activation = 'identity',max_iter = 10,alpha = 1e-5,hidden_layer_sizes = (100,50),random_state = 1,verbose = True)

clf.fit(train_data[0][:10000],train_data[1][:10000])

print clf.predict(test_data[0][:10])

print(clf.score(test_data[0][:100],test_data[1][:100]))

print(clf.predict_proba(test_data[0][:10]))

參數說明:

參數說明: 

1. hidden_layer_sizes :例如hidden_layer_sizes=(50, 50),表示有兩層隱藏層,第一層隱藏層有50個神經元,第二層也有50個神經元。 

2. activation :激活函數,{『identity』, 『logistic』, 『tanh』, 『relu』}, 默認relu 

- identity:f(x) = x 

- logistic:其實就是sigmod,f(x) = 1 / (1 + exp(-x)). 

- tanh:f(x) = tanh(x). 

- relu:f(x) = max(0, x) 

3. solver: {『lbfgs』, 『sgd』, 『adam』}, 默認adam,用來優化權重 

- lbfgs:quasi-Newton方法的優化器 

- sgd:隨機梯度下降 

- adam: Kingma, Diederik, and Jimmy Ba提出的機遇隨機梯度的優化器 

注意:默認solver 『adam』在相對較大的數據集上效果比較好(幾千個樣本或者更多),對小數據集來說,lbfgs收斂更快效果也更好。 

4. alpha :float,可選的,默認0.0001,正則化項參數 

5. batch_size : int , 可選的,默認』auto』,隨機優化的minibatches的大小batch_size=min(200,n_samples),如果solver是』lbfgs』,分類器將不使用minibatch 

6. learning_rate :學習率,用於權重更新,只有當solver為』sgd』時使用,{『constant』,』invscaling』, 『adaptive』},默認constant 

- 『constant』: 有』learning_rate_init』給定的恆定學習率 

- 『incscaling』:隨著時間t使用』power_t』的逆標度指數不斷降低學習率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t) 

- 『adaptive』:只要訓練損耗在下降,就保持學習率為』learning_rate_init』不變,當連續兩次不能降低訓練損耗或驗證分數停止升高至少tol時,將當前學習率除以5. 

7. power_t: double, 可選, default 0.5,只有solver=』sgd』時使用,是逆擴展學習率的指數.當learning_rate=』invscaling』,用來更新有效學習率。 

8. max_iter: int,可選,默認200,最大迭代次數。 

9. random_state:int 或RandomState,可選,默認None,隨機數生成器的狀態或種子。 

10. shuffle: bool,可選,默認True,只有當solver=』sgd』或者『adam』時使用,判斷是否在每次迭代時對樣本進行清洗。 

11. tol:float, 可選,默認1e-4,優化的容忍度 

12. learning_rate_int:double,可選,默認0.001,初始學習率,控制更新權重的補償,只有當solver=』sgd』 或』adam』時使用。 

14. verbose : bool, 可選, 默認False,是否將過程列印到stdout 

15. warm_start : bool, 可選, 默認False,當設置成True,使用之前的解決方法作為初始擬合,否則釋放之前的解決方法。 

16. momentum : float, 默認 0.9,動量梯度下降更新,設置的范圍應該0.0-1.0. 只有solver=』sgd』時使用. 

17. nesterovs_momentum : boolean, 默認True, Whether to use Nesterov』s momentum. 只有solver=』sgd』並且momentum > 0使用. 

18. early_stopping : bool, 默認False,只有solver=』sgd』或者』adam』時有效,判斷當驗證效果不再改善的時候是否終止訓練,當為True時,自動選出10%的訓練數據用於驗證並在兩步連續迭代改善,低於tol時終止訓練。 

19. validation_fraction : float, 可選, 默認 0.1,用作早期停止驗證的預留訓練數據集的比例,早0-1之間,只當early_stopping=True有用 

20. beta_1 : float, 可選, 默認0.9,只有solver=』adam』時使用,估計一階矩向量的指數衰減速率,[0,1)之間 

21. beta_2 : float, 可選, 默認0.999,只有solver=』adam』時使用估計二階矩向量的指數衰減速率[0,1)之間 

22. epsilon : float, 可選, 默認1e-8,只有solver=』adam』時使用數值穩定值。 

屬性說明: 

- classes_:每個輸出的類標簽 

- loss_:損失函數計算出來的當前損失值 

- coefs_:列表中的第i個元素表示i層的權重矩陣 

- intercepts_:列表中第i個元素代表i+1層的偏差向量 

- n_iter_ :迭代次數 

- n_layers_:層數 

- n_outputs_:輸出的個數 

- out_activation_:輸出激活函數的名稱。 

方法說明: 

- fit(X,y):擬合 

- get_params([deep]):獲取參數 

- predict(X):使用MLP進行預測 

- predic_log_proba(X):返回對數概率估計 

- predic_proba(X):概率估計 

- score(X,y[,sample_weight]):返回給定測試數據和標簽上的平均准確度 

-set_params(**params):設置參數。

閱讀全文

與神經網路隨機梯度下降軟體相關的資料

熱點內容
世界上第一個網路出現在哪個國家 瀏覽:574
移動網路的分層覆蓋 瀏覽:814
中公研究生網路課程如何 瀏覽:36
怎樣設置網路高級 瀏覽:195
蘇州網路設備軟體 瀏覽:92
華為手機網路制式4g是什麼意思 瀏覽:657
請問網路電視怎麼樣看衛視 瀏覽:3
網路持續連接 瀏覽:229
2021網路安全專業高校 瀏覽:943
福田電腦網路布線 瀏覽:292
網安大隊網路安全排查整改報告 瀏覽:558
機頂盒外部網路設置 瀏覽:57
網路游戲大全免費下載手機版 瀏覽:944
受限制或無連接網路圖標 瀏覽:628
網路盒光信號跳紅色是怎麼回事 瀏覽:432
安卓微信網路設置在哪裡打開 瀏覽:835
網路安全總隊培訓 瀏覽:82
無線網路未來十年十大產業 瀏覽:560
圍棋ai用的什麼神經網路 瀏覽:174
手機無線網路丟了找不到 瀏覽:973

友情鏈接