首页 > 其他分享 >Mish激活函数

Mish激活函数

时间:2023-07-06 16:55:58浏览次数:55  
标签:Mish 函数 tanh torch import 激活

前言

人们对激活函数都在不断探究,而现在广泛应用的激活函数通常是relu,tanh这两种
但是relu在负值的时候直接截断
梯度下降的不够平滑
因而有团队提出一种新的激活函数来进行优化

Mish激活函数

Mish激活函数的表达式为

						Mish = x*tanh(ln(1+e^x))

使用matplotlib画图可得

从图中可以看出他在负值的时候并不是完全截断

而是允许比较小的负梯度流入
从而保证信息流动

并且激活函数无边界这个特点,让他避免了饱和这一问题
比如sigmoid,tanh激活函数通常存在梯度饱和问题,在两边极限情况下,梯度趋近于1
而Mish激活函数则巧妙的避开了这一点

另外Mish函数也保证了每一点的平滑,从而使得梯度下降效果比Relu要好

# -*- coding: utf-8 -*-
import torch
import torch.nn as nn
import torch.nn.functional as F
from matplotlib import pyplot as plt

class Mish(nn.Module):
    def __init__(self):
        super().__init__()
        print("Mish activation loaded...")
    def forward(self,x):
        x = x * (torch.tanh(F.softplus(x)))
        return x

mish = Mish()
x = torch.linspace(-10,10,1000)
y = mish(x)

plt.plot(x,y)
plt.grid()
plt.show()

 

标签:Mish,函数,tanh,torch,import,激活
From: https://www.cnblogs.com/chentiao/p/17532617.html

相关文章

  • js的中的函数(二)
    构造函数JavaScript中,一个函数除了作为普通意义的函数外,还可以被用来定义为构造函数。什么是构造函数?就是可以用来生成一个对象的函数。例如:functionStudent(name,age,city,address){//this指向构造函数生成的对象this.name=name;this.age=ag......
  • C++内存模型&空指针、野指针、函数指针和回调函数
    C++内存模型&空指针、野指针、函数指针和回调函数C++内存模型栈与堆的区别:1.管理方式不同栈是系统自动管理的,在超出作用域后,将自动被释放堆是手动释放,若程序中不释放,程序结束后将由操作系统回收2.空间大小不同堆的大小受限于物理内存范围栈小的可怜,一般为8M(可通过更改......
  • Go 语言函数
    函数定义与调用packagemainimport"fmt"funcmain(){/*定义局部变量*/varaint=100varbint=200varretint/*调用函数并返回最大值*/ret=max(a,b)fmt.Printf("最大值是:%d\n",ret)}/*函数返回两个数的最大值*/fun......
  • 结构体,指针函数和数组初始化
    struct_m_malloc_dev{void(*init)(uint8_t);//初始化函数uint8_t(*perused)(uint8_t);//内存使用率uint8_t*membase[SRAMBANK];//内存池管理srambank个区域的内存uint16_t*memmap[SRAMBANK];//内存管理状态表uint8_tmemrdy[SRAMBANK];//内存管理......
  • 一个C++11的线程函数
    一个C++11的线程函数#include<iostream>#include<thread>#include<chrono>voidprintNumbers(){for(inti=1;i<=100;++i){std::cout<<i<<std::endl;std::this_thread::sleep_for(std::chrono::millis......
  • C++ 重载运算符和重载函数
     C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数......
  • 正点原子内存管理实验室,keil mdk 和stm32cubeide gcc的函数替换
    https://www.cnblogs.com/RegressionWorldLine/p/11968467.html转载记录下 STM32.ld链接文件分析及一次bug解决过程问题描述原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如......
  • 去除内容多余样式php函数-文章来源 植物号 www.zhiwuhao.com
    去除内容多余样式php函数-文章来源植物号 www.zhiwuhao.comfunctionKillStyle($content){$content=preg_replace("/STYLE=.+?['|\"]/i",'',$content);//去除样式$content=preg_replace("/style=.+?['|\"]/i",'',$conte......
  • MySQL常用字符串函数
    一、常用函数1.1ASCII(str)返回值为字符串str的最左字符的数值,即取得最左字符的ascii码。假如str为空字符串,则返回值为0。假如str为null,则返回值为null。mysql>selectascii('a');+--------------+|ascii('a')|+--------------+|97|+--------------+1rowin......
  • 函数 global全局变量; 局部变量;缺省参数
    #函数在函数里设置全局变量,会因为被赋值而修改x=2deffuncx():globalx#这个x是全局变量会因为函数里面被赋值而修改x=9print("thisxisinthefuncx:-->",x)funcx()print("--------------")print("thisxisinthefuncx:-->",x)'''......