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

C++builder中的人工智能(16):神经网络中的SoftPlus激活函数

现在我们继续探索一下SoftPlus激活函数在人工神经网络(ANN)中的应用。了解SoftPlus激活函数的工作原理,将有助于您在使用C++ IDE构建C++应用程序时更加得心应手。

目录

  • 神经网络中的激活函数是什么?
  • 能在C++中创建激活函数吗?
  • SoftPlus激活函数是什么?
  • 如何在C++中编写SoftPlus激活函数?
  • 一个简单的使用SoftPlus激活函数的C++ ANN示例

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

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

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

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

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

SoftPlus激活函数是什么?

SoftPlus激活函数由Dugas等人在2001年开发和发布。简单来说,SoftPlus函数可以写成如下,

f(x) = log( 1+exp(x) );

根据他们的论文(https://papers.nips.cc/paper/2000/file/44968aece94f667e4095002d140b5896-Paper.pdf),他们提出的函数类别的基本思想是,他们用Softplus或sigmoid函数替换了求和的sigmoid,每个维度上都有一个(使用Softplus在凸维度上,sigmoid在其他维度上)。他们引入了新类别的函数,类似于多层神经网络具有这些属性的概念。

如何在C++中编写SoftPlus激活函数?

在C++中,SoftPlus激活函数可以编写如下:

double phi(double sum) {
    return(std::log(1 + std::exp(sum))); // SoftPlus函数
}

有没有一个简单的C++ ANN示例使用SoftPlus激活函数?

以下是一个简单的C++ ANN示例,使用SoftPlus激活函数:

#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 phi(double sum) {
        return(std::log(1 + std::exp(sum))); // SoftPlus函数
    }
};

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].phi(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.3;
    ne[1].w[2] = 0.2;

    // 激发我们的人工神经元活动,输出将是
    fire(2);
    printf("%10.6f\n", ne[2].a);
    getchar();
    return 0;
}

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


http://www.kler.cn/a/386524.html

相关文章:

  • Vue3入门介绍及快速上手
  • goframe开发一个企业网站 rabbitmq队例15
  • 2.操作系统常见面试问题2
  • 电脑提示xinput1_3.dll丢失怎么办?游戏DLL修复方法详解
  • 满200减30,怎么样用python计算凑单正好满足要求呢?
  • Spring Boot 的核心注解
  • 网络安全应急响应(归纳)
  • AscendC从入门到精通系列(一)初步感知AscendC
  • 「Mac玩转仓颉内测版3」入门篇3 - Cangjie的基本语法与结构
  • rediss数据结构及其底层实现
  • C++代码优化(三): 决不要重新定义继承而来的缺省参数值
  • Android中桌面小部件的开发流程及常见问题和解决方案
  • Chrome与傲游在隐私保护上的表现
  • linux centos新机器容器中创建虚拟环境
  • jmeter常用配置元件介绍总结之安装插件
  • 重塑商业未来:探索SAAS服务的无限可能
  • 基于STM32的自动化植物浇灌系统教学
  • 谷粒商城-高级篇-认证服务
  • 云计算在esxi 主机上创建 4g磁盘,同时在此磁盘上部署linux
  • .NET使用TDengine时序数据库和SqlSugar操作TDengine
  • 如何在 Django 中生成 Excel 文件并上传至 FastDFS
  • Python基础学习-02转义、输入、函数
  • C语言--结构体的大小与内存对齐,位段详解
  • Go 指针的使用
  • C#中lock(变量)与lock(this)的区别
  • 鸿蒙应用开发:断点下载