Tensor的简单使用
目录
Tensor是什么?
Tensor又叫张量,与标量,向量等的区别如下:
- 标量其实就是一个独立存在的数,比如在线性代数中一个实数 5 就可以被看作一个标量,所以标量的运算相对简单,与我们平常做的数字算术运算类似。
- 向量就是一列数,这些数是有序排列的。用过次序中的索引,我们可以确定每个单独的数。我们可以将向量看做空间中的点,每个元素就是空间中的坐标。
- 矩阵是二维数组,其中的每一个元素被两个索引而非一个所确定。我们通常会赋予矩阵粗体的大写变量名称。如果我们现在有N个用户的数据,每条数据含有M个特征,那其实它对应的就是一个N*M的矩阵
- 几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。 例如,可以将任意一张彩色图片表示成一个三阶张量,三个维度分别是图片的高度、宽度和色彩数据。
Torch
torch.argmax
返回最大值索引
返回所有值的最大值位置索引
|
|
返回指定维度最大值的位置索引
|
|
torch.topk
返回特定维的top-k最大值的索引
|
|
top-k索引取得方式举例
|
|
torch.cat
拼接tensor
|
|
torch.stack
将一个tensor序列组合Concatenates为一个新的tensor,所有的tensor需要是相同的size(shape)
|
|
torch.squeeze
squeeze是英文 挤 的意思
返回一个张量,其中所有input
大小为1的维度都已删除。
例如,如果输入是形状: $(A \times 1 \times B \times C \times 1 \times D)$那么输出张量将具有以下形状:($A \times B \times C\times D$).
dim
给定时,仅在给定维度上进行挤压操作。如果输入是形状:$(A \times 1 \times B)$,squeeze(input, 0) 语句将保持张量不变,但squeeze(input, 1)语句会将张量压缩到形状$(A \times B)$.
|
|
torch.tensor.view
改变tensor的形状,注意,调用的时候是作用在tensor上的,比如tensor_x.view(),而不是torch.view(),有所区别。
|
|
改变数据类型,通常用于控制浮点数
|
|
Tensor归一化操作
按维度1归一化
|
|
Tensor的多条件选取
|
|
不同形状的Tensor之间计算
|
|
如果你觉得这篇文章对你有所帮助,欢迎赞赏~
赞赏