通常计算
编写深度学习系统,最大系统仍然是编程语言
层级 : ops-layer-module-network
编写时,各级极度耦合,存在调用情况的占比,如network级存在ops,大量的module;但ops绝不会出现高层函数调用
原子算子(ops)皆存在翻转模式
- 只是没有设计出来
数学算子(ops.math):多元算子
其实多元算子的flip,就仅仅是identity?
乘法是因为我们只知道无状态的,前向计算的算子它的计算方法,忽视了输入端是有状态的
张量算子(ops.tensor):【逆】张量的轴,维发生,扩张,收缩
编程算子(ops.python):【反转计算】if max 等等具有布尔运算参与的算子(可翻转形式需要储存大量前激活)
大多数数学算子可以被逻辑算子表示(数学可导更可靠)
- 数学方程可以被转化成编程算法
1.数学编程复合,如relu
2.张量编程复合,轴,维发生重排
3.数学张量复合,轴,维发生,扩张,收缩【jacobian】
元算子有属性:(bool : saved_for_backward【是否保存多元输入提供给反向计算】),(bool : seq_keep【对于计算图优化,节点先后无关(如copy,轴收缩扩张)】)
张量算子
(N)->(N,M)
(N,M)->(M,N)
数学算子
(N,M)-*W1->(N,M)
最简单的复合数学算子:数学计算图
a1