当前位置: 首页 > news >正文

C++builder中的人工智能(17):神经网络中的自我规则非单调(Mish)激活函数

在这篇文章中,我们将探讨自我规则非单调激活函数——Mish在神经网络中的应用。了解Mish函数的工作原理,将有助于您在使用C++ IDE构建C++应用程序时更加得心应手。

目录

  • 神经网络中的激活函数是什么?
  • 能在C++中创建激活函数吗?
  • 自我规则非单调(Mish)激活函数是什么?
  • 如何在C++中编写Mish激活函数?
  • 有没有一个简单的C++ ANN示例使用Mish激活函数?

神经网络中的激活函数是什么?

激活函数(phi()),也称为转移函数或阈值函数,它根据净输入函数的给定值(sum)确定激活值(a = phi(sum))。在这里,sum是它们权重中的信号之和,激活函数是这个和的新值,具有给定的函数或条件。换句话说,激活函数是将所有加权信号的和转换为该信号的新激活值的方法。有不同类型的激活函数,常用的包括线性(恒等)、双极性和逻辑(sigmoid)函数。

能在C++中创建激活函数吗?

在C++中(以及大多数编程语言),您可以创建自己的激活函数。注意,sum是净输入函数的结果,它计算所有加权信号的和。这里,人工神经元(输出值)的激活值可以通过激活函数如下所示,

通过使用这个sum净输入函数值和phi()激活函数,我们可以编写phi()函数。让我们看看C++中的一些激活函数;现在让我们看看如何使用Mish函数作为这个示例公式,

自我规则非单调(Mish)激活函数是什么?

自我规则非单调(Mish)激活函数是受Swish激活函数启发的平滑、连续、自我规则、非单调激活函数。这个函数由Diganta Misra在2019年发表的“Mish: A Self Regularized Non-Monotonic Activation Function”中提出。

https://i0.wp.com/learncplusplus.org/wp-content/uploads/2021/05/Mish-1024x633.png?resize=750%2C464&ssl=1 图片来源:Mish A Self Regularized Non Monotonic Activation Function by Diganta Misra 2019

根据这项研究,“Mish利用自我门控属性,其中非调制输入与输入的非线性函数的输出相乘。由于保留了少量的负信息,Mish通过设计消除了Dying ReLU现象所需的先决条件。这一特性有助于更好的表达性和信息流动。Mish无界,避免了饱和,这通常会因为梯度接近零而导致训练速度大幅减慢。Mish在下方有界也是有利的,因为它产生了强烈的规则效应。与ReLU不同,Mish是连续可微的,这是一个可取的特性,因为它避免了奇异性,因此在执行基于梯度的优化时避免了不希望的副作用。”

我们之前解释了softplus()激活函数。Mish激活函数可以使用softplus()定义如下,

因此,Mish激活函数可以数学定义如下,

作者比较了Mish、ReLU、SoftPlus和Swish激活函数的输出,还比较了Mish和Swish的第一和第二导数。

Mish函数可以在C++中编写如下,

double phi(double sum) {return(sum * std::tanh(std::ln(1 + std::exp(sum)))); // Mish函数
}

一个简单的C++ ANN示例使用自我规则非单调(Mish)激活函数

我们可以简单地将这个mish函数应用到我们的通用简单ANN示例中,如下所示,

#include <iostream>
#define NN 2   // 神经元数量class Tneuron { // 神经元类
public:double a;       // 每个神经元的活动值double w[NN+1]; // 神经元之间连接的权重Tneuron() {a = 0;for (int i = 0; i < NN; i++) w[i] = -1;  // 如果权重是负数,则表示没有连接}// 定义输出神经元的激活函数(或阈值)double activation_function(double sum) {return(sum * std::tanh(std::ln(1 + std::exp(sum)))); // Mish函数}
};Tneuron ne[NN+1]; // 神经元对象void fire(int nn) {double sum = 0;for (int j = 0; j < NN; j++) {if (ne[j].w[nn] > 0) sum += ne[j].a * ne[j].w[nn];}ne[nn].a = ne[nn].activation_function(sum);
}int main() {// 定义两个输入神经元(a0, a1)和一个输出神经元(a2)的活动值ne[0].a = 0.0;ne[1].a = 1.0;ne[2].a = 0;// 定义来自两个输入神经元到输出神经元(0到2和1到2)的信号权重ne[0].w[2] = 0.6;ne[1].w[2] = 0.4;// 激发我们的人工神经元活动,输出将是fire(2);printf("%10.6f\n", ne[2].a);getchar();return 0;
}

这个示例展示了如何在C++中使用Mish激活函数来模拟一个简单的人工神经网络。通过这种方式,你可以构建更复杂的神经网络模型,并在C++应用中实现深度学习技术。

相关文章:

C++builder中的人工智能(17):神经网络中的自我规则非单调(Mish)激活函数

在这篇文章中&#xff0c;我们将探讨自我规则非单调激活函数——Mish在神经网络中的应用。了解Mish函数的工作原理&#xff0c;将有助于您在使用C IDE构建C应用程序时更加得心应手。 目录 神经网络中的激活函数是什么&#xff1f;能在C中创建激活函数吗&#xff1f;自我规则非…...

Java 的 Scanner 类:控制台输入与文件扫描

Java 的 Scanner 类是一个非常方便的工具类&#xff0c;主要用于从控制台或文件中扫描输入数据。虽然它也可以用于扫描文件内容&#xff0c;但我们通常更喜欢它用于控制台输入&#xff0c;因为扫描文件可以通过文件流来完成。接下来&#xff0c;我们将通过几个简单的示例来讲解…...

使用纯HTML和CSS绘制圣诞树:打造网页中的冬日奇景

### HTML & CSS 实现节日圣诞树&#xff1a;一步步打造你的冬季主题网页 在这篇文章中&#xff0c;我们将使用纯HTML和CSS创建一棵节日圣诞树。通过简单的代码&#xff0c;您可以在网页上实现一棵带有星星、彩球装饰的圣诞树&#xff0c;为网站增添节日氛围。 ### 实现思…...

深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)

目录 0、实验准备 ①实验环境 ②需要下载的安装包 ③注意事项&#xff08;很关键&#xff0c;否则后面内容看不懂&#xff09; ④容易出现的问题 1、查看数据并读取数据。 2、PIL库里的Image包进行读取&#xff08;.resize更改图片尺寸&#xff0c;并将原始数据归一化处…...

羲和数据集收集器0.9

为了进一步完善代码,增强其文字抓取能力和文件读取能力,我们做以下改进: 增强 DOCX 文档的文本提取:不仅提取段落和文本框内容,还提取表格中的文本。 增强 PDF 文档的文本提取:不仅提取页面文本和注释,还提取表格中的文本。 优化文本清理:确保文本清理更加彻底,避免不…...

哈尔滨等保测评常见误区破解:避免陷入安全盲区

在当今信息化社会&#xff0c;网络安全已成为各行各业不可忽视的重要议题。等级保护&#xff08;简称“等保”&#xff09;作为我国网络安全的基本制度&#xff0c;旨在通过划分不同安全保护等级&#xff0c;对信息系统实施分等级的安全保护。然而&#xff0c;在实施等保测评的…...

Python学习------第四天

Python的判断语句 一、布尔类型和比较运算符 二、 if语句的基本格式 if语句注意空格缩进&#xff01;&#xff01;&#xff01; if else python判断语句的嵌套用法&#xff1a;...

【Django】配置文件 settings.py

【Django】配置文件 settings.py 和Flask框架不同&#xff0c;Django框架项目在创建的时会默认生成配置文件settings.py&#xff0c;在深入学习Django框架前&#xff0c;我们先简单了解settings.py文件内非注释代码&#xff0c; from pathlib import Path BASE_DIR Path(__f…...

量化交易系统开发-实时行情自动化交易-Okex K线数据

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取K线数…...

【基于轻量型架构的WEB开发】课程 12.5 数据回写 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis

12.5 数据回写 12.5.1 普通字符串的回写 接下来通过HttpServletResponse输出数据的案例&#xff0c;演示普通字符串的回写&#xff0c;案例具体实现步骤如下。 1 创建一个数据回写类DataController&#xff0c;在DataController类中定义 showDataByResponse()方法&#xff…...

apache-seata-2.1.0 AT模式使用篇(配置简单)

最近在研究seata的AT模式&#xff0c;先在本地搭建了一个演示demo&#xff0c;看看seata是如何使用的。在网上搜的demo&#xff0c;配置相对来说都比较多。我最终搭建的版本&#xff0c;配置较少&#xff0c;所以写篇文章分享下&#xff0c;希望能帮到对seata感兴趣的小伙伴。先…...

(金蝶云星空)客户端追踪SQL

快捷键 ShitfCtryAltM 点击开始、最后操作功能、然后查看报告 SQL报告...

OAK相机:纯视觉SLAM在夜晚的应用

哈喽&#xff0c;OAK的朋友们&#xff0c;大家好啊&#xff0c;今天这个视频主要想分享一下袁博士团队用我们的OAK相机产出的新成果 在去年过山车SLAM的演示中&#xff0c;袁博士团队就展示了纯视觉SLAM在完全黑暗的环境中的极高鲁棒性。 现在袁博士团队进一步挖掘了纯视觉的潜…...

发送方确认

在使用RabbitMQ的时候&#xff0c;可以通过消息持久化来解决因为服务器的异常而导致的消息就是&#xff0c;但是还有一个问题&#xff0c;当消息的生产者将消息发送出去之后&#xff0c;消息到底有没有正确地到达服务器呢&#xff1f;如果消息在到达服务器之前已经丢失&#xf…...

如何使用HighBuilder前端开发神器

一&#xff0c;前言 前端开发是网页和应用程序设计与开发中的一个重要分支&#xff0c;直接涉及用户界面的构建和用户与网页的交互。前端是用户在浏览器中看到的部分&#xff0c;负责为用户提供良好的体验。 二&#xff0c;前段介绍 1. 前端的组成 前端开发主要由三个核心技…...

发现了NitroShare的一个bug

NitroShare 是一个跨平台的局域网开源网络文件传输应用程序&#xff0c;它利用广播发现机制在本地网络中找到其他安装了 NitroShare 的设备&#xff0c;从而实现这些设备之间的文件和文件夹发送。 NitroShare 支持 Windows、macOS 和 Linux 操作系统。 NitroShare允许我们为…...

如何关闭 Ubuntu22.04 LTS 的更新提醒

引言 众所周知&#xff0c;Ubuntu 的软件更新和版本更新提醒是又多又烦&#xff0c;如果不小心更新到了最新的 Ubuntu 还可能面临各种各样的问题&#xff0c;这里提供一个解决方法 步骤 首先按照下面步骤打开 Software & Updates 然后按照下面步骤依次点击 最后关闭即可…...

美术资源规范

很多项目都没有重视资源规范&#xff0c;而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的&#xff0c;资源规范才是高效运行的前提。 在有的项目中&#xff0c;一个人物模型几万个面、一个建筑模型就几十万个面&#xff0c;贴图也不规范&#xff0c;1024、2048…...

UE5.4 PCG 获取地形Layer

使用AttributeFilter&#xff1a;属性过滤器 节点 设置地形Layer名称和权重 效果&#xff1a;...

用 cURL 控制 OpenSIPS3.4

opensips-cli -x mi reload_routes&#xff0c;重读脚本路由opensips-cli -x mi ds_list&#xff0c;就是 dispatcher list 的缩写&#xff0c;简单明了opensips-cli -x mi ds_reload&#xff0c;修改 OpenSIPS 数据库的 dispatcher 表之后&#xff0c;用此命令读到内存opensip…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...