DL4J中文文檔/開(kāi)始/速查表-1

快速檢索

DL4J(和相關(guān)項(xiàng)目)有很多功能。此篇的目標(biāo)是總結(jié)這個(gè)功能,以便用戶知道存在什么功能,以及在哪里可以找到更多信息。

內(nèi)容

前饋層

輸出層

卷積層

循環(huán)層

無(wú)監(jiān)督層

其它層

圖頂點(diǎn)

輸入預(yù)處理器

迭代/訓(xùn)練監(jiān)聽(tīng)器

評(píng)估

網(wǎng)絡(luò)保存和加載

網(wǎng)絡(luò)配置

激活函數(shù)

權(quán)重初始化

更新器 (優(yōu)化器)

學(xué)習(xí)調(diào)度

正則化

L1/L2 正則化

Dropout(丟棄)

權(quán)重噪聲

約束

數(shù)據(jù)類

迭代器

迭代器 - 內(nèi)置 (DL4J-提供數(shù)據(jù))

迭代器 -用戶提供數(shù)據(jù)

迭代器 - 適配器和實(shí)用迭代器

讀取原始數(shù)據(jù): DataVec 記錄讀取器

數(shù)據(jù)歸一化

Spark 網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)類

遷移學(xué)習(xí)

已訓(xùn)練的模型庫(kù) - Model Zoo

SKIL - 模型部署

Keras 導(dǎo)入

分布式訓(xùn)練 (Spark)

超參數(shù)優(yōu)化

前饋層

DenseLayer - (源碼) - 簡(jiǎn)單/標(biāo)準(zhǔn)全連接層

EmbeddingLayer - (源碼) - 以正整數(shù)索引作為輸入,輸出向量。只作為模型中的第一層使用。數(shù)學(xué)上等效于(當(dāng)啟用偏置)DenseLayer,使用OneHot輸入,但更高效。

輸出層

輸出層:通常用作網(wǎng)絡(luò)中的最后一層。這里會(huì)設(shè)置損失函數(shù)。

OutputLayer - (源碼) - 在MLPs/CNNs中的標(biāo)準(zhǔn)分類/回歸輸出層。有一個(gè)內(nèi)置的全連接的DenseLayer。 2d 輸入/輸出 (即, 每個(gè)示例中的行向量)。

LossLayer - (源碼) - 沒(méi)有參數(shù)的輸出層 - 只有損失函數(shù)和激活函數(shù)。2d 輸入/輸出 (即, 每個(gè)示例中的行向量)。與Outputlayer 不同,它有nIn = nOut的限制。

RnnOutputLayer - (源碼) - 循環(huán)神經(jīng)網(wǎng)絡(luò)的輸出層。三維(時(shí)間序列)的輸入和輸出。內(nèi)置有時(shí)間分布全連接層。

RnnLossLayer - (源碼) - 無(wú)參版本的RnnOutputLayer。 三維(時(shí)間序列)的輸入和輸出。

CnnLossLayer - (源碼) - 與CNNs一起使用,其中必須在輸出的每個(gè)空間位置進(jìn)行預(yù)測(cè)(例如:分割或去噪)。沒(méi)有參數(shù),四維輸入/輸出與形狀[小批量,深度,高度,寬度]。當(dāng)使用softmax時(shí),這是在每個(gè)空間位置的深度應(yīng)用。

Yolo2OutputLayer - (源碼) - 用于目標(biāo)檢測(cè)的YOLO 2模型實(shí)現(xiàn)

CenterLossOutputLayer - (源碼) - OutputLayer的一個(gè)版本,也試圖最小化示例激活的類內(nèi)距離,即,“如果示例x在Y類中,則確保嵌入(x)接近于所有示例y在Y中的平均值(嵌入(y))。

卷積層

  • ConvolutionLayer / Convolution2D - (Source) - 標(biāo)準(zhǔn)的二維卷積神經(jīng)網(wǎng)絡(luò)層。輸入和輸出有4個(gè)維度形狀分別為 [minibatch,depthIn,heightIn,widthIn] 和[minibatch,depthOut,heightOut,widthOut]。
  • Convolution1DLayer / Convolution1D - (Source) - 標(biāo)準(zhǔn)的一維卷積神經(jīng)網(wǎng)絡(luò)層。
  • Deconvolution2DLayer - (Source) - 也稱為轉(zhuǎn)置或分?jǐn)?shù)階卷積??梢哉J(rèn)為是“反向”卷積層;輸出通常大于輸入,同時(shí)保持空間連接結(jié)構(gòu)。
  • SeparableConvolution2DLayer - (Source) - 深度可分離卷積層。
  • SubsamplingLayer - (Source) -為CNNs實(shí)現(xiàn)的標(biāo)準(zhǔn)二維空間池化,最大、平均和p范數(shù)池可用。
  • Subsampling1DLayer - (Source)
  • Upsampling2D - (Source) - 通過(guò)重復(fù)行/列 來(lái)升級(jí)CNN激活 。
  • Upsampling1D - (Source) - 一維版本的上采樣層
  • Cropping2D - (Source) - 二維卷積神經(jīng)網(wǎng)絡(luò)的裁剪層。
  • ZeroPaddingLayer - (Source) -非常簡(jiǎn)單的層,將指定數(shù)量的零填充添加到四維輸入激活的邊緣。
  • ZeroPadding1DLayer - (Source) - 一維版本的ZeroPaddingLayer
  • SpaceToDepth - (Source) - 給定塊大小,這個(gè)操作采用四維數(shù)組,并把數(shù)據(jù)從空間維度移動(dòng)到通道。
  • SpaceToBatch - (Source) - 根據(jù)指定的“塊”,將張量從2個(gè)空間維度轉(zhuǎn)換為批量維度。

循環(huán)層

  • LSTM - (Source) - 沒(méi)有窺視孔連接的LSTM RNN。 支持 CuDNN。
  • GravesLSTM - (Source) - 具有窺視孔連接的LSTM RNN。不支持CuDNN(因此對(duì)于GPU,LSTM應(yīng)該優(yōu)先使用)。
  • GravesBidirectionalLSTM - (Source) - 具有窺視連接的雙向LSTM實(shí)現(xiàn)。等效于雙向(ADD,GravesLSTM)。由于增加了雙向包裝(以下),已被主干棄用。
  • Bidirectional - (Source) - 一個(gè)“包裝”層-將任何標(biāo)準(zhǔn)的單向RNN轉(zhuǎn)換成雙向RNN(雙倍數(shù)量的參數(shù)-前向/后向網(wǎng)絡(luò)具有獨(dú)立的參數(shù))。前向/后向網(wǎng)絡(luò)的激活可以是增加的、乘法的、平均的或級(jí)聯(lián)的。
  • SimpleRnn - (Source) - 一個(gè)標(biāo)準(zhǔn)的“普通”RNN層。在長(zhǎng)時(shí)間系列依賴的情況下,通常在實(shí)際中不生效。更推薦使用LSTM。
  • LastTimeStep - (Source) - 一個(gè)“包裝器”層提取出它封裝的(非雙向)RNN層的最后一個(gè)時(shí)間步長(zhǎng)。三維輸入的形狀[minibatch, size, timeSeriesLength],二維輸出與形狀[minibatch, size]。

無(wú)監(jiān)督層

  • VariationalAutoencoder - (Source) 一種用于編碼器和解碼器的MLP/稠密層的變分自編碼器實(shí)現(xiàn)。支持多種不同類型的重構(gòu)分布。
  • AutoEncoder - (Source) - 標(biāo)準(zhǔn)降噪自動(dòng)編碼器層

其它層

  • GlobalPoolingLayer - (Source) - 實(shí)現(xiàn)基于時(shí)間的池化(對(duì)于RNs/時(shí)間序列-輸入大小[minibatch,size,timeSeriesLength]、out[minibatch,size])和全局空間池化(對(duì)于CNN-輸入大小[minibatch,.,h,w]、out[minibatch,.])。可用的池模式:和,平均,最大和p-范數(shù)。
  • ActivationLayer - (Source) - 將激活函數(shù)(僅)應(yīng)用于輸入激活。請(qǐng)注意,大多數(shù)DL4J層具有作為配置選項(xiàng)內(nèi)置的激活函數(shù)。
  • DropoutLayer - (Source) - 實(shí)現(xiàn)丟棄的單獨(dú)的層。注意大多數(shù) DL4J層有一個(gè)內(nèi)置的丟棄配置選項(xiàng)。
  • BatchNormalization - (Source) - 二維(前饋),三維(時(shí)間系列)或4維(卷積神經(jīng)網(wǎng)絡(luò))激少的批量歸一化。對(duì)于時(shí)間系列,參數(shù)是跨時(shí)間共享的;對(duì)于卷積神經(jīng)網(wǎng)絡(luò),參數(shù)是跨空間位置(不是深度)共享的。
  • LocalResponseNormalization - (Source) - 卷積神經(jīng)網(wǎng)絡(luò)的本地響應(yīng)歸一化層。在現(xiàn)代的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)中不經(jīng)常用。
  • FrozenLayer - (Source) - 通常不會(huì)被用戶直接使用-被作為遷移學(xué)習(xí)的一部份添加,用于凍結(jié)層在將來(lái)的訓(xùn)練中不再改變的參數(shù)。

圖頂點(diǎn)

圖頂點(diǎn): 與 ComputationGraph 一起使用。和層類似,頂點(diǎn)通常沒(méi)有任何參數(shù),并可以支持多個(gè)輸入。

  • ElementWiseVertex - (Source) - 對(duì)輸入進(jìn)行元素操作-加法、減法、乘積、平均值、最大值
  • L2NormalizeVertex - (Source) - 通過(guò)對(duì)每個(gè)示例除以L2范數(shù)來(lái)歸一化輸入激活。即,out<-out/L2范數(shù)(out)
  • L2Vertex - (Source) - 為每個(gè)示例分別計(jì)算兩個(gè)輸入陣列之間的L2距離。對(duì)于每個(gè)輸入值,輸出是一個(gè)單一值。
  • MergeVertex - (Source) - 將輸入激活沿維度1合并,以生成更大的輸出數(shù)組。對(duì)于CNNs,它實(shí)現(xiàn)沿深度/通道維度的合并。
  • PreprocessorVertex - (Source) - 包括一個(gè)輸入預(yù)處理器的簡(jiǎn)單的圖頂點(diǎn)
  • ReshapeVertex - (Source) - 執(zhí)行任意激活陣列整形。下一節(jié)中的預(yù)處理器通常是首選的。
  • ScaleVertex - (Source) - 實(shí)現(xiàn)輸入的簡(jiǎn)單乘法縮放,即OUT =標(biāo)量*輸入。
  • ShiftVertex - (Source) - 在輸入上實(shí)現(xiàn)簡(jiǎn)單的標(biāo)量元素添加(即,out=輸入+標(biāo)量)。
  • StackVertex - (Source) - 用于按小批量的維度堆疊所有輸入。類似于MergeVertex,但沿維度0(小批量)而不是維度1(輸出/通道)
  • SubsetVertex - (Source) - 用于獲得沿維度1的輸入激活的連續(xù)子集。例如,可以使用兩個(gè)SubsetVertex實(shí)例來(lái)將激活從輸入數(shù)組分割為兩個(gè)單獨(dú)的激活。本質(zhì)上與MergeVertex是相反的。
  • UnstackVertex - (Source) - 與SubsetVertex類似,但沿維度0(小批量)而不是維度1(輸出/通道)。與StackVertex相反。

輸入預(yù)處理器

輸入預(yù)處理器是一個(gè)簡(jiǎn)單的類/接口,它對(duì)一個(gè)層的輸入進(jìn)行操作。也就是說(shuō),預(yù)處理器連接到一個(gè)層上,并在輸入到輸出之前對(duì)輸入執(zhí)行一些操作。預(yù)處理器還處理反向傳播——即,預(yù)處理操作一般是可求導(dǎo)的。

請(qǐng)注意,在許多情況下(例如XtoYPreProcessor類),用戶不需要(也不應(yīng)該)手動(dòng)添加這些,而只能使用.setInputType(InputType.feedForward(10))來(lái)代替,這會(huì)根據(jù)需要推斷和添加預(yù)處理器。

  • CnnToFeedForwardPreProcessor - (Source) - 對(duì)一個(gè)卷積層(ConvolutionLayer, SubsamplingLayer, etc) 到 DenseLayer/OutputLayer的轉(zhuǎn)換做必要的激活修正處理。
  • CnnToRnnPreProcessor - (Source) - 對(duì)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)層到循環(huán)神經(jīng)網(wǎng)絡(luò)層的轉(zhuǎn)換做必要的激活修正處理。
  • ComposableInputPreProcessor - (Source) - 一個(gè)簡(jiǎn)單的類,允許多個(gè)預(yù)處理器鏈接在單個(gè)層上。
  • FeedForwardToCnnPreProcessor - (Source) - 對(duì)一個(gè)行向量到一個(gè)卷積網(wǎng)絡(luò)層的轉(zhuǎn)換做激活修正處理。注意這種轉(zhuǎn)換或預(yù)處理僅在激活為真實(shí)的卷積神經(jīng)網(wǎng)絡(luò)激活,但已被扁平化為一個(gè)行向量。
  • FeedForwardToRnnPreProcessor - (Source) - 處理從(時(shí)間分布)前饋層到RNN層的轉(zhuǎn)換。
  • RnnToCnnPreProcessor - (Source) - 處理從具有形狀[minibatch,...,timeSeriesLength]格式的CNN激活序列到時(shí)間分布[numExam.*timeSeriesLength,numChannels,inputWidth,inputHeight]格式的轉(zhuǎn)換。
  • RnnToFeedForwardPreProcessor - (Source) - 處理從時(shí)間序列激活(.[minibatch,size,timeSeriesLength])到時(shí)分布前饋(.[minibatch*tsLength,size])激活的轉(zhuǎn)換。

迭代/訓(xùn)練監(jiān)聽(tīng)器

迭代監(jiān)聽(tīng)器:可以附加到模型,并在訓(xùn)練期間調(diào)用,在每次迭代之后(即,在每次參數(shù)更新之后)。訓(xùn)練監(jiān)聽(tīng)器:迭代監(jiān)聽(tīng)器的擴(kuò)展。在訓(xùn)練的不同階段調(diào)用許多附加方法。即在向前傳遞、梯度計(jì)算之后,在每次訓(xùn)練開(kāi)始或結(jié)束。

沒(méi)有(迭代/訓(xùn)練)在訓(xùn)練之外(即在輸出或前饋方法中)被調(diào)用。

  • ScoreIterationListener - (Source, Javadoc) - 記錄每隔n次訓(xùn)練迭代的損失函數(shù)評(píng)分。
  • PerformanceListener - (Source, Javadoc) -記錄每N次訓(xùn)練迭代的性能(每秒鐘多少示例,每秒鐘多少微批次,ETL時(shí)間)并可以選擇評(píng)分
  • EvaluativeListener - (Source, Javadoc) - 在一個(gè)測(cè)試集上評(píng)估每N次迭代或訓(xùn)練的網(wǎng)絡(luò)性能。也有一個(gè)回調(diào)系統(tǒng),來(lái)保存評(píng)估結(jié)果。
  • CheckpointListener - (Source, Javadoc) - 周期性的保存網(wǎng)絡(luò)檢查點(diǎn)-基于訓(xùn)練,迭代或時(shí)間(或這三個(gè)中的組合)
  • StatsListener - (Source) - DL4J的基于網(wǎng)頁(yè)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練用戶界面的主要監(jiān)聽(tīng)器。查看可視化頁(yè)面來(lái)獲取詳情。
  • CollectScoresIterationListener - (Source, Javadoc) - 與ScoreIterationListener類似,但在一個(gè)本地的列表中保存評(píng)分(用于之后獲?。?,而不是記錄評(píng)分
  • TimeIterationListener - (Source, Javadoc) - 試圖,基于當(dāng)前的速度和指定的迭代次數(shù)估算訓(xùn)練完成之前的時(shí)間。

評(píng)估

鏈接: 主要的評(píng)估頁(yè)

DL4J具有用于評(píng)估網(wǎng)絡(luò)性能的多個(gè)類,與測(cè)試集相對(duì)應(yīng)。不同的評(píng)估類適合于不同類型的網(wǎng)絡(luò)。

  • Evaluation - (Source) - 用于多類分類器的評(píng)估(假設(shè)標(biāo)準(zhǔn)one-hot標(biāo)簽,以及N類上的軟最大概率分布用于預(yù)測(cè))。計(jì)算一些度量-正確率,精確率,召回,F(xiàn)1,F(xiàn)β,馬休斯相關(guān)系數(shù),混淆矩陣??蛇x地計(jì)算前N正確率、自定義二分類決策閾值和成本數(shù)組(對(duì)于非二分類情況)。通常用于軟最大 + 麥克森特/負(fù)對(duì)數(shù)似然網(wǎng)絡(luò)。
  • EvaluationBinary - (Source) -評(píng)估類的多標(biāo)簽二分類版本。假設(shè)每個(gè)網(wǎng)絡(luò)輸出是獨(dú)立的/獨(dú)立的二分類,概率0到1與所有其他輸出無(wú)關(guān)。通常用于sigmoid+二值交叉熵網(wǎng)絡(luò)。
  • EvaluationCalibration - (Source) - 用于評(píng)價(jià)二分類或多類分類器的校準(zhǔn)。產(chǎn)生可靠性圖、殘差圖和概率直方圖。使用EvaluationTools.exportevaluationCalibrationToHtmlFile 方法導(dǎo)出圖表到HTML
  • ROC - (Source) - 僅用于單輸出二分類器。即,具有nOut(1) + sigmoid, 或 nOut(2) + softmax。支持2種模式:閾值(近似)或精確(默認(rèn))。計(jì)算ROC曲線下面積,精確召回曲線下面積。使用EvaluationTools繪制ROC和P-R曲線到HTML。
  • ROCBinary - (Source) - 一個(gè)用于多標(biāo)簽二分類網(wǎng)絡(luò)(即 sigmoid + 二值交叉熵)的ROC版本,它的每個(gè)網(wǎng)絡(luò)的輸出假被為一個(gè)獨(dú)立的二分類變量。
  • ROCMultiClass - (Source) - 一個(gè)用于多類(非二分類)網(wǎng)絡(luò)的ROC版本。 (即, softmax + 麥克森特/負(fù)對(duì)數(shù)似然 網(wǎng)絡(luò))。由于ROC度量?jī)H定義為二分類,因此將多類輸出視為一組“一對(duì)所有”的二分類問(wèn)題。
  • RegressionEvaluation - (Source) - 一個(gè)用于回歸模型的評(píng)估類(包括多輸出回歸模型)。報(bào)告每個(gè)輸出的度量,例如均方誤差(MSE)、平均絕對(duì)誤差等。

網(wǎng)絡(luò)的保存與加載

可以使用ModelSerializer類,特別是writeModel、restoreMultiLayerNetwork和restoreComputationGraph方法來(lái)保存多層網(wǎng)絡(luò)和計(jì)算圖。

對(duì)于當(dāng)前主干(但不是0.9.1) MultiLayerNetwork.save(File)方法 和 MultiLayerNetwork.load(File) 方法已被添加。這些在內(nèi)部使用ModelSerializer。計(jì)算圖也增加了類似的保存/加載方法。

示例: 加載與保存網(wǎng)絡(luò)

網(wǎng)絡(luò)可以在保存和加載之后進(jìn)一步訓(xùn)練:但是,請(qǐng)確保加載“更新器”(即,更新器的歷史狀態(tài),如momentum)。如果不需要進(jìn)一步的訓(xùn)練,則更新器狀態(tài)可以被忽略以節(jié)省磁盤空間和內(nèi)存。

大多數(shù)歸一化器(實(shí)現(xiàn)ND4J Normalizer接口)也可以使用addNormalizerToModel方法添加到模型中。

注意,DL4J中用于模型的格式是.zip:可以使用支持zip格式的程序打開(kāi)/提取這些文件。

網(wǎng)絡(luò)配置

本節(jié)列出了DL4J支持的各種配置選項(xiàng)。

激活函數(shù)

激活函數(shù)可以用兩種方式之一定義:(a)通過(guò)向配置傳遞激活枚舉值,例如,.activation(Activation.TANH)(b)通過(guò)傳遞IActivation實(shí)例,例如,.activation(new ActivationSigmoid())。

注意,DL4J支持自定義激活函數(shù),它可以通過(guò)擴(kuò)展BaseActivationFunction來(lái)定義。

支持的激活函數(shù)列表:

  • CUBE - (Source) - f(x) = x^3
  • ELU - (Source) - 指數(shù)線性單位(參考文獻(xiàn))
  • HARDSIGMOID - (Source) - 標(biāo)準(zhǔn)sigmoid激活函數(shù)的分段線性化. f(x) = min(1, max(0, 0.2*x + 0.5))
  • HARDTANH - (Source) - 標(biāo)準(zhǔn) tanh 激活函數(shù)的分段線性化.
  • IDENTITY - (Source) - 一個(gè)“無(wú)運(yùn)算”激活函數(shù): f(x) = x
  • LEAKYRELU - (Source) - 漏校正線性單元. f(x) = max(0, x) + alpha * min(0, x) 默認(rèn)的 alpha=0.01 .
  • RATIONALTANH - (Source) - tanh(y) ~ sgn(y) * { 1 - 1/(1+|y|+y^2+1.41645*y^4)} 近似于 f(x) = 1.7159 * tanh(2x/3), 但執(zhí)行起來(lái)更快. (參考文獻(xiàn))
  • RELU - (Source) - 標(biāo)準(zhǔn)校正線性單元: f(x) = x if x>0f(x) = 0
  • RRELU - (Source) - 隨機(jī)校正線性單位。在測(cè)試期間有確定性. (參考文獻(xiàn))
  • SIGMOID - (Source) - 標(biāo)準(zhǔn)的 sigmoid 激活函數(shù), f(x) = 1 / (1 + exp(-x))
  • SOFTMAX - (Source) - 標(biāo)準(zhǔn)的 softmax 激活函數(shù)
  • SOFTPLUS - (Source) - f(x) = log(1+e^x) - 形狀類似于RELU 激活函數(shù)的平滑版本
  • SOFTSIGN - (Source) - f(x) = x / (1+|x|) - 形狀類似于標(biāo)準(zhǔn)的 tanh 激活函數(shù) (計(jì)算更快).
  • TANH - (Source) - 標(biāo)準(zhǔn)的 tanh (雙曲正切) 激活函數(shù)
  • RECTIFIEDTANH - (Source) - f(x) = max(0, tanh(x))
  • SELU - (Source) - 比例指數(shù)線性單位,與自歸一化神經(jīng)網(wǎng)絡(luò)一起使用
  • SWISH - (Source) - Swish 激活函數(shù), f(x) = x * sigmoid(x)(參考文獻(xiàn))

權(quán)重初始化

權(quán)值初始化指的是一個(gè)新網(wǎng)絡(luò)的初始參數(shù)應(yīng)該被設(shè)置的方法。

權(quán)重初始化通常使用WeightInit枚舉來(lái)定義。

自定義權(quán)重初始化可以使用 .weightInit(WeightInit.DISTRIBUTION).dist(new NormalDistribution(0, 1)) 例如. 對(duì)于主干 (非 0.9.1 版本) .weightInit(new NormalDistribution(0, 1)) 也是可用的, 這相當(dāng)于以前的方法。

可用的權(quán)重初始化。并不是所有的版本都在0.9.1版本中可用:

  • DISTRIBUTION: Sample weights from a provided distribution 從給定的分布獲取權(quán)重樣例 (specified 通過(guò) dist 配置方法來(lái)指定)
  • ZERO: 生成權(quán)重為零
  • ONES: 所有權(quán)重設(shè)為1
  • SIGMOID_UNIFORM: sigmoid激活函數(shù)的一個(gè)XAVIER_UNIFORM版本。 U(-r,r) with r=4*sqrt(6/(fanIn + fanOut))
  • NORMAL: 均值為0,標(biāo)準(zhǔn)差為 1/sqrt(fanIn)的 正態(tài)/高斯分布。這是Klambauer等人提出的初始化,2017、“自歸一化神經(jīng)網(wǎng)絡(luò)”論文。相當(dāng)于 DL4J’的 XAVIER_FAN_IN 和 LECUN_NORMAL (即. Keras 的 “l(fā)ecun_normal”)
  • LECUN_UNIFORM: U[-a,a] 與 a=3/sqrt(fanIn)保持統(tǒng)一
  • UNIFORM: U[-a,a] 與 a=1/sqrt(fanIn)保持統(tǒng)一。 Glorot和BeNIO 2010的“常用啟發(fā)式”
  • XAVIER: As per Glorot and Bengio 2010: 均值 0, 方差為 2.0/(fanIn + fanOut)的高斯分布
  • XAVIER_UNIFORM: As per Glorot and Bengio 2010: 分布 U(-s,s) 與 s = sqrt(6/(fanIn + fanOut))保持統(tǒng)一
  • XAVIER_FAN_IN: 類似于Xavier, 除了 1/fanIn -> Caffe 原來(lái)用過(guò)這個(gè).
  • RELU: He et al. (2015), “深入研究整流器”. 方差為2.0/nIn的正態(tài)分布
  • RELU_UNIFORM: He et al. (2015), “深入研究整流器”. 分布 U(-s,s) 與 s = sqrt(6/fanIn)保持統(tǒng)一
  • IDENTITY: 權(quán)重被設(shè)置為單位矩陣。注:只能與平方權(quán)重矩陣一起使用。
  • VAR_SCALING_NORMAL_FAN_IN: 均值0,方差為1.0/(fanIn)的高斯分布
  • VAR_SCALING_NORMAL_FAN_OUT: 均值0,方差為1.0/(fanOut)的高斯分布
  • VAR_SCALING_NORMAL_FAN_AVG: 均值0,方差為1.0/((fanIn + fanOut)/2)的高斯分布
  • VAR_SCALING_UNIFORM_FAN_IN: U[-a,a] 與 a=3.0/(fanIn)保持統(tǒng)一
  • VAR_SCALING_UNIFORM_FAN_OUT: U[-a,a] 與 a=3.0/(fanOut)保持統(tǒng)一
  • VAR_SCALING_UNIFORM_FAN_AVG:U[-a,a] 與 a=3.0/((fanIn + fanOut)/2)保持統(tǒng)一

更新器 (優(yōu)化器)

DL4J中的“更新器”是一個(gè)需要原始梯度并將其修改為更新的類。然后將這些更新應(yīng)用于網(wǎng)絡(luò)參數(shù)。這篇CS231n 課程筆記對(duì)這些更新器有很好的解釋。

DL4J支持的更新器:

  • AdaDelta - (Source) - Reference
  • AdaGrad - (Source) - Reference
  • AdaMax - (Source) - Adam 更新器的一個(gè)變體 - 參考文獻(xiàn)
  • Adam - (Source)
  • Nadam - (Source) - Adam 更新器的一個(gè)變體,使用牛頓動(dòng)量更新規(guī)則 - 參考文獻(xiàn)
  • Nesterovs - (Source) - 牛頓動(dòng)量更新器
  • NoOp - (Source) - 一個(gè)“無(wú)操作”更新程序。也就是說(shuō),梯度不會(huì)被這個(gè)更新器修改。數(shù)學(xué)等價(jià)于學(xué)習(xí)率為1的SGD更新器
  • RmsProp - (Source) - 參考文獻(xiàn)
  • Sgd - (Source) - 標(biāo)準(zhǔn)隨機(jī)梯度下降更新器。此更新器僅適用學(xué)習(xí)速率。

學(xué)習(xí)調(diào)度

支持學(xué)習(xí)速率的所有更新器也支持學(xué)習(xí)速率調(diào)度(牛頓動(dòng)量更新器也支持動(dòng)量調(diào)度)。學(xué)習(xí)速率調(diào)度可以根據(jù)迭代次數(shù)或已逝去的訓(xùn)練數(shù)來(lái)指定。Dropout(見(jiàn)下文)也可以利用這里列出的調(diào)度表。

配置用法,例如: .updater(new Adam(new ExponentialSchedule(ScheduleType.ITERATION, 0.1, 0.99 ))) 你可以在你創(chuàng)建的調(diào)度對(duì)象上通過(guò)調(diào)用ISchedule.valueAt(int iteration, int epoch) 來(lái)制圖/監(jiān)視將在任意點(diǎn)使用的學(xué)習(xí)率。

可用的調(diào)度:

  • ExponentialSchedule - (Source) - 實(shí)現(xiàn) value(i) = initialValue * gamma^i
  • InverseSchedule - (Source) - 實(shí)現(xiàn) value(i) = initialValue * (1 + gamma * i)^(-power)
  • MapSchedule - (Source) - 基于用戶提供的映射的學(xué)習(xí)率調(diào)度。注意所提供的映射必須有一個(gè)用于迭代/訓(xùn)練 0次 的值。有一個(gè)構(gòu)建器類來(lái)方便的定義一個(gè)調(diào)度。
  • PolySchedule - (Source) - 實(shí)現(xiàn) value(i) = initialValue * (1 + i/maxIter)^(-power)
  • SigmoidSchedule - (Source) - 實(shí)現(xiàn) value(i) = initialValue * 1.0 / (1 + exp(-gamma * (iter - stepSize)))
  • StepSchedule - (Source) - 實(shí)現(xiàn) value(i) = initialValue * gamma^( floor(iter/step) )

請(qǐng)注意,自定義調(diào)度可以通過(guò)實(shí)現(xiàn)ISchedule接口來(lái)創(chuàng)建。

翻譯:風(fēng)一樣的男子

有任何問(wèn)題請(qǐng)聯(lián)系微信

image

如果您覺(jué)得我的文章給了您幫助,請(qǐng)為我買一杯飲料吧!以下是我的支付寶,意思一下我將非常感激!

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容