tensor

语法

tensor(X)

参数

X 可以是标量、向量、元组、列式元组、矩阵或表。目前仅支持以下数据类型:BOOL, CHAR, SHORT, INT, LONG, FLOAT, DOUBLE。

详情

X 转换为一个 tensor。转换规则如下:

X

转换结果

标量 1 维 tensor
常规向量 1 维 tensor
列式元组 2 维 tensor
矩阵 2 维 tensor
表(每一列具有相同类型) 2 维 tensor
tuple(每个元素都是具有相同类型的向量,tuple of vector) 2 维 tensor
tuple(每个元素都是维度和类型都相同的矩阵,tuple of matrix) 3 维 tensor
tuple(每个元素都是 tuple,且子 tuple 的每个元素都是类型相同的向量,tuple of tuple) 3 维 tensor
多个 tuple 嵌套 n 维 tensor,n<=10

目前 tensor 主要应用于 DolphinDB 插件(如 LibTorch 等),与深度学习框架进行数据交换。DolphinDB 中的 tensor 目前暂不支持直接存储和计算,并且不支持直接访问和修改其元素。

topic

// 标量转为 tensor
tensor(3)
/* 输出一个长度为 1 的 1 维 tensor<int[1]>:
0: int 3
*/

// 向量转为 tensor
tensor(1 2 3)
/* 输出一个长度为 3 的 1 维 tensor<int[3]>:
0: int 1
1: int 2
2: int 3
*/

//列式元组转为 tensor
tp = [[1.3,2.5,2.3], [4.1,5.3,5], [4.1,5.3,5]]
tp.setColumnarTuple!()
tensor(tp)

/* 输出一个 2 维 tensor<double[3][3]>:
0: double[3] [1.3, 2.5, 2.3]
1: double[3] [4.1, 5.3, 5]
2: double[3] [4.1, 5.3, 5] 
 */

//矩阵转为 tensor
m= 1..6$2:3
tensor(m)

/* 输出一个 2 维 tensor<int[2][3]>:
0: int[3] [1, 3, 5]
1: int[3] [2, 4, 6]
*/

// 表转为 tensor
t=table(1..5 as id1, 6..10 as id2)
tensor(t)

/* 输出一个 2 维 tensor<int[5][2]>:
0: int[2] [1, 6]
1: int[2] [2, 7]
2: int[2] [3, 8]
3: int[2] [4, 9]
4: int[2] [5, 10]
*/

// 元组转为 tensor
tp1 = [[1.3,2.5,2.3], [4.1,5.3,5], [4.1,5.3,5]]
tensor(tp1)

/* 输出一个 2 维 tensor<double[3][3]>:
0: double[3] [1.3, 4.1, 4.1]
1: double[3] [2.5, 5.3, 5.3]
2: double[3] [2.3, 5, 5]
*/

// tuple of matrix 转为 tensor
m1= 1..6$2:3
m2=4..9$2:3
tensor([m1,m2])

/* 输出一个 3 维 tensor<int[2][2][3]>:
0: int[2][3]
1: int[2][3]
*/

// tuple of tuple 转为 tensor
tp1 = [[1.3,2.5,2.3], [4.1,5.3,5], [4.1,5.3,5]]
tp2 = [[1.1,1.2,1.4], [1.5,1.2,1.6], [1.3,1.5,1.8]]
tensor([tp1, tp2])

/* 输出一个 3 维 tensor<double[2][3][3]>:
0: double[3][3]
1: double[3][3]
*/

// tuple 嵌套转为 tensor
tp1 = [[1.3,2.5,2.3], [4.1,5.3,5], [4.1,5.3,5]]
tp2 = [[1.1,1.2,1.4], [1.5,1.2,1.6], [1.3,1.5,1.8]]
tp3 = [[2.1,6.2,4.4], [3.5,1.9,3.6], [1.8,3.5,9.8]]
tensor([[tp1, tp2],[tp1, tp3]])

/* 输出一个 4 维 tensor<double[2][2][3][3]>:
0: double[2][3][3]
1: double[2][3][3]
*/