首页 > 其他分享 >深度学习(激活函数)

深度学习(激活函数)

时间:2024-08-17 22:05:03浏览次数:5  
标签:__ return 函数 exp 深度 np 激活 where def

这里实现了一下常见的激活函数。

其中prelu参数是一个可学习参数,这里设成前向传播类。

代码如下:

import numpy as np
import matplotlib.pyplot as plt
import torch
import torch.nn as nn

def sigmoid(x):
    return 1.0/(1.0 + np.exp(-x))

def softmax(x):
    return np.exp(x)/np.sum(np.exp(x))

def tanh(x):
    return (np.exp(x) - np.exp(-x))/(np.exp(x) + np.exp(-x))

def relu(x):
    return np.where(x > 0, x, 0)

def leaky_relu(x,a=0.1):
    return np.where(x > 0, x, a * x)

def rrelu(x,lower=0.1,upper=0.3):
    return np.where(x > 0, x, np.random.rand(len(x))*(upper-lower)+lower * x)

def elu(x,a=1.0):
    return np.where(x > 0, x, a * (np.exp(x) - 1))

def selu(x,a=1.67,l=1.05):
    return np.where(x > 0, l * x, l * a * (np.exp(x) - 1))

def celu(x,a=1.0):
    return np.where(x > 0, x,  a * (np.exp(x/a) - 1))

def gelu(x):
    return 0.5*x*(1+tanh(np.sqrt(2/np.pi)*(x+0.044715*x**3)))

def relu6(x):
    return np.minimum(np.maximum(0, x), 6)

def swish(x,b=1.0):
    return x*sigmoid(b*x)

def hardswish(x):
    return x * relu6(x+3) / 6.0

def silu(x):
    return x*sigmoid(x)

def softplus(x):
    return np.log(1+np.exp(x))

def mish(x):
    return x*tanh(softplus(x))

class prelu(nn.Module):
    def __init__(self):
        super(prelu, self).__init__()
        self.a = nn.Parameter(torch.ones(1)*0.1)
    def forward(self, x):
        return torch.where(x > 0, x, self.a * x)

if __name__ == '__main__':
    
    x = np.linspace(-10,10,1000)
    functions = [sigmoid,softmax,tanh,relu,
                 leaky_relu,rrelu,elu,selu,celu,
                 gelu,relu6,swish,hardswish,
                 silu,softplus,mish]
   
    for i,func in enumerate(functions):
        plt.subplot(4,4,i+1)
        plt.plot(x,func(x)) 
    plt.show()

    model = prelu()
    tensor_x = torch.tensor(x)
    tensor_y = model(tensor_x)
    plt.plot(tensor_x.numpy(),tensor_y.detach().numpy())
    plt.show()

结果如下:

标签:__,return,函数,exp,深度,np,激活,where,def
From: https://www.cnblogs.com/tiandsp/p/18365068

相关文章

  • MATLAB基于深度学习的车辆检测系统
      如今机器视觉领域深度学习算法已经大行其道,也让人工智能的实现不再那么遥不可及,但是在目标检测领域,让计算机超越人类还需让更多的人参与进来继续努力。如今众多的高校,甚至中小学已经将人工智能纳入了学习科目,这确实能让人感受到AI的魅力以及社会对其重视程度。印象中玩深......
  • 【C语言】字符函数和字符串函数
    文章目录前言一、字符分类函数二、字符转换函数三、字符串函数的分类四、strlen函数的使用五、strcpy和strncpy函数的使用1.strcpy2.strncpy六、strcat和strncat函数的使用1.strcat2.strncat七、strcmp和strncmp函数的使用1.strcmp2.strncmp八、strstr函数的使用九、s......
  • 麦克斯韦-玻尔兹曼速度分布函数 + 齐奥尔科夫斯基火箭方程
    这个速度分布律指出,在平衡态下,气体分子速率在\(v\)到\(v+\mathrmdv\)区间内的分子数占总分子数的百分比为\[\frac{\mathrmdN_v}N=4\pi\left(\fracm{2\pikT}\right)^{3/2}v^2\mathrme^{-\frac{mv^2}{2kT}}\mathrmdv\]故有分布函数为\[f(v)=4\pi\left(\fracm{2\pikT}......
  • 回调函数,字符函数,字符串函数
    前言:上一趴我们学习了指针。那么今天我们来学习新的知识,回调函数,字符函数,字符串函数。1回调函数什么是回调函数呢?回调函数就是通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。......
  • 虚函数的定义、用法以及纯虚函数和虚析构函数
    虚函数虚函数是一种成员函数,它允许子类重写(override)父类中定义的函数。虚函数的重要意义便是实现多态性。多态性是面向对象编程的一个核心概念:即同一个接口可以有不同的实现,从而实现代码的灵活性和通用性目录1.虚函数的定义2.虚函数的用法3.纯虚函数和抽象类4.虚析......
  • C/C++ 拷贝构造函数 | 赋值构造函数 | 移动构造函数 | 移动赋值构造函数
    文章目录前言1.拷贝构造函数(CopyConstructor)2.赋值构造函数(CopyAssignmentOperator)3.移动构造函数(MoveConstructor)4.移动赋值构造函数(MoveAssignmentOperator)总结前言C++中关于一个对象的构造,就有很多讲究。其中最常用的可能就是拷贝构造函数......
  • 深度搜索迷宫问题
    深度搜索(Depth-FirstSearch,DFS)是一种用于图的遍历的算法,也可以用来解决迷宫问题。迷宫问题是指在一个迷宫中,找到从起点到终点的路径。以下是深度搜索解决迷宫问题的步骤:创建一个二维数组来表示迷宫,其中0表示可以通过的路径,1表示墙壁或障碍物。同时创建一个与迷宫相同大小的......
  • linux C语言remove函数及相关函数
    讯飞星火LinuxC语言中的remove函数用于删除指定的文件或目录。其原型如下:intremove(constchar*pathname);参数:pathname:要删除的文件或目录的路径。返回值:成功时返回0,失败时返回-1。相关函数:rename:用于重命名文件或目录。intrename(constchar*old_path,......
  • 图数据库在社交网络分析中的应用:深度剖析与探索
    图数据库在社交网络分析中的应用:深度剖析与探索在数字时代,社交网络已成为人们日常生活不可或缺的一部分,它不仅连接了人与人之间的关系,还承载了海量的信息和交互数据。随着社交网络规模和复杂度的不断增长,如何高效地存储、查询和分析这些数据成为了一个重大挑战。图数据库以......
  • 【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
     ......