PyTorch定义Tensor及索引和切片(最新推荐)|每日快播

目录
深度学习--PyTorch定义Tensor一、创建Tensor1.1未初始化的方法1.2 随机初始化1.3 赋值初始化1.4 随机打散变量二、索引与切片

深度学习--PyTorch定义Tensor

一、创建Tensor

1.1未初始化的方法

​这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。

torch.empty():返回一个没有初始化的Tensor,默认是FloatTensor类型。

#torch.empty(d1,d2,d3)函数输入的是shape 
torch.empty(2,3,5)
 
#tensor([[[-1.9036e-22,  6.8944e-43,  0.0000e+00,  0.0000e+00, -1.0922e-20],
#         [ 6.8944e-43, -2.8812e-24,  6.8944e-43, -5.9272e-21,  6.8944e-43],
#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]],
#
#        [[ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00],
#         [ 0.0000e+00,  0.0000e+00,  1.4013e-45,  0.0000e+00,  0.0000e+00],
#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]]])

torch.FloatTensor():返回没有初始化的FloatTensor。


(资料图)

#torch.FloatTensor(d1,d2,d3)
torch.FloatTensor(2,2)
 
#tensor([[-0.0000e+00,  4.5907e-41],
#        [-7.3327e-21,  6.8944e-43]])

torch.IntTensor():返回没有初始化的IntTensor。

#torch.IntTensor(d1,d2,d3)
torch.IntTensor(2,2)
 
#tensor([[          0,  1002524760],
#        [-1687359808,         492]], dtype=torch.int32)

1.2 随机初始化

随机均匀分布:rand/rand_like,randint

rand:[0,1)均匀分布;randint(min,max,[d1,d2,d3]) 返回[min,max)的整数均匀分布

#torch.rand(d1,d2,d3)
torch.rand(2,2)
 
#tensor([[0.8670, 0.6158],
#        [0.0895, 0.2391]])
 
#rand_like()
a=torch.rand(3,2)
torch.rand_like(a)
 
#tensor([[0.2846, 0.3605],
#        [0.3359, 0.2789],
#        [0.5637, 0.6276]])
 
#randint(min,max,[d1,d2,d3])
torch.randint(1,10,[3,3,3])
 
#tensor([[[3, 3, 8],
#         [2, 7, 7],
#         [6, 5, 9]],
#
#        [[7, 9, 9],
#         [6, 3, 9],
#         [1, 5, 6]],
#
#        [[5, 4, 8],
#         [7, 1, 2],
#         [3, 4, 4]]])
随机正态分布 randn

randn返回一组符合N(0,1)正态分布的随机数据

#randn(d1,d2,d3)
torch.randn(2,2)
 
#tensor([[ 0.3729,  0.0548],
#        [-1.9443,  1.2485]])
 
#normal(mean,std) 需要给出均值和方差
torch.normal(mean=torch.full([10],0.),std=torch.arange(1,0,-0.1))
 
#tensor([-0.8547,  0.1985,  0.1879,  0.7315, -0.3785, -0.3445,  0.7092,  0.0525, 0.2669,  0.0744])
#后面需要用reshape修正成自己想要的形状

1.3 赋值初始化

full:返回一个定值

#full([d1,d2,d3],num)
torch.full([2,2],6)
 
#tensor([[6, 6],
#        [6, 6]])
 
torch.full([],6)
#tensor(6)   标量
 
torch.full([1],6)
#tensor([6]) 向量

arange:返回一组阶梯,等差数列

#torch.arange(min,max,step):返回一个[min,max),步长为step的集体数组,默认为1
torch.arange(0,10)
 
#tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
torch.arange(0,10,2)
#tensor([0, 2, 4, 6, 8])

linspace/logspace:返回一组阶梯

#torch.linspace(min,max,steps):返回一个[min,max],数量为steps的数组
torch.linspace(1,10,11)
 
#tensor([ 1.0000,  1.9000,  2.8000,  3.7000,  4.6000,  5.5000,  6.4000,  7.3000,
#         8.2000,  9.1000, 10.0000])
 
#torch.logspace(a,b,steps):返回一个[10^a,10^b],数量为steps的数组
torch.logspace(0,1,10)
 
#tensor([ 1.0000,  1.2915,  1.6681,  2.1544,  2.7826,  3.5938,  4.6416,  5.9948,
#         7.7426, 10.0000])

ones/zeros/eye:返回全1全0或者对角阵 ones_like/zeros_like

#torch.ones(d1,d2)
torch.ones(2,2)
 
#tensor([[1., 1.],
#        [1., 1.]])
 
#torch.zeros(d1,d2)
torch.zeros(2,2)
 
#tensor([[0., 0.],
#        [0., 0.]])
 
#torch.eye() 只能接收一个或两个参数
torch.eye(3)
 
#tensor([[1., 0., 0.],
#        [0., 1., 0.],
#        [0., 0., 1.]])
 
torch.eye(2,3)
 
#tensor([[1., 0., 0.],
#        [0., 1., 0.]])

1.4 随机打散变量

randperm:一般用于位置操作。类似random.shuffle()。

torch.randperm(8)
#tensor([2, 6, 7, 5, 3, 4, 1, 0])

二、索引与切片

简单索引方式

a=torch.rand(4,3,28,28)
a[0].shape
#torch.Size([3, 28, 28])
a[0,0,0,0]
#tensor(0.9373)

批量索引方式 开始位置:结束位置 左边取的到,右边取不到 算是一种切片 [0,1,2]->[-3,-2,-1]

a[:2].shape
#torch.Size([2, 3, 28, 28])
a[1:].shape
#torch.Size([3, 3, 28, 28])

隔行采样方式 开始位置:结束位置:间隔

a[:,:,0:28:2,:].shape
#torch.Size([4, 3, 14, 28])

任意取样方式 a.index_select(d,[d层的数据索引])

a.index_select(0,torch.tensor([0,2])).shape
#torch.Size([2, 3, 28, 28])
 
a.index_select(1,torch.tensor([0,2])).shape
#torch.Size([4, 2, 28, 28])

...任意维度取样

a[...].shape
#torch.Size([4, 3, 28, 28])
 
a[0,...].shape
#torch.Size([3, 28, 28])
 
a[:,2,...].shape
#torch.Size([4, 28, 28])

掩码索引mask x.ge(0.5) 表示大于等于0.5的为1,小于0.5的为0

#torch.masked_select 取出掩码对应位置的值
x=torch.randn(3,4)
mask=x.ge(0.5)
torch.masked_select(x,mask)
 
#tensor([1.6950, 1.2207, 0.6035])

具体索引 take(变量,位置) 会把变量变为一维的

x=torch.randn(3,4)
torch.take(x,torch.tensor([0,1,5]))
 
#tensor([-2.2092, -0.2652,  0.4848])

到此这篇关于PyTorch定义Tensor以及索引和切片的文章就介绍到这了,更多相关PyTorch Tensor索引和切片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

最近更新

PyTorch定义Tensor及索引和切片(最新推荐)|每日快播
2023-04-22 06:10:53
华为P60 Pro突破行业瓶颈,成为最轻薄的影像旗舰_全球今头条
2023-04-22 05:59:05
景区里的消防员,凤凰古城里行走的守护者 每日热议
2023-04-22 05:01:39
划线更正法 红字更正法 补充登记法_划线更正法和红字更正法的区别|全球焦点
2023-04-22 04:41:02
招商南油:券商的研报内容仅代表其自身观点,不代表我司的立场,公司的信息以公告为准_世界观天下
2023-04-22 04:30:51
天天讯息:FIBA官宣男篮世界杯小组分档 中国男篮位于第6档
2023-04-22 03:54:11
2023四川内江市隆昌市黄家镇人民政府招聘公益性岗位人员2人公告
2023-04-22 03:39:00
连续两天均有一场比赛双方一名球员对飚40+ NBA季后赛历史首次!
2023-04-22 03:16:38
4月21日基金净值:朱雀产业智选混合A最新净值1.3923,跌1.67%_全球观速讯
2023-04-22 03:23:51
4月21日基金净值:鹏扬先进制造混合A最新净值0.8512,跌2.22% 世界观点
2023-04-22 03:02:23
2023南阳5月普通话报名时间
2023-04-22 02:46:57
2010office破解版安装_2010office破解版_环球播报
2023-04-22 02:33:23
陕西咸阳市场监管局召开食品流通企业示范点观摩提升现场会
2023-04-22 02:02:44
益康药业2022年净利1679.61万同比下滑43.22% 原材料和物流运输成本增加
2023-04-22 01:50:36
绿委关切美军弹药储台进度 官方称无时间表
2023-04-22 00:58:44
dx11瀹樻柟涓嬭浇win10(dx12官方下载win10)
2023-04-22 00:37:20
海参什么季节吃 什么季节吃海参比较好
2023-04-22 00:28:30
【全球时快讯】连接网络共享打印机提示输入密码(连接网络共享打印机)
2023-04-22 00:00:32
新动态:根号excel怎么打出来快捷键_根号在excel怎么打
2023-04-21 23:38:20
上海公积金个人帐户查询_上海公积金查询个人账户查询|独家
2023-04-21 23:06:09
“哪里跌倒哪里爬起来”?男子出狱后“重操旧业”又被抓|环球动态
2023-04-21 22:37:01
利用ps修改图片数字_ps修改图片数字教程
2023-04-21 21:55:51
每日看点!全球百强唯一的中国糖企,年入十亿的隐形冠军
2023-04-21 21:41:26
科技赋能 黑龙江青冈县麻类产业焕发出新活力
2023-04-21 21:36:11
中国建筑国际一季度营业额约216亿港元|全球最新
2023-04-21 21:24:20
【世界新要闻】春兰股份4月21日快速回调
2023-04-21 20:41:48
天天观天下!银川市西夏区总工会举办第六届集体协商技能竞赛
2023-04-21 20:16:21
焦点滚动:纳税信用等级怎么查询_开户银行信用等级查询
2023-04-21 20:06:22
金山地质2022年亏损372.35万 同比亏损减少 工程项目结算增加_滚动
2023-04-21 19:55:23
每日速看!复旦微电(688385.SH):在进一步丰富28nm工艺制程的FPGA及PSoC芯片谱系种类以满足市场不同层次的需求
2023-04-21 19:24:37