文章目录
- Ascend C算子开发(入门)—— 什么是算子?
- 一、从人工智能到算子
- 1.1 人工智能的四个层面
- 1.2 人工智能之三大流派
- 1.3 算子、神经元、神经网络
- 二、算子的基本概念
- 2.1 算子在数学中的定义:
- 2.2 算子基本概念 —— 总览
- 2.3 算子基本概念——Tensor
- 2.4 算子基本概念——Format
- 2.5 算子基本概念——Axis
- 三、算子开发的问题与挑战
Ascend C算子开发(入门)—— 什么是算子?
一、从人工智能到算子
1.1 人工智能的四个层面
- 计算智能 => 感知智能 => 认知智能 => 行动智能
1.2 人工智能之三大流派
在人工智能的研究过程中,诞生了很多不同的流派,归纳起来,可分为符号主义、行动主义以及连接主义三大流派。
-
符号主义:指的是万事万物都可以用符号勇表示,并且一切都可以基于符号进行一些列的计算,并用一个系统表示出来。
-
行动主义:以行为动作的感知与控制研究为代表,采用进化的方式模拟人类行为活动中表现的智能(例如强化学习、遗传算法等)。
-
连接主义:以人工神经网络研究为代表,核心方法是构建人工神经网络及人工神经网络间连接机制的学习算法,实现对大脑功能的模拟。(仿生)
1.3 算子、神经元、神经网络
这些概念是基于连接主义的核心思想:认知功能和智能行为是由大量简单单元(类似于神经元)的连接和相互作用所产生的。
所拓展的。
- 神经元
在神经网络中,神经元被视为简单的神经单元,每个单元接受输入并且产生输出。人工神经元模拟了生物神经元的基本功能,如输入加权求和和激活。
- 算子
算子是用于计算神经元输入与输出之间关系的工具,它们执行如加权求和、激活函数、卷积等操作,这些操作共同作用,实现信息在神经元之间的传播和转换。
- 神经网络
它由大量相互连接的神经元组成,这些神经元的连接方式和强度(即权重)决定了网络的整体行为和功能。
在神经网络中,边表示数据的流向,而节点表示数据的处理,数据的处理可能是数学公式、也可能是纯粹的计算机处理。我们称每一个数据处理或者计算的节点成为算子。
二、算子的基本概念
2.1 算子在数学中的定义:
一个函数空间到函数空间上的映射O:X->X
2.2 算子基本概念 —— 总览
2.3 算子基本概念——Tensor
对于算子的形状(shape),小括号中有多少个数字,就代表是多少维的张量;小括号中的数字表示该维度下包含的元素数量。
3
表示每个像素点由3种颜色表示。
2.4 算子基本概念——Format
内存中并不存在张量的维度信息,数据在内存中只能线性存储。此处以卷积神经网络为例,通常分为四个维度进行存储:
- N:Batch数量,例如图像的数目。
- H:特征图高度,即垂直高度方向的像素个数。
- W:特征图宽度,即水平宽度方向的像素个数。
- C:特征图通道,例如彩色RGB图像的Channels为3.
不同深度学习框架会按照不同的顺序存储特征图数据。
数据的遍历方式是从低维向高维进行遍历,
如果数据的遍历是以NCHW的顺序进行遍历,那么遍历顺序应为W轴->H轴->C轴->N轴。
先遍历W轴,再遍历H轴:
R00,R01,R02,R10,R11,R12,R20,R21,R22
再遍历下一个Channel:
G00,G01,G02,G10,G11,G12,G20,G21,G22
把所有Channel遍历完结束。
2.5 算子基本概念——Axis
三、算子开发的问题与挑战
开发者在实现算子的时候需考虑如下因素:
- 功能逻辑如何实现
- 如何适配对应硬件
- 如何处理不同大小的输入
- 如何处理不同类型的输入
- 如何保证算子运行的性能
- 如何优化算子的数学公式