天天看点

P13 PyTorch 激活函数1

前言

1959年,生物学家对青蛙神经元(synapse)机制的研究,发现了基本结构,

当多个输入的时候,输出并不是线性的,而是通过激活函数非线性输出.这里

重点研究一些常见的激活函数.

P13 PyTorch 激活函数1
P13 PyTorch 激活函数1
P13 PyTorch 激活函数1

目录:

1: sigmod

2: tanh

3: relu

一 sigmod

该激活函数在机器学习classfication 里面应用比较多

定义

P13 PyTorch 激活函数1
P13 PyTorch 激活函数1

导数:

P13 PyTorch 激活函数1

( x 为标量)

问题:

1 当x 特别大,或者特别小的时候,梯度接近为0,导致梯度弥散现象(参数无法更新)

2 梯度较小m,当网络层次较深的时候,会导致梯度消失.

当x 为向量时候

P13 PyTorch 激活函数1

梯度

P13 PyTorch 激活函数1

是一个对角矩阵

P13 PyTorch 激活函数1

其中

P13 PyTorch 激活函数1

代表逐元素求导,为向量.

在反向传播算法中,乘以一个向量,通常表示成内哈马达乘积

二 tanh 函数

该激活函数在RNN 里面应用比较多

定义:

P13 PyTorch 激活函数1

导数:

P13 PyTorch 激活函数1
P13 PyTorch 激活函数1

三 RLU 函数

在深度学习中,应用最广的激活函数之一.

优点:

梯度为1

定义

P13 PyTorch 激活函数1

导数

P13 PyTorch 激活函数1
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 11 17:18:22 2023

@author: chengxf2
"""

import torch
import matplotlib.pyplot as plt
from  torch.nn  import function as F
def tanh():
    
    a = torch.linspace(-1, 1,10)
    b = torch.tanh(a)
    
    plt.plot(a,b,'go--')
    plt.show()

'''
神经元synapse
'''
def sigmoid():
    
    a = torch.linspace(-100, 100,100)
    
    
    
    b = torch.sigmoid(a)
    
    plt.plot(a,b,'go--')
    plt.show()
    
    
def relc():
    a = torch.linspace(-1, 1,10)
    b = torch.relu(a)
    
    plt.plot(a,b,'go--')
    plt.show()
    
if __name__ == "__main__":
    sigmoid()
    
    
           

继续阅读