张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维
张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作
- 一、张量的基本概念
- 二、张量的聚合操作
- 三、张量的拼接操作
- 张量的升维、降维
一、张量的基本概念
张量(Tensor),就是多维数组。当维度小于或等于2时,张量又有一些更熟悉的名字:
- 矩阵: 2维张量又被称为【矩阵】(Matrix);
- 向量: 1维张量又被称为【向量】(Vector);
- 标量: 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)。
张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维相关推荐
- Tensorflow张量和维度概念的理解
Tensorflow张量和维度概念的理解 理解tensorflow张量的概念:张量就是一个数据存储容器,一种数据结构,是人为定义的.因为在计算机内存中哪里有什么2维空间3维空间,都是一块块连续的内存区 ...
- 数字图像处理 张量分解的概念、发展及其应用
一.张量的概念 张量是一个多维数组.更正式地说,N向或N阶张量是N个向量空间的张量乘积的一个元素,每个向量空间都有自己的坐标系.张量的概念不能与物理和工程中的张量(如应力张量)混淆,后者在数学中通常被 ...
- 张量学习(1):张量的基本概念
1.张量的四种定义 1.张量是多维数组,这个定义常见于各种人工智能软件. 2.张量是某种几何对象,不会随着坐标系的改变而改变 3.张量是向量和余向量(covector)通过张量积(tensor pro ...
- 把张量变成int_tensorflow 之 张量与变量
TensorFlow 与 MXNet.PyTorch 很相似,上手速度很快(相比于 TensorFlow1.x). TensorFlow 拆开来看,就是 Tensor 与 Flow,即数据流程图,也是 ...
- pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换
张量的作用 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵(与Numpy中的Array类似) 通过使用Type函数可以查看变量类型.一 CPU张量类型 Pytorch ...
- torch.full 【输出大小为size内容为填充张量为fill_value的张量】
>>> torch.full((2, 3), 3.1416) tensor([[ 3.1416, 3.1416, 3.1416],[ 3.1416, 3.1416, 3.1416]] ...
- 张量(Tensor)的降维与升维
一.Tensor的降维--torch.squeeze()函数 1.tensor的维度 小编对于张量的理解一直很模糊,今天用Excel来帮助大家理解,希望对大家有所帮助. 首先,张量是多维数组,这里不多 ...
- SQL Server字符串聚合拼接列值合并
STUFF字符串函数是将字符串插入到另一个字符串中.它会删除开始位置第一个字符串中的指定长度的字符,然后将第二个字符串插入到开始位置的第一个字符串中,语法如下: STUFF(字符串/变量/列,开始位置 ...
- numpy矩阵升维,拼接
当将两个列向量进行拼接时,可有如下两步 1.矩阵升维 原数据可能为列向量,如 a=np.arange(10) a.shape(10,) 此时,需要用到矩阵的升维, a[:,None].shape 此时 ...
最新文章
- php的正则怎么写,一个正则的写法 php
- linux shell合并文件命令paste
- Autism Course of Yale University Fred Volkman 2
- python oracle数据库开发_python连接Oracle数据库
- Linux下获得线程ID syscall(224)
- python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
- 华为手机应用鸿蒙os,华为手机内置应用逐渐向鸿蒙 OS 靠拢
- 关于JNI的几个问题
- RMAN深入解析之--内存中的RMAN
- Windows conio.h 的源码,实现gotoxy, textcolor,movetext等函数
- 芭蕉树上第二十一根芭蕉-- matlab2017b安装的出现问题
- AI换脸正在发酵,有人抖音玩“蚂蚁呀嘿”,有人已经创业拿到300万美元融资...
- 解决Windows x86网易云音乐不能将音乐下载到SD卡的BUG
- 【华人学者风采】陈积明 浙江大学
- matlab把图像进行网格化,或者是在图像中画网格
- 华为桌面云虚拟机卸载VM Tools工具计算机蓝屏开机不了-完美解决
- C语言指针详解(初级)
- 【线上活动】中秋诗词接龙!
- Remix 搭建与简单使用
- 双十一大促客服必备话术