[pytorch]activation function "swish"


swishは、GoogleがRELUに取って代わるために作成したアクティブ化関数です.深さニューラルネットワークでは,RELUよりも精度が高く,EfficientとMobileNetで実用化されている.(MobileNetはh-swish関数を使用)

Swish


f(x)=x∗sigmoid(x)f′(x)=f(x)+sigmoid(x)(1−f(x))\begin{aligned} f(x)&=x * sigmoid(x)\\f'(x)&=f(x) + sigmoid(x)(1-f(x))\end{aligned}f(x)f′(x)​=x∗sigmoid(x)=f(x)+sigmoid(x)(1−f(x))​

Codes

def sigmoid(x):
    return 1 / (1 + np.exp(-x))
def ReLU(x):
    return np.maximum(0,x)
def swish(x):
    return x * sigmoid(x)

Result