张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作

  • 一、张量的基本概念
  • 二、张量的聚合操作
  • 三、张量的拼接操作
  • 张量的升维、降维

一、张量的基本概念

张量(Tensor),就是多维数组。当维度小于或等于2时,张量又有一些更熟悉的名字:

  1. 矩阵: 2维张量又被称为【矩阵】(Matrix);
  2. 向量: 1维张量又被称为【向量】(Vector);
  3. 标量: 0维张量又被称为【标量】(Scalar),其实就是一个数值。
  • torch.rand(2,3):创建一个形状为(2,3)的随机张量,每个值从[0,1)之间的均匀分布中抽取;
  • torch.randn(2,3):创建一个形状为(2,3)的随机张量,每个值从标准正态分布(均值0,方差1)中抽取;

二、张量的聚合操作

聚合操作(Aggregation):常见的张量聚合运算包括:求平均、求和、最大值、最小值等。

张量的聚合运算关于dim的规则:

在做张量的运算操作时,dim设定了哪个维,就会遍历这个维去做运算(也称“沿着该维运算”),其他为顺序不变。

  • 当dim= nnn(n>2) 时,则结果的 n+1n+1n+1 维发生变化,其余维度不变。
  • 当dim= 111 时,则结果变为两个向量的运算,维度变形。为了使结果保持正确的维度,聚合操作提供了keepdim参数,默认设置为False,需要显示地设为True

示例代码:

import torch
x  = torch.tensor([[1,2,3],[4,5,6]],dtype=torch.float32)  # 不指定dtype=torch.float32,计算x.mean(dim=0)将会报错RuntimeError: mean(): input dtype should be either floating point or complex dtypes.Got Long instead
x.mean(dim=0)
>>>
tensor([2.5000, 3.5000, 4.5000])
x.mean(dim=1)
>>>
tensor([2., 5.])# 设置参数keepdim是结果保持正确的维度
x.mean(dim=0,keepdim=True)
>>>
tensor([[2.5000, 3.5000, 4.5000]])x.mean(dim=1,keepdim=True)
>>>
tensor([[2.],[5.]])

三、张量的拼接操作

张量的拼接操作torch.cat)也是类似的,通过指定维度dim,获得不同的拼接结果。

张量的拼接运算关于dim的规则:

在做张量的运算操作时,dim设定了哪个维,就会遍历这个维去做运算(也称“沿着该维运算”),其他为顺序不变。

  • 当dim= nnn 时,则结果的 n+1n+1n+1 维发生变化,其余维度不变。 (备注:dim的nnn 从0开始计数,结果的n+1n+1n+1 维从1开始计数。)
x = torch.tensor([[1,2,3],[4,5,6]],dtype=torch.float32)
y = torch.tensor([[7,8,9],[10,11,12]],dtype=torch.float32)
torch.cat((x,y),dim=0)
>>>
tensor([[ 1.,  2.,  3.],[ 4.,  5.,  6.],[ 7.,  8.,  9.],[10., 11., 12.]])torch.cat((x,y), dim=1)
>>>
tensor([[ 1.,  2.,  3.,  7.,  8.,  9.],[ 4.,  5.,  6., 10., 11., 12.]])

张量的升维、降维

有时为了适配某些运算,需要对一个张量进行升维或降维。具体而言:

升维: 就是通过torch.unsqueeze(input, dim, out=None)函数,对输入张量的dim位置插入维度1,并返回一个新的张量。与索引相同,dim的值也可以为负数。

降维: 就是通过torch.squeeze(input, dim=None, out=None)函数。

  • 在不指定dim时,张量中形状为1的所有维都将被除去。如:输入形状为(A,1,B,1,C,1,D)的张量,那么输出形状就为(A,B,C,D)。
  • 在指定dim时,降维操作只在给定维度上。如:输入形状为(A,1,B),squeeze(input,dim=0)函数将会保持张量不变,只有用squeeze(input,dim=1)函数时,形状才会变成(A,B)。

张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维相关推荐

  1. Tensorflow张量和维度概念的理解

    Tensorflow张量和维度概念的理解 理解tensorflow张量的概念:张量就是一个数据存储容器,一种数据结构,是人为定义的.因为在计算机内存中哪里有什么2维空间3维空间,都是一块块连续的内存区 ...

  2. 数字图像处理 张量分解的概念、发展及其应用

    一.张量的概念 张量是一个多维数组.更正式地说,N向或N阶张量是N个向量空间的张量乘积的一个元素,每个向量空间都有自己的坐标系.张量的概念不能与物理和工程中的张量(如应力张量)混淆,后者在数学中通常被 ...

  3. 张量学习(1):张量的基本概念

    1.张量的四种定义 1.张量是多维数组,这个定义常见于各种人工智能软件. 2.张量是某种几何对象,不会随着坐标系的改变而改变 3.张量是向量和余向量(covector)通过张量积(tensor pro ...

  4. 把张量变成int_tensorflow 之 张量与变量

    TensorFlow 与 MXNet.PyTorch 很相似,上手速度很快(相比于 TensorFlow1.x). TensorFlow 拆开来看,就是 Tensor 与 Flow,即数据流程图,也是 ...

  5. pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换

    张量的作用 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵(与Numpy中的Array类似) 通过使用Type函数可以查看变量类型.一 CPU张量类型 Pytorch ...

  6. torch.full 【输出大小为size内容为填充张量为fill_value的张量】

    >>> torch.full((2, 3), 3.1416) tensor([[ 3.1416, 3.1416, 3.1416],[ 3.1416, 3.1416, 3.1416]] ...

  7. 张量(Tensor)的降维与升维

    一.Tensor的降维--torch.squeeze()函数 1.tensor的维度 小编对于张量的理解一直很模糊,今天用Excel来帮助大家理解,希望对大家有所帮助. 首先,张量是多维数组,这里不多 ...

  8. SQL Server字符串聚合拼接列值合并

    STUFF字符串函数是将字符串插入到另一个字符串中.它会删除开始位置第一个字符串中的指定长度的字符,然后将第二个字符串插入到开始位置的第一个字符串中,语法如下: STUFF(字符串/变量/列,开始位置 ...

  9. numpy矩阵升维,拼接

    当将两个列向量进行拼接时,可有如下两步 1.矩阵升维 原数据可能为列向量,如 a=np.arange(10) a.shape(10,) 此时,需要用到矩阵的升维, a[:,None].shape 此时 ...

最新文章

  1. php的正则怎么写,一个正则的写法 php
  2. linux shell合并文件命令paste
  3. Autism Course of Yale University Fred Volkman 2
  4. python oracle数据库开发_python连接Oracle数据库
  5. Linux下获得线程ID syscall(224)
  6. python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
  7. 华为手机应用鸿蒙os,华为手机内置应用逐渐向鸿蒙 OS 靠拢
  8. 关于JNI的几个问题
  9. RMAN深入解析之--内存中的RMAN
  10. Windows conio.h 的源码,实现gotoxy, textcolor,movetext等函数
  11. 芭蕉树上第二十一根芭蕉-- matlab2017b安装的出现问题
  12. AI换脸正在发酵,有人抖音玩“蚂蚁呀嘿”,有人已经创业拿到300万美元融资...
  13. 解决Windows x86网易云音乐不能将音乐下载到SD卡的BUG
  14. 【华人学者风采】陈积明 浙江大学
  15. matlab把图像进行网格化,或者是在图像中画网格
  16. 华为桌面云虚拟机卸载VM Tools工具计算机蓝屏开机不了-完美解决
  17. C语言指针详解(初级)
  18. 【线上活动】中秋诗词接龙!
  19. Remix 搭建与简单使用
  20. 双十一大促客服必备话术

热门文章

  1. 景区电商平台网站建设方案
  2. HTML/CSS 常用单词整理
  3. flash 地址容量换算
  4. 图像处理评价指标之模糊度(更新中)
  5. 谈谈对springioc的理解
  6. php 钉钉头像生成,从零开始打造专属钉钉机器人
  7. GIS应用技巧之景观格局分析(一)
  8. 光纤收发器上的FEF功能有什么用?
  9. Character Swap (Hard Version)
  10. background-position进行图片定位