Sigmoid () , Tanh () , ReLU () , Softmax () , LogSoftmax () , Hardmax ()
神經網路的非線性啟用函式。
Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)
參數
x:要套用非線性的引數
傳回值
套用非線性的結果。 輸出的張量圖形與輸入的 相同。
描述
這些是神經網路的熱門啟用函式。
除了系列以外的 Softmax() 所有專案,都會 Hardmax() 以元素方式套用。
請注意,為了有效率,使用交叉 Entropy 定型準則時,通常最好不要在結尾套用 Softmax 作業,而是將 Softmax 的 輸入 傳遞至 CrossEntropyWithSoftmax()
作業 Hardmax() 會決定具有最高值的專案,並將其位置表示為一熱向量/tensor。
這會用於執行分類。
在 BrainScript 中表示其他非線性
如果您需要的非線性不是上述其中一個,它可能會撰寫為 BrainScript 運算式。 例如,負數部分的斜率為 0.1 的流失 ReLU 可能只是寫入為
LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)
沿著軸的 Softmax
Softmax 系列特別,因為它牽涉到分母的計算。 此分母會計算輸入向量的所有值。
不過,在某些情況下,輸入是排名 > 為 1 的張量,其中軸應該分開處理。
例如,假設圖形的 [10000 x 20] 輸入張量會儲存 20 個不同的分佈,每個資料行都代表相異輸入專案的機率分佈。
因此,Softmax 作業應該計算 20 個不同的分母。
內建 (Log)Softmax() 函式不支援此作業,但可以使用元素縮減作業在 BrainScript 中實現,如下所示:
ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)
在這裡, ReduceLogSum() 會計算) 分母的 (記錄,產生具有縮減座標軸維度 1 的張量; [1 x 20] 在上述範例中。 從 [10000 x 20] 維度輸入向量減去這個是有效的作業,就像往常一樣, 1 會自動「廣播」,也就是重複以符合輸入維度。
範例
執行 40 維特徵向量的 10 向分類的簡單 MLP:
features = Input{40}
h = Sigmoid (ParameterTensor{256:0} * features + ParameterTensor{256})
z = ParameterTensor{10:0} * h * ParameterTensor{10} # input to Softmax
labels = Input{10}
ce = CrossEntropyWithSoftmax (labels, z)