
層數、參數數量與記憶體
|
271
請注意,某些層型態並沒有任何參數(例如子取樣 [subsampling] 層與激活層,以及
DL4J 的
LossLayer
)。如果網路中有卷積層與稠密層(或輸出層)相連的情況,計算上會
稍微複雜一點。針對卷積層 / 子取樣層後面的稠密層(或輸出層),我們必須根據最後一
個卷積層激活陣列的大小,計算出相應的的長度,以做為稠密層 / 輸出層的 n
L – 1
值。舉
例來說,如果最終卷積層輸出 100 個通道的 5 × 5 激活值,我們就應該使用 n
L – 1
= 5 × 5
×
100 = 2,500 做為稠密層 / 輸出層的輸入
5
。
如果我們有一個 DL4J 配置,還有沒有其他方法可以檢查參數的數量呢?這裡有個簡單
的做法:
MultiLayerConfiguration configuration = ...
MultiLayerNetwork network = new MultiLayerNetwork(configuration);
network.init();
System.out.println("Total number of parameters: " + network.numParams());
for( int i=0; i<network.getnLayers(); i++ ){
System.out.println("Layer " + i + " number of parameters: " +
network.getLayer(i).numParams()); ...