功能: 创建一个网络层

格式: NetCreateLayer(fun, n)

fun : 字符串存储指定类型的网络层
n   : 当前网络层节点大小

说明: 
1、fun不同类型对应不同网络结构，具体含义如下（其中x,x1,x2表示其它输入层，a,b,W表示变量, y表示当前层, p起始表示位置索引, i表示元素索引）

2、如果函数说明包含a或W, 则需要使用函数{NetLayerSetVar<矩阵运算\NetLayerSetVar>}对当前层进行变量设置

3、如果函数说明包含x或x1, 则需要使用函数{NetLayerSetInput1<矩阵运算\NetLayerSetInput1>}对当前层进行(第1)输入层设置设置

4、如果函数说明包含x2, 则需要使用函数{NetLayerSetInput2<矩阵运算\NetLayerSetInput2>}对当前层进行第2输入层设置设置

5、如果函数说明包含p, 则需要使用函数{NetLayerSetPos<矩阵运算\NetLayerSetPos>}对当前层进行位置设置

6、为了方便卷积操作(一种降采样操作层), 本函数提供卷积层Convolution, 创建卷积层后, 需要指定对应的输入层x, 以及使用函数{NetLayerSetInputDim<矩阵运算\NetLayerSetInputDim>}对输入层x进行二维映射, 然后再设置共享权重与共享偏置即可

7、对于池化层(一种降采样操作层), 目前提供PoolMax、PoolMin、PoolMean三个函数, 建立池化层后, 同样需要使用函数{NetLayerSetInputDim<矩阵运算\NetLayerSetInputDim>}对输入层进行二维映射, 还需要使用函数{NetLayerSetWindowDim<矩阵运算\NetLayerSetWindowDim>}指定滑动窗口尺寸

8、函数如下:
下面表达式没有特别说明时，y表示大小为n的节点值对应向量,x,x1,x2为大小为n的变量,W为m×n的系数矩阵,a、b、c、d为大小为n的系数向量,下面的i=1,2,3,...,n
(1)W * x
$$
y_i = \sum_{j=1}^nW_{ij}x_j
$$

(2)(W-x)^2
$$
y_i = \sum_{j=1}^mW_{ij}x_j
$$

(3)x+a
$$
y_i = x_i + a_i
$$

(4)x-a
$$
y_i = x_i - a_i
$$

(5)a-x
$$
y_i = a_i - x_i
$$

(6)x*a
$$
y_i = a_ix_i,
$$

(7)x/a
$$
y = \dfrac{x_i}{a_i}
$$

(8)a/x
$$
y_i = \dfrac{a_i}{x_i}
$$

(9)x^a
$$
y_i = x_i^{a_i}
$$

(10)a^x
$$
y_i = a_i^{x_i}
$$

(11)a*x+b
$$
y_i = a_ix_i + b_i
$$

(12)(x-a)^2
$$
y_i = (x_i - a_i)^2
$$

(13)-x
$$
y_i= -x_i
$$

(14)x1+x2
$$
y_i = x_{1i} + x_{2i}
$$

(15)x1-x2
$$
y_i = x_{1i} - x_{2i}
$$

(16)x1*x2
$$
y_i = x_{1i}x_{2i}
$$

(17)x1/x2
$$
y_i = \dfrac{x_{1i}}{x_{2i}}
$$

(18)x1^x2
$$
y_ = x_{1i}^{x_{2i}}
$$

(19)Max(x1,x2)
$$
y_i = \begin{cases}
x_{1i} &,x_{1i} > x_{2i}
\\
x_{2i} &,x_{1i} \leq x_{2i}
\end{cases}
$$

(20)Min(x1,x2)
$$
y_i = \begin{cases}
x_{1i} &,x_{1i} < x_{2i}
\\
x_{2i} &,x_{1i} \geq x_{2i}
\end{cases}
$$

(21)Append(x1, x2)
$$
y = [x_1, x_2] , 这里不要去x_1与x_2的大小一致
$$

(22)MixProduct2(x1, x2)
$$
y =[x_{11}x_{21},x_{11}x_{22},x_{11}x_{23},...,x_{1n}x_{21},x_{1n}x_{22},x_{1n}x_{23},...,x_{11},x_{12},...,x_{21},x_{22},...]
$$

(23)Abs
返回值范围[0, inf)
$$y_i = |x_i|$$

(24)ACos
返回值范围[0, 3.15)
$$y_i = \arccos(x_i)$$

(25)AntiSym
返回值范围[-1, 1]
$$y_i = \dfrac{16x_i}{64 + x_i^2}$$

(26)ASin
返回值范围(-1.58, 1.58)
$$y_i = \arcsin(x_i)$$

(27)ATan
返回值范围(-1.58, 1.58)
$$y_i = \arctan(x_i)$$

(28)Cos
返回值范围[-1, 1]
$$
y_i = \cos(x_i)
$$

(29)Cosh
返回值范围(-inf, inf)
$$y_i = \cosh(x_i)$$

(30)ELU
返回值范围(-inf, inf)
$$
y_i = \begin{cases}
a_i(\exp(x_i) - 1) &,x_i<0
\\
x_i&,x_i\geq 0
\end{cases}
$$

(31)Erf
返回值范围(-1, 1)
$$y_i = \mathbf{Erf}(0.168 * x_i)$$

(32)Exp
返回值范围(0, inf)
$$y_i = \exp(x_i)$$

(33)Gauss
返回值范围(0, 1]
$$y_i = \exp(-x_i^2)$$

(34)RBF1
返回值范围(0, 1]
$$
y_i = \exp(- a_i\sum_{j=1}^m(x_j - W_{ij})^2), 这里 a_i >= 0且x维度为m
$$

(35)RBF2
返回值范围(0, inf]
$$
y_i= (\sum_{j=1}^m x_jW_{ij} + a_i)^2,这里x维度为m
$$

(36)RBF3
返回值范围(0, inf]
$$y_i= \sqrt{\sum_{j=1}^m(x_j - W_{ij})^2 + a[i]}, 这里 a >= 0且x维度为m$$

(37)GELU
返回值范围(-0.18, inf)
$$
y_i = \dfrac{x_i}{2}(1 + \tanh(\sqrt{\dfrac{2}{\pi}}(x_i + 0.044715 * x_i^3)))
$$

(38)
ISRLU
返回值范围(-inf, inf)
$$
y_i = \begin{cases}
\dfrac{x_i}{\sqrt{1 + a_i^2x_i^2}} &x_i<0
\\
x_i &x_i\geq 0
\end{cases}
$$

(39)LineNorm
返回值范围[0, 1]
$$
\begin{aligned}
\alpha &= \mathbf{Min}(x)
\\
\beta &=\mathbf{Max}(x)
\\
y_i &= \dfrac{x_i - \alpha}{\beta - \alpha}
\end{aligned}
$$

(40)LiSHT
返回值范围[0, inf)
$$y_i = x_i\tanh(x_i)$$

(41)LLine
返回值范围(-0.5, inf)
$$y_i = \dfrac{x_i}{2}(1 + \dfrac{x_i}{1 + |x_i|})$$

(42)Log
返回值范围(-inf, inf)
$$y_i = \log(x_i)$$

(43)Mish
返回值范围(-0.309, inf)
$$y_i = x_i\tanh(\log(1 + \exp(x)))$$

(44)MPELU
返回值范围(-inf, inf)
$$
y_i = \begin{cases}
a_i(\exp(|b_i|x_i) - 1)&,x_i < 0
\\
x_i &,x_i \geq 0
\end{cases}
$$

(45)Poly3
返回值范围(-inf, inf)
$$y = a_i + b_ix_i + c_ix_i^2 + d_ix_i^3$$

(46)PReLu
返回值范围(-inf, inf)
$$
y_i =\begin{cases}
a_ix_i&,x_i <0
\\
x_i&,x_i\geq 0
\end{cases}
$$

(47)ReLU
返回值范围[0, inf)
$$
y_i =\begin{cases}
0&,x_i <0
\\
x_i&,x_i\geq 0
\end{cases}
$$

(48)SELU
返回值范围(-inf, inf)
$$
\begin{aligned}
\alpha &=1.67326324235437728
\\
\beta &= 1.05070098735548049
\\
y_i &=\begin{cases}
\beta\alpha(\exp(x_i) - 1)&,x_i <0
\\
return \beta x_i&,x_i\geq 0
\end{cases}
\end{aligned}
$$

(49)Sigmod
返回值范围(0, 1)
$$y_i = \dfrac{1}{1 + \exp(-x_i)}$$

(50)Sign
返回值范围[-1, 1]
$$y_i =\mathbf{Sign}(x_i)= \begin{cases}
-1&,x_i<0
0&,x_i=0
\\
1&,x_i>0
\end{cases}$$

(51)SignMap
返回值范围(-inf, inf),本函数适合二分类问题使用, 本函数输入层只能有1个节点(x维度为1). 这里设输入变量为x(建议范围在-1到1之间)
$$y = [\dfrac{1 - x}{2}, \dfrac{1 + x}{2}]$$

(52)Sin
返回值范围[-1, 1]
$$y_i = \sin(x_i)$$

(53)Sinh
返回值范围(-inf, inf)
$$y_i = \sinh(x_i)$$

(54)SLine
返回值范围(-inf, inf)
$$y_i = \mathbf{Sign}(x_i)\dfrac{x_i^2}{1 + |a_ix_i|}$$

(55)SoftMax
返回值范围(0, 1]
$$y_i = \dfrac{\exp(x_i)}{\sum_{j=1}^n\exp(x_j)}$$

(56)SoftPlus
返回值范围(0, inf)
$$y_i = \log(1 + \exp(x_i))$$

(57)SoftSign
返回值范围(-1, 1)
$$y_i = \dfrac{x_i}{1 + |x_i|}$$

(58)SQNL
返回值范围(-1, 1)
$$
y_i=\begin{cases}
1 &,x_i > a_i
\\
\dfrac{2x_i}{a_i} - \dfrac{x_i^2}{a_i^2} &,x_i >0
\\
\dfrac{2x_i}{a_i} + \dfrac{x_i^2}{a_i^2} &,x_i \geq -a_i
\\
-1&,x_i<-a_i
\end{cases}
$$

(59)SQNL2
返回值范围(-1, 1)
$$
y_i=\begin{cases}
1 &,x_i > |a_i|
\\
(2-|\dfrac{x_i}{a_i}|)|\dfrac{x_i}{a_i}|^{b_i} &,x_i >0
\\
(|\dfrac{x_i}{a_i}|-2)|\dfrac{x_i}{a_i}|^{b_i} &,x_i \geq -|a_i|
\\
-1&,x_i<-|a_i|
\end{cases}
$$

(60)Sqrt
返回值范围[0, inf)
$$y_i = \sqrt{x_i}$$

(61)SqrtNorm
返回值范围[-1, 1]
$$y_i = \dfrac{x_i}{\sqrt{\sum_{j=1}^nx_j^2}}$$

(62)SquaredNorm
返回值范围[0, 1]
$$y_i = \dfrac{x_i^2}{\sum_{j=1}^nx_j^2}$$

(63)Swish
返回值范围(-inf, inf)
$$y_i = \dfrac{x_i}{1 + \exp(- a_ix_i)}$$

(64)Tan
返回值范围(-inf, inf)
$$y_i = \tan(x_i)$$

(65)Tanh
返回值范围(-1, 1)
$$y_i = \tanh(x)$$

(66)UnitStep
返回值范围[0, 1]
$$y_i = \begin{cases}
0 &,x_i < 0
\\
1 &,x_i \geq 0
\end{cases}$$

(67)Weibull
返回值范围(-inf, inf)
$$y_i = \mathbf{Sign}(x_i)na_i(a_ix_i)^{n-1}\exp(-(a_ix_i)^n)$$

(68)XCos
返回值范围(-inf, inf)
$$y = x_i(a_i + b_i\cos(x_i))$$

(69)XSin
返回值范围(-inf, inf)
$$y = x_i(a_i + b_i\sin(x_i))$$

(70)XCos2
返回值范围(-inf, inf)
$$y = x_i(a_i + b_i\cos(x_i)^2)$$

(71)XSin2
返回值范围(-inf, inf)
$$y_i = x_i(a_i + b_i\sin(x_i)^2)$$

(72)XSin3
返回值范围(-inf, inf)
$$y_i = \begin{cases}
a_i(x_i+16) - 1 &,x_i < -16
\\
\sin(\dfrac{\pi}{2}\dfrac{x_i}{16}) &-16 \leq x_i \leq 16
\\
b_i(x_i-16) + 1 &,x_i > 16
\end{cases}
$$

(73)XSin4
返回值范围(-inf, inf)
$$y_i = \begin{cases}
-\dfrac{x_i}{16}(a_i(x_i+16) - 1) &,x_i < -16
\\
\dfrac{|x_i|}{16}\sin(\dfrac{\pi}{2}\dfrac{x_i}{16}) &-16 \leq x_i \leq 16
\\
\dfrac{x_i}{16}(b_i(x_i-16) + 1) &,x_i > 16
\end{cases}
$$

(74)XTanhExp
返回值范围(-0.353, inf)
$$y_i = x_i * \tanh(\exp(x_i))$$

(75)ZScoreNorm
$$
y_i = \dfrac{x_i - \mu}{\sigma},这里\mu表示x的均值, \sigma表示x的标准差
$$

(76)VecMask
y = x 或者 y = [x, 0] 即输入x向量维度小于当前节点时, 后续节点值将使用0填充

(77)Max
$$y = \mathbf{Max}(x)$$

(78)Copy
$$y_i = x_i$$

(79)CopyVar
$$y_i = a_i$$

(80)Sum
这里y只有1个节点
$$y = \sum_{j=1}^nx_j$$

(81)logSign
$$
\mathbf{LogSign}(x) = \begin{cases}
\ \ \log(1+x) &,x\geq 0
\\
-\log(1-x)&, x<0
\end{cases}$$

(82)expSign
$$
\mathbf{ExpSign}(x) = \begin{cases}
\exp(x - 1)&,x\geq 0
\\
-\exp(-x-1)&,x<0
\end{cases}
$$

(83)其它函数
GetPart: y[i] = x[i + p - 1];
SetPart: y[i + p - 1] = x[i];
Convolution: 卷积层, y = Convolution(x, W, b)
PoolMax: 最大值池化层, y = PoolMax(x)
PoolMin： 最小值池化层, y= PoolMin(x)
PoolMean: 均值池化层, y = PoolMean(x)
PoolMedian: 中值池化层, y = PoolMedian(x)
PoolVar: 方差池化层, y = PoolVar(x)
PoolNorm2: 2范数池化层, y = PoolNorm2(x)
PoolStochastic: 随机池化层, y = PoolStochastic(x)
Rotation3D: 3D旋转约束层, y = R * x, 其中x的节点数为3, R是一个3*3的旋转矩阵变量(为一个正交矩阵), 这里的R实际使用的是变量维度为3的量来映射旋转。


例子:
//现在有一张30*40的图片, 想用5*5的共享权重变量对其进行卷积操作,然后使用Sigmod进行作用
//30*40则可以1200的向量进行输入
//进行卷积后的图片大小为(30 - 5 + 1) * (40 - 5 + 1) = 26 * 36, 即可以936的向量进行操作
//最终可按下面表达式建立此卷积网络
//下面图片输入层为layer0, 最终网络的输出层为layer2

w = {NetLayerSetVar<矩阵运算\NetLayerSetVar>}(5, 5);
b = {NetLayerSetVar<矩阵运算\NetLayerSetVar>}(1);
layer0 = NetCreateLayer(, 1200);
layer1 = NetCreateLayer("Convolution", 936);
layer2 = NetCreateLayer("Sigmod", 936);
{NetConvLayerSetW<矩阵运算\NetConvLayerSetW>}(layer1, w);
{NetConvLayerSetb<矩阵运算\NetConvLayerSetb>}(layer1, b);
{NetLayerGetInput1<矩阵运算\NetLayerGetInput1>}(layer1, layer0);
{NetLayerSetInputDim<矩阵运算\NetLayerSetInputDim>}(layer1, 30, 40);
{NetLayerSetInput1<矩阵运算\NetLayerSetInput1>}(layer2, layer1);