[网络架构]Self-organized operational neural networks (SelfONN)

Self-organized operational neural networks (SelfONN

  • 背景
  • CNN
  • ONN
  • SelfONN
  • CNN, ONN, SelfONN对比
  • SelfONN与CNN的关系
  • 总结
  • 相关资源
  • References


背景

本节要分享的是SelfONN, SelfONN可以看作是ONN的优化/升级, 而ONN可以看作是更一般化的CNN, 克服了CNN的一些问题。

这里先从CNN说起,

CNN

在这里插入图片描述
上图展示了对多通道输入的feature map进行卷积的过程, 卷积核有m个,每个卷积核实际上相当于FNN中的一个神经元, 其通道数=输入通道数, 每个卷积核对应的输出为一张feature map, 将m个卷积核的输出聚集起来即为通道数为m的feature map。

CNN存在的主要问题,
(1)不管是1d还是2d, 单个卷积核本质上还是一个线性操作, 需要结合非线性激活才能赋予其非线性能力;
(2)网络同质化严重,
(3)网络过于复杂, 参数量太大, 不利于部署 (CNN实际部署需要涉及轻量级的网络)。

ONN

ONN通过引入运算符集库大大增加了其非线性能力, 然而搜索最有的运算符集合非常耗时,并且运算符集库的选择很大程度上决定了性能上限。

SelfONN

SelfONN是对ONN的升级和改进,其核心思想是基于泰勒展开对函数进行近似, 这样一来就不需要预先定义运算符集库并且也避免了搜索最佳运算符集合的代价。

对于任何一个网络层,本质上是在学习一个函数f, 其泰勒展开如下:
在这里插入图片描述
其Q阶的泰勒展开作为f的近似如下,
在这里插入图片描述

上述近似只有在a的领域内采有效, 即在 [ α − λ , α + λ ] [\alpha -\lambda, \alpha+\lambda] [αλ,α+λ]内有效, 特别的,当a=0,并且采用tanh激活函数时,该区间为[-1, 1]. 这意味着输入的范围应该位于该区间内。

下面介绍改Q阶近似如何与SelfONN layer关联起来

如上公式所示,该近似需要用到x的1~Q阶指数变换, 将其作为Operator sets, 然后将每一项前与梯度有关的系数作为网络科学系的权重,
这样一来,第l层的第k个neuro的操作可以用如下公式表示,
在这里插入图片描述
其中 W l k W^{k}_{l} Wlk的尺寸为[M, N, Q],
该操作关于输入和权重的梯度计算如下,
在这里插入图片描述

CNN, ONN, SelfONN对比

对于单通道的输入, 这三个操作的过程如下,
在这里插入图片描述

SelfONN与CNN的关系

可以看到Q实际上决定近似程度, 特别的, 当Q=1并且最终的聚合函数 ϕ = s u m \phi=sum ϕ=sum时, SelfONN layer完全退化为了CNN, 从这个角度来说, SelfONN可以看作是CNN的更加General的形式。

总结

SelfONN的简介到此为止, 对其相关理论以及在各个领域/任务感兴趣的可以查找相关论文, 主要都是MONCEF GABBOUJ团队写的。

相关资源

代码实现方面,
ONN的实现除了自行实现以外, 可以基于FastONN库[4], 例子如下,
定义一个三层的ONN model,
在这里插入图片描述训练部分代码如下,
在这里插入图片描述
SelfONN的代码实现起来也很简单, 只需增加一个数据预处理来构造X的Q阶变换, 然后调用Torch官方的卷积算子即可. 关于其实现的例子参考另一篇博客https://blog.csdn.net/QKK612501/article/details/131975879?spm=1001.2014.3001.5502.

References

  1. Self-organized operational neural networks for severe image
    restoration problems, Neural Networks, 2021;
  2. Self-organized Operational Neural Networks with Generative Neurons, Neural Networks, 2021;
  3. Operational Neural Networks, ArXIv, 2019.
    4.FastONN – Python based open-source GPU implementation for Operational Neural Networks

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

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

相关文章

Azure文件共享

什么是Azure文件共享 Azure文件共享是一种在云中存储和访问文件的服务。它允许用户在不同的计算机、虚拟机和服务之间共享数据,并在应用程序中进行访问、修改和管理。 Azure文件共享可以用于各种用途,例如: 共享文件资源给多个虚拟机或服务…

laravel aws s3

由于公司有境外项目,服务器、文件存储都是用的亚马逊,真真地是没有用过,在此记录一下自己的s3研究结果 Laravel - aws - s3 第一步创建用户,生成秘钥: 第二步创建存储桶: 1、创建存储桶时,以下…

人工智能如何颠覆和改变信息安全格局

当谈及网络信息安全领域,人工智能(AI)正扮演着关键的角色。其作用是分析庞大的风险数据,以及企业信息系统中不同威胁之间的关联,从而识别出全新类型的攻击方式。这一过程的成果为各类网络安全团队提供了重要情报&#…

shell学习

shell是什么? shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入,解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给用户看到结果。 什么是shell脚本…

深入解析:树结构及其应用

文章目录 学习树的基本概念理解树的遍历方式学习堆和优先队列的应用案例分析:使用堆进行Top K元素的查找结论 🎉欢迎来到数据结构学习专栏~深入解析:树结构及其应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈…

vue3 基础知识 ( webpack 基础知识)05

你好 文章目录 一、组件二、如何支持SFC三、webpack 打包工具四、webpack 依赖图五、webpack 代码分包 一、组件 使用组件中我们可以获得非常多的特性: 代码的高亮;ES6、CommonJS的模块化能力;组件作用域的CSS;可以使用预处理器来…

leetcode485. 最大连续 1 的个数

思路&#xff1a;【双指针】 left左边界&#xff0c;right往右跑遇到0&#xff0c;则计算该长度。并更新cnt&#xff08;最大连续1个数&#xff09;。 class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int left 0, right 0;int cnt 0;…

mysql 、sql server 游标 cursor

游标 声明的位置 游标必须在声明处理程序之前被声明&#xff0c;并且变量和条件还必须在声明游标或处理程序之前被声明 游标的使用步骤 声明游标打开游标使用游标关闭游标 &#xff08;sql server 关闭游标和释放游标&#xff09; sql server 游标 declare my_cursor curs…

谈一谈浏览器与Node.js中的JavaScript事件循环,宏任务与微任务机制

JavaScript中的异步代码 JavaScript是一个单线程非阻塞的脚本语言。这代表代码是执行在一个主线程上面的。但是JavaScript中有很多耗时的异步操作&#xff0c;例如AJAX&#xff0c;setTimeout等等&#xff1b;也有很多事件&#xff0c;例如用户触发的点击事件&#xff0c;鼠标…

【Linux】权限问题

Linux权限 一、Linux 权限的概念二、Linux 权限管理1. 文件访问者的分类2. 文件类型和访问权限&#xff08;事物属性&#xff09;3. 文件访问权限的相关设置方法 三、默认权限1. 对文件和目录进行操作需要的权限2. 文件和目录的默认权限3. 粘滞位 一、Linux 权限的概念 Linux …

Maven解析

目录 Maven的概念 Pom 项目坐标 仓库 Maven环境搭建 安装jdk 配置maven 配置本地仓库地址 配置阿里云 maven 镜像仓库&#xff0c;下载速度更快 在idea中配置maven ​编辑 pom中名词解释 Maven命令 Maven的概念 Maven 是 Apache 软件基金会的一个开源项目,是一个…

prompt工程(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 我准备想办法把这些东西整合到我的ScholarEase项目里。到时候按照分类、按照prompt生成方法列一堆选项&#xff0c;用户自己生成prompt后可以选择在ScholarEase里面聊天&#xff0c;也可以复制到别的地方&#xff08;比如ChatGPT网页版之类的&a…

数组分割(2023省蓝桥杯)n种讨论 JAVA

目录 1、题目描述&#xff1a;2、前言&#xff1a;3、动态规划&#xff08;bug)&#xff1a;3、递归 剪枝&#xff08;超时&#xff09;&#xff1a;4、数学&#xff08;正解&#xff09;&#xff1a; 1、题目描述&#xff1a; 小蓝有一个长度为 N 的数组 A [A0, A1,…, AN−…

Python 密码破解指南:10~14

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 十、加…

docker 04(docker 应用部署)

一、部署Mysql 需求: 在Docker容器中部署MySQL&#xff0c;并通过外部mysql客户端操作MySQLServer。 二、部署tomcat 三、部署nginx 四、部署redis

数据结构(2)

冒泡排序&#xff1a; 1.比较相邻的两个元素。如果前一个元素比后一个元素大&#xff0c;则交换两者位置。 2.对每一对相邻元素做相同工作&#xff0c;从第一对元素到最后一对元素&#xff0c;最后的一个元素就是最大的元素。 for(int ia.length-1;i>0;i--){for (int j 0…

c语言练习题28:杨氏矩阵

杨氏矩阵 从左到右增加 从上到下增加 思路&#xff1a; 代码&#xff1a; #include<stdio.h> int findNum(int(*arr)[3], int x, int y, int k) {int i 0;int j y - 1;while (i<x&&j>0) {if (arr[i][j] > k) {j--;}else if (arr[i][j] < k) {i;…

Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

SpringBootWeb案例 Part 2

目录 3. 员工管理 3.1 分页查询 3.1.1 基础分页 3.1.1.1 需求分析 3.1.1.2 接口文档 3.1.1.3 思路分析 3.1.1.4 功能开发 PageBean 3.1.1.5 功能测试 3.1.1.6 前后端联调 3.1.2 分页插件{分页查询-PageHelper插件} 3.1.2.1 介绍 官网&#xff1a; 3.1.2.2 代码实…

04-Numpy基础-利用数组进行数据处理

NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式&#xff08;否则需要编 写循环&#xff09;。用数组表达式代替循环的做法&#xff0c;通常被称为矢量化。一般来说&#xff0c;矢量化 数组运算要比等价的纯Python方式快上一两个数量级&#xff08;甚至更多&…