Commit 3c15686c by liyinqiao

Fix the mistakes in manual and minor errors.

1. Fix the mistakes in manual.
2. Fix the minor errors in Stack and LogSoftmax functions.
parent 0c396646
......@@ -1112,7 +1112,7 @@ NiuTensor/tensor/test/TScaleAndShift.cpp
### 数据移动(movement)
此部分主要是介绍有关数据拷贝函数。
此部分主要是介绍有关数据拷贝的相关函数。
#### CopyIndexed
......@@ -1145,7 +1145,7 @@ Parameters:
CopyIndexed示例代码如下,其中s为输入的待操作张量,t输出结果张量,在指定维度上按起始位置索引拷贝一个元素到目标张量:
```cpp
/* call CopyIndexed function */
t = CopyIndexed(*s, dim, srcIndex, indexSize, tgtIndex, copyNum);
t = CopyIndexed(*s, dim, srcIndex, indexSize, tgtIndex, 2);
```
有关CopyIndexed的详细代码示例见:
......@@ -1174,7 +1174,7 @@ XTensor CopyValues(const XTensor &s, XStream * stream = NULL)
Parameters:
* s(XTensor&) - 输入张量
* t(XTensor&,optional) - 输出张量
* t(XTensor&) - 输出张量
* stream(XStream*) - 多线程流,默认为NULL
......@@ -1286,8 +1286,8 @@ $$
$$
$$
\left(\begin{matrix}1.0 & 1.0 & 3.0 & 3.0\\4.0 & 4.0 & 6.0 & 6.0\end{matrix}\right) \rightarrow
\left(\begin{matrix}2.0\\5.0\end{matrix}\right)
\left(\begin{matrix}0.0 & 1.0 & 2.0 & 3.0\\4.0 & 5.0 & 6.0 & 7.0\end{matrix}\right) \rightarrow
\left(\begin{matrix}1.5\\5.5\end{matrix}\right)
$$
##### 张量归约取均值操作的调用
......@@ -1303,7 +1303,7 @@ ReduceMean用来获得张量中沿指定维度取得的数值均值,张量归
Parameters:
* input(XTensor&) - 输入张量
* output(XTensor&,optional) - 输出张量
* output(XTensor&) - 输出张量
* dim(int) - 沿着指定维度进行取平均值操作
##### 张量归约取均值片段示例
......@@ -1349,14 +1349,14 @@ XTensor ReduceSum(const XTensor &input, int dim, const XTensor &shift, DTYPE pow
XTensor ReduceSum(const XTensor &input, int dim, DTYPE power = (DTYPE)1.0F, bool isExp = false)
```
其中shift默认为NULL,power默认为1.0F,isExp默认为false,张量归约求和操作的参数说明如下所示:
其中power默认为1.0F,isExp默认为false,张量归约求和操作的参数说明如下所示:
Parameters:
* input(XTensor&) - 输入张量
* output(XTensor&,optional) - 输出张量
* output(XTensor&) - 输出张量
* dim(int) - 沿着指定维度进行取最大值操作
* shift(XTensor&,optional) - 输入的偏移
* shift(XTensor&) - 输入的偏移
* power(DTYPE) - 元素的幂,默认为1.0F
* isExp(bool) - 是否取指,默认为false
......@@ -1389,9 +1389,9 @@ NiuTensor提供了张量的ReduceSumAll操作,调用方法为:
```cpp
XTensor ReduceSumAll(const XTensor & source)
DTYPE ReduceSumAll(const XTensor & source)
DTYPE ReduceSumAllValue(const XTensor & source)
```
ReduceSumAll用来计算张量的总和,张量归约取方差操作的参数说明如下所示:
ReduceSumAll以及ReduceSumAllValue用来计算张量的总和,二者的差别在于计算结果存放方式为XTensor所表示的标量还是DTYPE类型的数值,张量归约取方差操作的参数说明如下所示:
Parameters:
......@@ -1401,8 +1401,9 @@ Parameters:
调用ReduceSumAll进行张量归约求总和操作的示例代码如下所示:
```cpp
/* call reduce sum squared function */
t = ReduceSumSquared(*s, 0, *shift);
/* call reduce sum all function */
t = ReduceSumAll(*s);
tValue = ReduceSumAllValue(*s);
```
有关张量归约求总和的详细代码示例见:
......@@ -1432,7 +1433,7 @@ ReduceSumSquared用来计算张量的沿着某一维度元素的方差,张量
Parameters:
* input(XTensor&) - 输入张量
* output(XTensor&,optional) - 输出张量
* output(XTensor&) - 输出张量
* dim(int) - 沿着指定维度进行取平均值操作
* shift(XTensor&) - 输入的偏移
......@@ -1455,7 +1456,7 @@ NiuTensor/tensor/test/TReduceSumSquared.cpp
$$
\left(\begin{matrix}0.0 & 1.0 & 2.0 & 3.0\\4.0 & 5.0 & 6.0 & 7.0\end{matrix}\right) \rightarrow
\left(\begin{matrix}8.0 & 4.0 & 4.0 & 4.0\end{matrix}\right)
\left(\begin{matrix}8.0 & 8.0 & 8.0 & 8.0\end{matrix}\right)
$$
##### 张量归约取方差操作的调用
......@@ -1471,7 +1472,7 @@ ReduceVariance用来计算张量的沿着某一维度元素的方差,张量归
Parameters:
* input(XTensor&) - 输入张量
* output(XTensor&,optional) - 输出张量
* output(XTensor&) - 输出张量
* dim(int) - 沿着指定维度进行取标准差操作
* mean(XTensor&) - 均值
......@@ -1488,13 +1489,13 @@ NiuTensor/tensor/test/TReduceVariance.cpp
### 形状转换(shape)
此部分主要包括关于形状改变的函数,比如:split、merge、reshape等。
此部分主要包括关于形状改变的函数,比如:级联(Concatenate)、合并(Merge)、分割(Split)等。
#### 级联(Concatenate)
##### 什么是张量的级联操作?
张量间的级联操作是沿着张量的某一维度,将一系列张量或是一个列表中的所有张量连接在一起组成一个更大的张量,将维度分别为$2 \times 1$和$2 \times 2$的两个张量进行级联过程如下所示:
张量间的级联操作是沿着张量的某一维度,将若干张量连接在一起组成一个更大的张量的操作,将维度分别为$2 \times 1$和$2 \times 2$的两个张量沿维度1进行级联过程如下所示:
$$
Concatenate \left[ \left(\begin{matrix}0.0\\1.0\end{matrix}\right) ,
......@@ -1549,7 +1550,7 @@ NiuTensor/tensor/test/TConcatenate.cpp
##### 什么是张量的IsSameShaped操作?
IsSameShaped操作用于判断个矩阵大小和类型是否一致。
IsSameShaped操作用于判断个矩阵大小和类型是否一致。
##### 张量IsSameShaped操作的调用
......@@ -1576,7 +1577,7 @@ t = IsSameShaped(*s1, *s2);
##### 什么是张量的合并操作?
张量间的合并操作与级联有些类似,是沿着张量的某一维度,可以将一个张量合并为另一个维度不同的张量,也可以将一个列表中的所有张量合并在一起组成一个更大的张量。
张量间的合并操作是沿着张量的某一维度,可以将一个张量合并为另一个维度不同的张量,也可以将一个列表中的所有张量合并在一起组成一个更大的张量。
在第一种情况下将维度为$2 \times 2 \times 3$的张量在维度1进行合并,进行合并的维度为0,得到维度为$4 \times 3$的张量的过程如下所示:
......@@ -1602,31 +1603,32 @@ $$
NiuTensor提供了张量的合并操作,调用方法为:
在第一种调用方法中是源张量中的某一维度进行Merge操作,Merge结果为张量t,whereToMerge为指定进行Merge操作的维度,leadingDim为指定将哪一维度Merge,例如:(N/2, 2, M) -> (N, M),参数说明如下表所示:
在第一种调用方法中是沿源张量中的某一维度进行Merge操作,Merge结果为张量t,whereToMerge为指定进行Merge操作的维度,leadingDim为指定将哪一维度Merge,例如:(N/2, 2, M) -> (N, M),参数说明如下表所示:
```cpp
void Merge(const XTensor &s, XTensor &t, int whereToMerge, int leadingDim = -1)
XTensor Merge(const XTensor &s, int whereToMerge, int leadingDim = -1)
XTensor Merge(const XTensor &smallA, const XTensor &smallB, int whereToMerge)
```
Parameters:
* s(smallA)(XTensor&) - 输入张量(1)
* smallB(XTensor&) - 输入张量2
* s(XTensor&) - 输入张量
* t(XTensor&) - 输出张量
* whereToMerge(int) - 沿着指定维度进行Merge操作
* leadingDim(int) - 把指定维度进行Merge操作,默认为-1
在第二种调用方法中是将所操作张量存入列表smalls中,操作结果为张量t,whereToMerge为指定进行Merge操作的维度,例如:2 * (N/2, M) -> (N, M),参数说明如下表所示:
在第二种调用方法中是将若干彼此独立的张量合并到一起,操作结果为张量t,whereToMerge为指定进行Merge操作的维度,例如:2 * (N/2, M) -> (N, M),参数说明如下表所示:
```cpp
void Merge(const TensorList &smalls, XTensor &t, int whereToMerge)
XTensor Merge(const TensorList &smalls, int whereToMerge)
XTensor Merge(const XTensor &smallA, const XTensor &smallB, int whereToMerge)
```
Parameters:
* smalls(TensorList&) - 存放进行合并张量的列表
* smallA(XTensor&) - 输入张量1
* smallB(XTensor&) - 输入张量2
* t(XTensor&) - 输出张量
* whereToMerge(int) - 沿着指定维度进行Merge操作
......@@ -1670,9 +1672,16 @@ Parameters:
* s(XTensor&) - 输入张量
* t(XTensor&) - 输出张量
* order(int) - 张量的阶数
* dimsize(int) - 维度大小
* dimsize(int*) - 维度大小
##### 张量切分片段示例
##### 张量变形片段示例
上述第一种张量变形片段示例如下所示,s为原始张量,t为结果张量,2表示生成的张量t是一个二维张量,dims表示目标张量中每一维的大小:
```cpp
/* call reshape function */
t = Reshape(*s, 2, dims);
```
#### 切分(Split)
......@@ -1741,7 +1750,7 @@ t = Split(*s, 0, 2);
```cpp
/* call split function */
Split(*s, tList, 1, 2);
Split(*s, *tList, 1, 2);
```
有关张量切分的详细代码示例见:
......@@ -1821,14 +1830,12 @@ NiuTensor提供了张量的Stack操作,调用方法及参数说明如下所示
```cpp
void Stack(const TensorList &smalls, XTensor &t, int dim)
XTensor Stack(const TensorList &list, int leadingDim)
XTensor Stack(const TensorList &smalls, int dim)
```
Parameters:
* smalls(TensorList&) - 输入张量
* list(TensorList&) - 输入张量
* t(XTensor&) - 输出张量
* leadingDim(int) - 沿着指定维度进行操作
* dim(int) - 沿着指定维度进行操作
......@@ -1838,13 +1845,9 @@ Stack示例代码如下,其中sList为输入的待操作张量列表,t代表
```cpp
/* call Stack function */
t = Stack(*sList);
t = Stack(*sList, 0);
```
有关张量Stack的详细代码示例见:
NiuTensor/tensor/test/TStack.cpp
#### 张量维度转换(Transpose)
##### 什么是张量维度转换?
......@@ -1871,12 +1874,11 @@ Parameters:
##### Transpose片段示例
Transpose示例代码如下,其中s为输入的待操作张量,t1、t2代表输出结果张量,以下两行分别表示在维度1和维度2上插入的维度大小为2
Transpose示例代码如下,其中s为输入的待操作张量,t代表输出结果张量,其示在将张量s中维度0和维度1的顺序进行调换
```cpp
/* call Transpose function */
t1 = Transpose(*s, 1, 2);
t2 = Transpose(*s, 2, 2);
t = Transpose(*s, 0, 1);
```
有关张量Transpose的详细代码示例见:
......@@ -1978,7 +1980,7 @@ Sort示例代码如下所示,a为进行操作的张量,index为结果张量
```cpp
/* call Sort function */
Sort(*a, b, *index, 0)
Sort(*a, *b, *index, 0)
```
有关Sort的详细代码示例见:
......@@ -2024,9 +2026,7 @@ TopK示例代码如下,s为输入的待操作张量,t输出结果张量,in
```cpp
/* call TopK function */
int dim = 0;
int k = inputDimSize[dim];
TopK(s, t, index, dim, k);
TopK(s, t, index, 0, 2);
```
有关TopK的详细代码示例见:
......@@ -2035,13 +2035,13 @@ NiuTensor/tensor/test/TTopK.cpp
### 激活函数(function)
此部分主要介绍一些激活函数和损失函数
此部分主要介绍一些激活函数(如HardTanH、Rectify等)和损失函数(LogSoftmax等)
#### Dropout
##### 什么是Dropout?
Dropout是一种在深度学习环境中应用的正规化手段,目的是在每次进行神经网络循环时随机对一些单元进行隐藏。
Dropout是一种在深度学习环境中应用的正规化手段,目的是在每次进行神经网络循环时随机对一些单元进行隐藏,从而达到防治过拟合的目的
##### Dropout调用
......@@ -2058,6 +2058,7 @@ Parameters:
* x(XTensor&) - 输入张量
* dropProb(DTYPE) - 随机将单元隐藏的概率
* leadingDim(int) - 沿着指定维度进行操作,默认为-1
* leadingDim2(int) - 沿着另一个指定维度进行操作,默认为-1
##### Dropout片段示例
......@@ -2065,7 +2066,7 @@ Dropout示例代码如下:
```cpp
/* call Dropout function */
y = Dropout(*x, dropProb);
y = Dropout(*x, 0.2F);
```
有关Dropout的详细代码示例见:
......
......@@ -31,7 +31,7 @@ namespace nts { // namespace nts(NiuTrans.Tensor)
void _Stack(const TensorList * smalls, XTensor * t, int dim);
/* stack small tensors into a big tensor along with a dimension (return an XTensor structure) */
XTensor Stack(const TensorList &list, int dim);
XTensor Stack(const TensorList &smalls, int dim);
/* stack small tensors into a big tensor along with a dimension */
void Stack(const TensorList &smalls, XTensor &t, int dim);
......
......@@ -36,9 +36,6 @@ XTensor LogSoftmax(const XTensor &x, int leadDim);
/* log scale softmax y = log(e^x / \sum_{i} e^{x_i}) (with both argument of x and y) */
void LogSoftmax(const XTensor &x, XTensor &y, int leadDim);
/* log scale softmax y = log(e^x / \sum_{i} e^{x_i}) (with both argument of x and y) */
void LogSoftmax(const XTensor &x, XTensor &y, int leadDim);
/* de/dx */
void _LogSoftmaxBackward(XTensor * gold, XTensor * y, XTensor * x,
XTensor * dedy, XTensor * dedx,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论