赞
踩
1. relu函数:
公式: 深层网络内部激活函数常用这个
- import matplotlib.pyplot as plt
-
- def relu_fun(x):
- if x>=0:
- return x
- else:
- return 0
-
- x = np.random.randn(10)
- y = np.arange(10)
-
- plt.plot(y,x)
-
- for i ,t in enumerate(x):
- x[i] = relu_fun(t)
- plt.plot(y,x)
2.sigmod函数,深层网络不咋用这个激活函数,因为容易梯度消失,把输入变为范围 0,1之间和tanh曲线挺像,但是tanh函数范围为-1,1之间。
- import numpy as np
-
- def sigmoid(x):
- s = 1 / (1 + np.exp(-x))
- return s
- x = np.arange(-100,100).astype(np.float32)/10.0
- y = np.arange(-100,100).astype(np.float32)/10.0
- plt.plot(y,x)
- for i ,t in enumerate(x):
- x[i] = sigmoid(t)
- plt.plot(y,x)
3.tanh函数,把输入变为范围 -1,1之间。
- x = np.arange(-100,100).astype(np.float32)/10.0
- y = np.tanh(x)
- plt.plot(x,y)
4.leak relu函数,leakrelu函数和relu函数的主要区别是,leakrelu 函数保留了小于0的部分的一些影响,只是把这部分性影响减少了。
- fun = nn.LeakyReLU()
- x = np.arange(-10000,1000)/100.0
- x = torch.from_numpy(x)
- x = x.view(-1,1)
- t=fun(x)
- t=t.numpy()
- x= x.numpy()
- plt.plot(x,t)
- plt.grid(alpha=0.4,linestyle=':')
5.elu函数,α超参数一般取1
- fun = nn.ELU()
- x = np.arange(-500,200)/100.0
- x = torch.from_numpy(x)
- x = x.view(-1,1)
- t = fun(x)
- x = x.numpy()
- t = t.numpy()
- plt.plot(x,t)
- plt.grid(alpha=0.4,linestyle=':')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。