首页 > 其他分享 >Tensor - 简介、创建、操作与运算

Tensor - 简介、创建、操作与运算

时间:2023-08-08 23:45:53浏览次数:39  
标签:dim 运算 Tensor 简介 torch 张量 --- input out

一、简介

1.1 Variable和Tensor的关系

  • Variabletorch.autograd中的数据类型,用于封装Tensor,使其可以进行自动求导

  • 0.4.0后Variable并入了Tensor

#Variable含有的属性
data
grad
grad_fn
requires_grad
is_leaf
#Tensor新增的三个属性
dtype   #9种,包含float、int、boolean,CPU与GPU有不同的宏表示
shape
device

二、 创建

2.1 依据数值创建

# 1 torch.tensor()
data	#可以是list,numpy
dtype
device
requires_grad
pin_memory	#是否用于锁页内存

# 2 torch.from_numpy(ndarray)--->创建的tensor与原ndarray共享内存

2.2 直接创建

# 1 torch.zeros()
size
out
layout	#内存中的布局形势,有strided,sparse_coo
device
requires_grad

# 2 torch.zeros_like() --->依据input形状创建全0张量
input
dtype
layout

# 3 torch.ones() --->参数与1一样

# 4 torch.ones_like() --->参数与2一样

# 5 torch.full() --->依据size的形状填充fill_value
size
fill_value
out
dtype
layout
device
requires_grad

# 6 torch.arange() --->创建等差的1维张量,左开右闭
start
end
step	#数列公差
out
dtype
layout
device
requires_grad

# 7 torch.linspace() --->创建均分的1维张量,左闭右闭
start
end
steps	#需要注意,这个不是步长,是数列的长度,实际步长为(end - start) / (steps - 1)
out
dtype
layout
device
requires_grad

# 8 torch.logspace() --->创建对数均分的1维张量,左闭右闭,只是在steps后增加一个base参数
base	#对数函数的底

# 9 torch.eye() --->创建2维单位对角矩阵
n	#行数
m	#列数
out
dtype
layout
device
requires_grad

2.3 依据概率创建

# 1 torch.normal() --->生成正态分布
mean
std
(size)
out
'''
上述mean、std有四种模式:
mean为标量,std为标量:需指定size参数
mean为标量,std为张量:没有size参数
mean为张量,std为标量:没有size参数
mean为张量,std为张量:没有size参数,对应位取mean和std生成正态分布数值
'''

# 2 torch.randn() --->生成标准正态分布
size
out
dtype
layout
device
requires_grad

# 3 torch.randn_like()

# 4 torch.rand() --->在[0,1)上生成均匀分布
size
out
dtype
layout
device
requires_grad

# 5 torch.rand_like()

# 6 torch.randint() --->在[low,high)上生成均匀分布
low
high
size
out
dtype
layout
device
requires_grad

# 7 torch.randperm() -->生成0~n-1的随机排列
n	#张量的长度
out
dtype
layout
device
requires_grad

# 8 torch.bernoulli() -->以input为概率,生成伯努利分布(0-1分布)
input	#概率值
*
generator
out

三、 操作

3.1 拼接

# 1 torch.cat() --->将张量按维度dim进行拼接
tensors	#张量序列
dim
out

# 2 torch.stack() --->在新创建的维度dim进行拼接,如果dim存在则后移
tensors	#张量序列
dim
out

3.2 切分

# 1 torch.chunk() --->将张量按照维度dim进行平均切分,返回张量列表,需要注意的是:若不能整除时,最后一份张量小于其他张量
input
chunks: 要切分的份数
dim

# 2 torch.split() --->将张量按照维度dim进行切分,返回张量列表
tensor
split_size_or_sections:为int时,表示每一份的长度;为list时,按照list元素切分
dim

3.3 索引

# 1 torch.index_select() --->在维度dim上,按照index索引数据,返回索引数据拼接的张量
input
dim
index

# 2 torch.masked_select() --->按照mask中的True进行索引,返回一维张量 
input
mask:与input相同形状的bool值张量

3.4 变换

# 1 torch.reshape() -->按照shape变换张量的形状,若张量在内存中是连续的,则新张量与input共享数据内存
input
shape

# 2 torch.transpose() --->交换张量的两个维度
input
dim0
dim1

# 3 torch.t() --->2维张量转置,相当于torch.transpose(input, 0, 1)

# 4 torch.squeeze() --->压缩长度为1的维度(轴)
input
dim	#若为None,移除所有长度为1的轴;若指定维度,仅当该维度的数值为1时会被移除
out

# 5 torch.unsqueeze() --->依据dim扩展维度(1)
input
dim
out

四、 数学运算

4.1 加减乘除

torch.add() --->input + alpha * other
input
alpha
other
out
torch.addcdiv() ---> input + value * tensor1 / tensor2

input
value
tensor1
tensor2
out
torch.addcmul()
torch.sub()
torch.div()
torch.mul()

4.2 对数、指数、幂函数

torch.log(input, out=None)
torch.log10(input, out=None)
torch.log2(input, out=None)
torch.exp(input, out=None)
torch.pow()

4.3 三角函数

torch.abs(input, out=None)
torch.acos(input, out=None)
torch.cosh(input, out=None)
torch.cos(input, out=None)
torch.asin(input, out=None)
torch.atan(input, out=None)
torch.atan2(input, other, out=None)

标签:dim,运算,Tensor,简介,torch,张量,---,input,out
From: https://www.cnblogs.com/Terrypython/p/17615708.html

相关文章

  • python--mysql--驱动简介和使用
    本篇文章介绍Python操作MySQL的几种方式,你可以在实际开发过程中根据实际情况合理选择。MySQL-python(MySQLdb)–支持python2.xMySQL-python又叫MySQLdb,是Python连接MySQL最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持Python2.x,而且安装的时候有很多前......
  • 数据挖掘(五) -----基于Spark的可伸缩基因数据分析平台开源存储运算架构hail全面了解
    hail简介hail是一个开源的、通用的、面向python数据类型的处理基因数据专用的分析库和方法解决方案。hail的存在是为了支持多维度的复杂的数据结构,比如全基因组关联数据研究(GWAS).GWASTutorialhail的底层是通过python,scala,java和apachespark来实现的。hail官网gitlab官方文......
  • 云存储---ceph简介架构原理和一些基本概念
    Ceph简介Ceph是一个分布式存储系统,提供对象,块和文件存储,是一个免费开源软件的存储解决方案,可以部署于普通的x86兼容服务器上,可用于解决统一存储的io问题。Ceph诞生于2004年,最早是SageWeil一项关于存储系统的PhD研究项目,致力于开发下一代高性能分布式文件系统的项目。随着云计算的发......
  • OpenStack简介
    OpenStack简介目录OpenStack简介1、云计算模式2、云计算虚拟化openstack之间的关系?3、OpenStack中有哪些组件?4、计算节点负责虚拟机运行5、网络节点负责对外网络与内网之间的通信5.1网络节点仅包含Neutron服务5.2网络节点包含三个网络端口6、存储节点负责对虚拟机的额外存储......
  • LIBSVM简介及其使用方法
    LIBSVM简介及其使用方法(台湾大学林智仁(LinChih-Jen)副教授等)libsvm,林智仁libsvm官方网站:WelcometoChih-JenLin'sHomePagehttp://www.csie.ntu.edu.tw/~cjlin/http://www.csie.ntu.edu.tw/~cjlin/libsvm可以在此网站下载相关软件。selecedfrom:支持向量......
  • 电容器的选型方法及步骤简介
    电容器是一种电器元件,由两个金属板组成,中间隔有绝缘材料,可以储存电荷。当两个金属板带有相反的电荷时,电容器就会储存电能。电容器的基本单位是法拉,用字母F表示。电容器在电路中可以起到滤波、旁路、耦合、调谐等作用。不同类型的电容器有不同的特性,例如电解电容器的储存电荷能力较......
  • C++ | 运算符重载
    运算符重载在类中的函数进行重载(成员函数)运算符重载用于重新定义运算符的作用,使用函数名称operatorOP作为函数名,其中OP为具体的运算符(如operator+)classTime{Timeoperator+(constTime&t);};Timea,b;Timec=a+b;在成员函数中重载的运算符,如+-等,默认左边......
  • 软件测试|MySQL逻辑运算符使用详解
    简介在MySQL中,逻辑运算符用于处理布尔类型的数据,进行逻辑判断和组合条件。逻辑运算符主要包括AND、OR、NOT三种,它们可以帮助我们在查询和条件语句中进行复杂的逻辑操作。本文将详细介绍MySQL中逻辑运算符的使用方法和示例。AND运算符AND运算符用于将多个条件组合起来,要求所有条件都......
  • tensorflow猫狗大战笔记
    第一步:数据集的加工importcv2importos#使用os.walk()函数遍历指定文件夹train及其所有子文件夹。dir='train'#读取图片路径的设定需要在程序文件里建立train文件夹将需要更改尺寸的图片放入forroot,dirs,filesinos.walk(dir):#forroot,dirs,filesinos.walk......
  • Python&Swift 三元(目)运算
    Python的三元运算写法:is_true=Trueresult='TRUE'ifis_trueelse'FALSE'#output:TRUESwift的三元运算写法:isTrue=trueresult=isTrue?"TRUE":"FALSE"//output:TRUE......