★ 欢迎关注我的公众号【拇指笔记】,本篇文章完整程序可以在后台回复"APF"获得。
1 激活函数
非线性函数是指对隐藏变量使用暗元素运算的非线性函数进行变换,然后再做为下一个全连接层输入。这个非线性函数叫做激活函数。
下面介绍几种常用的激活函数。
1.1 ReLU函数(线性整流函数)
ReLU函数
-
功能: ReLU函数只保留正数元素,并将负数元素清零。
-
定义:
- 函数图像和导数图像:
- 绘制程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.relu()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-1,ymax=7)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('ReLU(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=1.05)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of ReLU(x)')
1.2 sigmoid函数(S型函数)
sigmoid函数
- 功能: sigmoid函数可以将元素的值变换到0和1之间。
- 定义:
- 函数图像和导数图像:
- 绘制程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.sigmoid()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-0.1,ymax=1.1)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=0.3)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of sigmoid(x)')
1.3 tanh函数(双曲正切函数)
tanh函数
- 功能:可以将元素的值变换到-1和1之间
- 定义:
- 函数图像和导数图像
- 绘制程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.tanh()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-1.1,ymax=1.1)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('tanh(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=1.1)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of tanh(x)')
写文不易,有用的话加个关注呗,我的公众号【拇指笔记】,每天更新我的学习笔记~