zoukankan      html  css  js  c++  java
  • sigmod、tanh、ReLU激活函数的实现

    import torch
    import torch.nn.functional as F
    import matplotlib.pyplot as plt
    import numpy as np
    x = torch.linspace(-10,10,60)
    fig = plt.figure(figsize=(14,4))
    ae = fig.add_subplot(131)  #sigmod激活函数
    ax = plt.gca()
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    y = torch.sigmoid(x)
    plt.plot(x.numpy(),y.numpy())
    plt.ylim((0,1))
    
    ae = fig.add_subplot(132)  #tanh激活函数
    ax = plt.gca()
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    y1 = torch.tanh(x)
    plt.plot(x.numpy(),y1.numpy())
    plt.ylim((-1,1))
    
    ae = fig.add_subplot(133)  # ReLU激活函数
    ax = plt.gca()
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    y2 = F.relu(x)
    plt.plot(x.numpy(),y2.numpy())
    plt.ylim((-1,5))
    
    plt.show()

    输出:

    sigmod公式:

    一般会造成梯度消失。

    tanh公式:

    tanh是以0为中心点,如果使用tanh作为激活函数,能够起到归一化(均值为0)的效果。

    Relu(Rectified Linear Units)修正线性单元

    $a=max(0,z)$ 导数大于0时1,小于0时0。

  • 相关阅读:
    Item2:建造者替代多参数构造器
    Java常量赋值失败?
    0828 列表 增删改查
    字符 列表的切片规则
    0820 字符转换为数字
    使用 in 判断是否有敏感词
    while循环
    for循环
    isalnum 判断变量是否由字符或者数字组成
    使用lower upper等字符大小写指令选择为大小写单词转换大小写
  • 原文地址:https://www.cnblogs.com/peixu/p/13212178.html
Copyright © 2011-2022 走看看