美文网首页
Pytorch激励函数

Pytorch激励函数

作者: BlueSkyBlue | 来源:发表于2018-10-14 13:28 被阅读87次

    激励函数用于解决现实生活中不能用线性方程概括的问题。

    线性方程与非线性方程

    线程关系举例:女生越漂亮,就会有越多的人喜欢她。
    非线性关系举例:一个校园中的女生有限,即使在漂亮也不会有更多的人喜欢她。

    激励函数的一般格式

    y=AF(Wx)

    AF解释:嵌套在Wx上的方程。又叫掰弯函数。将原有的线性结果掰弯了,是的原先的线性结果有了非线性的特征。
    确保激励函数是可以微分的,只有可微分的函数才可以把误差反向传递回去。

    当神经层不是很多,使用任意的掰弯函数掰弯隐藏层都是可以尝试的。不会有很大的影响。当神经网络的层数很多的时候不能随便使用掰弯函数。可能会导致梯度的误差。

    推荐的激励函数

    • 卷积神经网络:relu
    • 循环神经网络:relu or tanh

    常用的激励函数

    relu, sigmoid, tanh, softplus

    画出相关的激励函数

    import torch
    import torch.nn.functional as F
    from torch.autograd import Variable
    import matplotlib.pyplot as plt
    
    x = torch.linspace(-5, 5, 200)
    x = Variable(x)
    x_np = x.data.numpy()
    
    y_relu = F.relu(x).data.numpy()
    y_sigmoid = F.sigmoid(x).data.numpy()
    y_tanh = F.tanh(x).data.numpy()
    y_softplus = F.softplus(x).data.numpy()
    
    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.show()
    
    plt.subplot(222)
    plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
    plt.ylim((-0.2,1.2))
    plt.legend(loc='best')
    plt.show()
    
    plt.subplot(223)
    plt.plot(x_np, y_tanh, c='red', label='tanh')
    plt.ylim((-1.2,1.2))
    plt.legend(loc='best')
    plt.show()
    
    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激励函数

          本文链接:https://www.haomeiwen.com/subject/youzaftx.html