Pytoch中提供了多种激活函数,也包含在nn模块中,激活函数类和功能,常用的激活函数对应的类和功能如下:
层对应的类 | 功能 |
---|---|
torch.nn.Sigmoid() | Sigmoid激活函数 |
.Tanh() | Tanh激活函数 |
.Relu() | Relu激活函数 |
.Softplus() | Softplus激活函数 |
Sigmoid()激活函数:
f(x)=11+e−x
f(x) = \frac{1}{1+e^{-x}}
f(x)=1+e−x1
Tanh()激活函数:
f(x)=ex−e−xex+e−x
f(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}
f(x)=ex+e−xex−e−x
ReLU()激活函数:
f(x)=max(0,x)
f(x) = max(0, x)
f(x)=max(0,x)
Softplus()激活函数:
f(x)=log(1+eβx)β
f(x) = \frac{log(1+e^{\beta x})}{\beta}
f(x)=βlog(1+eβx)
绘制激活函数
import torch
import numpy as np
from torch import nn
import matplotlib.pyplot as plt
x = torch.linspace(-6, 6, 100)
sigmoid = nn.Sigmoid()
ysigmoid = sigmoid(x)
tanh = nn.Tanh()
ytanh = tanh(x)
relu = nn.ReLU()
yrelu = relu(x)
softplus = nn.Softplus()
ysoftplus = softplus(x)
plt.figure(figsize=(14, 3))
plt.subplot(1, 4, 1)
plt.plot(x.data.numpy(), ysigmoid.data.numpy(), "r-")
plt.title("sigmoid")
plt.grid()
plt.subplot(1, 4, 2)
plt.plot(x.data.numpy(), ytanh.data.numpy(), "r-")
plt.title("tanh")
plt.grid()
plt.subplot(1, 4, 3)
plt.plot(x.data.numpy(), yrelu.data.numpy(), "r-")
plt.title("relu")
plt.grid()
plt.subplot(1, 4, 4)
plt.plot(x.data.numpy(), ysoftplus.data.numpy(), "r-")
plt.title("softplus")
plt.grid()
plt.show()