Commit 0223646a by liyinqiao

Fix the mistakes in manual and fix the bug in ConvertDataType function.

1. Fix the mistakes in manual.
2. Fix the bug in the link process of ConvertDataType function.
parent 7d4ab222
...@@ -595,94 +595,6 @@ t = Multiply(*s1, *s2, 0); ...@@ -595,94 +595,6 @@ t = Multiply(*s1, *s2, 0);
NiuTensor/Tensor/test/TMultiply.cpp NiuTensor/Tensor/test/TMultiply.cpp
#### 取负(Negate)
##### 什么是张量的取负操作?
在进行张量的取负操作时,张量中每一元素都进行取负得到新的元素,所有新元素的组合得到新的结果张量,一个维度为$3 \times 2$的张量取负操作过程如下所示:
$$
\left(\begin{matrix}1.0 & -2.0\\-3.0 & 4.0\\5.0 & -6.0\end{matrix}\right) \rightarrow
\left(\begin{matrix}-1.0 & 2.0\\3.0 & -4.0\\-5.0 & 6.0\end{matrix}\right)
$$
##### 张量取负的调用
NiuTensor提供了张量取负的计算操作,进行张量的按元素位置进行取负操作,该函数在NiuTensor/Tensor/core/arithmetic/Negate.h中定义,计算方式为:
$$
b = -a
$$
张量取负的调用方式以及参数说明如下所示:
```cpp
void Negate(const XTensor &a, XTensor &b);
void NegateMe(XTensor &a);
XTensor Negate(const XTensor & a);
```
Parameters:
* a(XTensor&) - 输入张量(对NegateMe函数而言,a同时为输出张量)
* b(XTensor&) - 输出张量
##### 张量取负片段示例
张量取负的示例代码为:
```cpp
/* call negate function */
b = Negate(*aGPU);
```
张量取负的测试文件路径为:
NiuTensor/Tensor/test/TNegate.cpp
#### 符号(Sign)
##### 什么是张量的符号操作?
张量的符号函数用来取得张量中每一元素的符号,一个维度为$3 \times 2$的张量符号函数操作过程如下所示:
$$
\left(\begin{matrix}1.0 & -2.0\\0.0 & 4.0\\5.0 & -6.0\end{matrix}\right) \rightarrow
\left(\begin{matrix}1.0 & -1.0\\0.0 & 1.0\\1.0 & -1.0\end{matrix}\right)
$$
##### 张量符号的调用
NiuTensor提供了张量的符号函数,该函数在NiuTensor/Tensor/core/arithmetic/Sign.h中定义,张量符号函数的调用方式以及参数说明如下所示:
```cpp
void Sign(const XTensor &a, XTensor &b);
void SignMe(XTensor &a);
XTensor Sign(const XTensor &a);
```
Parameters:
* a(XTensor&) - 输入张量(对SignMe函数而言,a同时为输出张量)
* b(XTensor&) - 输出张量
##### 张量符号片段示例
符号函数的示例代码为:
```cpp
/* call Sign function */
b = Sign(*a);
```
张量符号的测试文件路径为:
NiuTensor/Tensor/test/TSign.cpp
#### 减法(Sub) #### 减法(Sub)
##### 什么是张量减法? ##### 什么是张量减法?
...@@ -823,7 +735,7 @@ XTensor * b = NewTensor(aOrder, aDimSize, X_INT); ...@@ -823,7 +735,7 @@ XTensor * b = NewTensor(aOrder, aDimSize, X_INT);
调用ConvertDataType函数 调用ConvertDataType函数
```cpp ```cpp
/* call ConvertDataType function */ /* call ConvertDataType function */
ConvertDataType(a, b, X_INT); ConvertDataType(*a, *b, X_INT);
``` ```
有关张量ConvertDataType的详细代码示例见: 有关张量ConvertDataType的详细代码示例见:
...@@ -911,53 +823,109 @@ $$ ...@@ -911,53 +823,109 @@ $$
NiuTensor提供了张量的SetData操作,调用方法及参数说明如下所示: NiuTensor提供了张量的SetData操作,调用方法及参数说明如下所示:
设置张量为固定值: 设置张量中每个元素为模板T类型的值:
```cpp ```cpp
void SetDataFixed(XTensor &tensor, DTYPE p) template<class T>
void _SetDataFixed(XTensor * tensor, T value);
``` ```
Parameters: Parameters:
* tensor(XTensor&) - 输入张量 * tensor(XTensor*) - 输入张量
* p(DTYPE) - 设置的值 * value(T) - 设定的值
设置张量为整型值 设置张量中部分元素为模板T类型的值(函数根据条件张量中非零元素的位置,将输入张量对应位置的值设置为特定值)
```cpp ```cpp
void SetDataFixedInt(XTensor &tensor, int p); template<class T>
void _SetDataFixedCond(XTensor* tensor, XTensor* condition, T value);
``` ```
Parameters: Parameters:
* tensor(XTensor&) - 输入张量 * tensor(XTensor*) - 输入张量
* p(int) - 固定整型值 * condition(XTensor*) - 条件张量
* value(T) - 设定的值
设置张量为单精度浮点值: 沿指定维度设置张量中部分元素为模板T类型的值:
```cpp ```cpp
void _SetDataFixedFloat(XTensor * tensor, float p) template<class T>
void _SetDataDim(XTensor * tensor, int beg, int len, int dim, T p);
``` ```
Parameters: Parameters:
* tensor(XTensor*) - 输入张量 * tensor(XTensor*) - 输入张量
* p(float) - 固定单精度浮点值 * beg(int) - 起始位置
* len(int) - 设置长度
* dim(int) - 指定维度
* p(T) - 设定的值
沿指定维度设置张量中部分元素为其他张量元素值:
```cpp
void _SetDataIndexed(XTensor * source, XTensor * modify, int dim, int index);
```
Parameters:
* source(XTensor*) - 输入张量
* modify(XTensor*) - 参考张量
* dim(int) - 指定维度
* index(int) - 指定维度上的索引值
设置张量后两维为下三角矩阵并指定其元素值:
设置张量为双精度浮点值:
```cpp ```cpp
void _SetDataFixedDouble(XTensor * tensor, double p) void _SetDataLowTri(XTensor * tensor, DTYPE p, int shift);
``` ```
Parameters: Parameters:
* tensor(XTensor*) - 输入张量 * tensor(XTensor*) - 输入张量
* p(double) - 固定双精度浮点值 * p(DTYPE) - 设定的值
* shift(int) - 下三角矩阵沿对角方向偏移大小
根据0-1之间的均匀分布随机设置张量值:
设置张量为随机分布:
```cpp ```cpp
void _SetDataRand(XTensor * tensor, DTYPE low, DTYPE high) void _SetDataRand(XTensor * tensor, int rNum, int cNum)
``` ```
* tensor(XTensor*) - 输入张量
* rNum(int) - 二维矩阵中的行大小
* cNum(int) - 二维矩阵中的列大小
根据指定界限内的均匀分布随机设置张量值
```cpp
void _SetDataRand(XTensor * tensor, DTYPE low, DTYPE upper)
```
* tensor(XTensor*) - 输入张量
* low(DTYPE) - 取值下限
* upper(DTYPE) - 取值上限
根据指定界限内的等距增长设置张量值
```cpp
void _SetDataRange(XTensor * tensor, DTYPE lower, DTYPE upper, DTYPE step);
```
* tensor(XTensor*) - 输入张量
* low(DTYPE) - 取值下限
* upper(DTYPE) - 取值上限
* step(DTYPE) - 每次增长大小
根据指定界限内的均匀分布随机设置张量值,同时对于高于界限的元素值将其置为指定值,低于界限的元素值将其置为0
```cpp
void _SetDataRandP(XTensor * tensor, DTYPE lower, DTYPE upper, DTYPE p, DTYPE value);
```
* tensor(XTensor*) - 输入张量 * tensor(XTensor*) - 输入张量
* low(DTYPE) - 取值下限 * low(DTYPE) - 取值下限
* high(DTYPE) - 取值上限 * upper(DTYPE) - 取值上限
* p(DTYPE) - 张量元素值界限
* value(DTYPE) - 设定的值
设置张量为正态分布: 设置张量为正态分布:
```cpp ```cpp
void _SetDataRandN(XTensor * tensor, DTYPE mean, DTYPE standardDeviation) void _SetDataRandN(XTensor * tensor, DTYPE mean = 0.0F, DTYPE standardDeviatioF = 1.0F)
``` ```
Parameters: Parameters:
...@@ -970,7 +938,7 @@ Parameters: ...@@ -970,7 +938,7 @@ Parameters:
SetData示例代码如下,本例中是在[0.0,1.0]取值范围内对张量s进行随机初始化: SetData示例代码如下,本例中是在[0.0,1.0]取值范围内对张量s进行随机初始化:
```cpp ```cpp
/* call SetData function */ /* call SetData function */
s->SetDataRand(0.0, 1.0); SetDataRand(*s, 0.0, 1.0);
``` ```
有关张量SetData的详细代码示例见: 有关张量SetData的详细代码示例见:
......
...@@ -115,6 +115,8 @@ const char * GetOPName(int type) ...@@ -115,6 +115,8 @@ const char * GetOPName(int type)
else if ((type & DATA_BASE) != 0){ else if ((type & DATA_BASE) != 0){
if (type == GETANDSET_SELECT) if (type == GETANDSET_SELECT)
return "G_SELECT"; return "G_SELECT";
else if (type == GETANDSET_CONVERTDATATYPE)
return "G_CONVERTDATATYPE";
else if (type == MOVEMENT_COPYINDEXED) else if (type == MOVEMENT_COPYINDEXED)
return "M_COPYINDEXED"; return "M_COPYINDEXED";
else if (type == MOVEMENT_COPYVALUES) else if (type == MOVEMENT_COPYVALUES)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论