莫烦pytorch学习03:激励函数及matplot展示

来源https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/203_activation.py<>

激励函数

让神经网络可以描述非线性问题的步骤, 使神经网络变得更强大
activation function AF (relu, sigmoid, tanh.) y = AF(Wx)

可以创造自己的激励函数来处理自己的问题, 不过要确保的是这些激励函数必须是可以微分的
不得随意选择利器. 因为这会涉及到梯度爆炸, 梯度消失的问题。
在少量层结构中, 我们可以尝试很多种不同的激励函数。 在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu。 在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu。。。

#线性方程linear和非线性方程nonlinear
#非线性任务达成
#y=Wx(神经网络) (y预测值W所需参数x输入值)--> y = AF(Wx)
#AF()为非线性方程,激励函数,可自建可微分激励函数
#激励函数

import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt



# fake data
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)
x_np = x.data.numpy()   # numpy array for plotting



# following are popular activation functions
y_relu = torch.relu(x).data.numpy()
y_sigmoid = torch.sigmoid(x).data.numpy()
y_tanh = torch.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy() # there's no softplus in torch

# y_softmax = torch.softmax(x, dim=0).data.numpy() softmax is a special kind of activation function, it is about probability


# plt to visualize these activation function
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')

plt.show()

你可能感兴趣的:(pytorch)