【YOLO系列】 YOLOv4之Mish函数

一、简述

        一个新的state of the art的激活函数,ReLU的继任者。

        Diganta Misra在 “Mish: A Self Regularized Non-Monotonic Neural Activation Function”论文中介绍了Mish这个新的深度学习激活函数,指出该函数在准确度上比Swish(+0.494%)和ReLU(+1.671%)。

        ReLU与Mish相比,Mish的梯度更平滑,有助于更好得信息传播,使网络能够更好地利用深度资源进行特征提取和分类。

二、什么是Mish?

        1、公式

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

        其他的激活函数,ReLU 是 x = max(0,x),Swish = x * sigmoid(x)。

        2、 代码实现

import torch

import torch.nn.functional as F

class Mish(torch.nn.Module):

    def init(self):

        super().init()

    def forward(self, x):

        return x * torch.tanh(F.softplus(x))

        要使用这个Mish模块,可以将其添加到神经网络模型中,并在训练和推理过程中使用它作为激活函数。例如:

import torch.nn as nn

class MyModel(nn.Module):

    def init(self):

        super().init()

        self.fc = nn.Linear(10, 10)

        self.mish = Mish()

    def forward(self, x):

        x = self.fc(x)

        x = self.mish(x)
    
        return x

三、为什么Mish表现这么好?

        1、以无上边界(即正值可以达到任何的值),避免了由于封顶而导致的饱和,理论上对负值轻微允许,允许更好得梯度流,而不是想ReLU那样的硬零边界。

        2、Mish函数在不同区间上可能单调递增或递减,有助于增加模型的非线性表达能力。

        3、随着层深的增加,ReLu精度迅速下降,其次是Swish,相比之下,Mish能更好的保持准确性

四、总结

        ReLU有一些已知的弱点,但是通常执行起来很轻,并且在计算上很轻。Mish具有较强的理论渊源,在测试中,就训练稳定性和准确性而言,Mish的平均性能优于ReLU。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

资深大佬养成之路:Java中关于List集合选择与使用

目录 1、前言 2、List集合的概念和作用 2.1 什么是List集合 2.2 List集合的作用 2.3 List集合的特点 3、ArrayList和LinkedList的区别 3.1 ArrayList的特点和适用场景 3.2 LinkedList的特点和适用场景 3.3 如何选择ArrayList还是LinkedList 4、List集合的常用操作 4…

Java IO学习和总结(超详细)

一、理解 I/O 是输入和输出的简写,指的是数据在计算机内部和外部设备之间的流动。简单来说,当你从键盘输入数据、从鼠标选择操作,或者在屏幕上看到图像,这些都是 I/O 操作。它就像是计算机与外部世界沟通的桥梁,没有 I…

harmony开发之状态state修饰器的使用

来自官方开发文档, State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的&#xff0…

更改邮箱发件人

更改邮箱发件人 未更改前发件人显示为发件人的邮箱地址 这里以outlook邮箱为例,进行邮箱发件人的更改 1.点击左上角“文件”选项 2.打开“账户设置”下拉菜单中的“账户设置” 3.选择“电子邮件”,点击该栏下的“更改”选项 4.在弹出页面中修改你…

<软考高项备考>《论文专题 - 56 进度管理(7) 》

10 历年真题解析 10.1 格式 背景500字1-2段 过渡段150字左右1段 一、规划进度管理…【随便写,正常写即可】 二、定义活动…【随便写,正常写即可】 三、排列活动顺序…【随便写,正常写即可】 四、估算活动持续时间…【随便写,正常…

redhat+ oracle 11.2.0.4 RAC 搭建 dataguard

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! redhat oracle 11.2.0.4 RAC 搭建 dataguard 1.安装环境 主机名 OS DB SID db_name db_unique_name rac1 Redhat7 11.2.0.4 orcl1 orcl o…

【OpenCV学习笔记05】- 鼠标作为画笔

内容 学习如何用OpenCV处理鼠标事件您将学习以下功能:cv.setMouseCallback() 简单的示例 这里,我们创建一个简单的程序,在图像的任何位置双击在上面画一个圆。 首先我们创建一个鼠标回调函数,该函数在鼠标事件发生时执行。鼠标…

从txt文档里筛选出每行重复数据字符,并保存到新的txt文档

从txt文档里筛选出每行重复数据字符,并保存到新的txt文档 input_file rD:\pythonXangmu\quchong\input_file2.txt #原始文档 #output_file output.txt#重复内容记录文档 output_file rD:\pythonXangmu\quchong\output2.txt#绝对路径,解决报错找不到文…

一篇文章认识微服务中Eureka的原理和服务注册与发现

目录 1、认识Eureka 2、Eureka原理 2.1 和Dubbo架构对比: 2.2 三大角色 3、微服务常见的注册中心 3.1 Zookeeper 3.2 Eureka 3.3 Consul 3.4 Nacos 3.5 区别 1、认识Eureka Netflix 在设计Eureka 时,遵循的就是AP原则。 CAP原则又称CAP定理…

TagTextView 行内标签TextView

效果 效果如下,可以解析xml中配置的drawableStart ,然后将这个drawable显示在一行内。下一个开始。从这个drawable开始。 代码 MaxLengthTextView 是我另外一个自定义view MaxLengthTextView 如果内容超过xml中maxLength属性定义的文字数量时&#x…

揭秘加密货币周期:如何通过顶级代币指标洞察市场变化

作者:stellafootprint.network 加密生态领域如大海般波涛汹涌,如何在这片海域中稳稳航行?关键在于把握市场周期的脉搏。顶级代币的几个核心指标,正是我们窥探市场周期的窗口。 领先的区块链分析平台跟踪的关键代币指标包括&…

什么软件能查出微信聊天记录(3款实用工具盘点!)

微信聊天记录往往记录这很多重要的客户信息,一个不小心可能就会删除,或者员工可以隐藏一些重要的信息,那么此时此刻我们就需要一款,能查处微信聊天记录的工具。 今天就给大家盘点三款: 1、微信电脑端备份 通过在电脑…

MySql01:初识

1.mysql数据库2.配置环境变量3. 列的类型和属性,索引,注释3.1 类型3.2 属性3.3 主键(主键索引)3.4 注释 4.结构化查询语句分类:5.列类型--表列类型设置 1.mysql数据库 数据库: ​ 数据仓库,存储数据,以前我…

基于模块自定义扩展字段的后端逻辑实现(一)

目录 一:背景介绍 二:实现过程 三:字段标准化 四:数据存储 五:数据扩展 六:表的设计 一:背景介绍 最近要做一个系统,里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表…

快乐学Python,Python基础之代码复用?

上一篇文章中,我们了解了代码的分支结构(if 家族语句)和循环结构(for 循环和 while 循环)。通过了解这些结构,我们已经能够写出稍微复杂一些的代码。但当代码一多,就会遇到一些问题。 上一篇文…

文件上传靶场实战:upload-labs第1-3关

0、环境准备 0.1、安装靶场 由于自己的电脑是win10系统,上传一句话木马被系统自动拦截删除,文件上传的靶场安装在win7虚拟机。把upload-labs安装包复制到老版小皮的C:\phpstudy\PHPTutorial\WWW\目录下解压,然后启用小皮,启用服…

连接两个路由器的有线连法,关键时候可能会发挥不小的作用

路由器网桥连接两个或多个路由器,以扩展网络范围,提供额外的以太网端口和无线接入点。但在开始之前,你必须首先决定如何使用每个路由器。因此,你需要知道你想要实现什么,并清楚地了解你对每台设备的期望。 例如你想扩…

前端入门教程:学完即可单独完成前端项目

目录 目录 1.HTML: 1.1概念 1.2结构 1.3常见的标签使用分类: 2.CSS: 2.1概念 2.2样式实践: 以下的举例都来自于博客: 2.3css选择器: 什么是css选择器: 举例如下: 2.4Demo 3.JavaScript&#…

Go语言为什么建议少用数组,多使用切片?

01 介绍 在 Go 语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用 Go 语言开发项目时,或者在阅读 Go 开源项目源码时&…

代码随想录算法训练营第二十二天| 回溯 93.复原IP地址 78.子集 90.子集II

93. 复原 IP 地址 递归参数:index一定是需要的,记录下一层递归分割的起始位置。还需要一个变量pointNum,记录添加逗点的数量。 递归终止条件:明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,…