DL4J中文文件/模型/頂點
頂點是什麼?
在Eclipse DL4J中,頂點是在計算圖中充當節點的一種層。它可以接受多個輸入,提供多個輸出,並且可以幫助構建流行的網路,如InceptionV4。
可用的類
L2NormalizeVertex
L2NormalizeVertex 在單個輸入上執行L2歸一化。
L2Vertex
L2Vertex 計算兩個輸入的L2最小二乘誤差。
例如,在三重嵌入中,你可以輸入一個錨和一個pos/neg類,並使用兩個並行的L2頂點來計算兩個實數,這兩個實數可以輸入LossLayer來計算三重損失。
PoolHelperVertex
用於從輸入中移除第一列和行的自定義層。這意味著允許從https://gist.github.com/joelouismarino/a2ede9ab3928f999575423b9887abd14 引入Caffe的GoogLeNet。
ReshapeVertex
在計算圖中增加對張量變形和偏平化能力。這相當於下一層。ReshapeVertex還確保形狀對於反向傳播是有效的。
ScaleVertex
一個ScaleVertex用於縮放單個層的啟用大小。
例如,可以在重複塊中縮放ResNet啟用,以保持方差在控制之中。
ShiftVertex
ShiftVertex用於轉換單個層的啟用
人們可以使用它來新增偏置或者作為其他計算的一部分。例如,公路層在兩個地方需要它們。一,門權重有很大的負偏差通常是有用的。(當然,對於這一點,我們可以這樣初始化偏置。)但是,它也需要這樣做:(1-sigmoid(weight input + bias)) () input + sigmoid(weight input + bias) () activation(w2 input + bias) (() is hadamard product) 因此,在這裡,我們可以
- 一個做為sigmoid的 DenseLayer
- 一個 ScaleVertex(-1) 和
- 一個 ShiftVertex(1) 來完成這一點。
StackVertex
StackVertex允許堆疊輸入,以便它們可以通過網路轉發。這對於諸如三重嵌入之類的情況是有用的,其中共享引數不被網路支援。
這個頂點會自動堆疊所有可用的輸入。
UnstackVertex
UnstackVertex允許對輸入進行拆堆疊,以便它們可以通過網路轉發。這對於諸如三重嵌入之類的情況是有用的,其中嵌入可以被分離並通過後續層執行。
除了0維度輸入之外,與SubsetVertex(子集頂點)相似。stackSize由使用者顯式定義,以適當地計算一個步驟。
ReverseTimeSeriesVertex
在迴圈神經網路中使用ReverseTimeSeriesVertex來反轉時間序列的順序。結果,最後一個時間步長被移動到時間序列的開始,並且第一時間步長被移動到結束。這允許遞迴層反向處理時間序列。
掩碼:輸入可能被遮蔽(以允許在一個小批量中改變不同的時間序列長度)。在這種情況下,當前輸入(掩碼陣列=1)將恢復到位,填充(掩碼陣列=0)將保持不變。對於長度為n的時間序列,這通常意味著,恢復最初的n個時間步長,並且不修改下面的填充,但是支援更復雜的掩碼(例如[1,0,1,0,…])。
setBackpropGradientsViewArray
public void setBackpropGradientsViewArray(INDArray backpropGradientsViewArray)
從提供的輸入獲取當前掩碼陣列。
- 如果沒有輸入,則返回掩碼或NULL