pytorch入门1--数据操作(张量)

一、张量的定义和变换
1.张量表示一个数值组成的数组,这个数组可能有多个维度。
在这里插入图片描述
说明,torch.arange(12)可以得到一个一维的(有几层中括号就是几维数组,注意是层,不是个数),一个最内层的一个中括号中的一列数值都来描述一个点的信息)、由0~11数值组成的张量。
2.可以通过张量的shape属性来访问张量的形状.
在这里插入图片描述
说明:输出结果的torch.Size()表示一维里有12个元素。
3.可以通过numel()来访问张量中元素的总数。(number elements)
在这里插入图片描述
4.使用reshape()函数改变一个张量的形状而不改变元素数量和元素值。
在这里插入图片描述
可以看出reshape()函数中有几个参数便改变成几维数组。
5.使用全0、全1、其他常量或者从特定分布中随机采样的数字。
在这里插入图片描述
6.通过特定的值来为所需张量中的每个元素赋予确定值。
在这里插入图片描述
说明:上例创建了一个二位的数组。第一行的元素是2,1,4,3,第二行的元素是1,2,3,4,第三行的元素是4,3,2,1.
7.常见的标准算数运算符(加、减、乘、除和求幂运算),都是按元素计算。这里还不是线性代数里的运算。
在这里插入图片描述
8.可以把多个张量连结在一起。
在这里插入图片描述
9.通过逻辑运算符构建二元张量,也是按元素值进行运算。
在这里插入图片描述
10.使用sum()函数堆张量中的所有元素进行求和产生一个只有一个元素的张量。
在这里插入图片描述
11.即使两个张量形状不同,也可以通过广播机制(broadcasting mechanism)来执行按元素操作。
在这里插入图片描述
说明:a是一个二维张量,第一个维度是3,第二个维度是1,b是一个二维张量,第一个维度是1,第二个维度是2,进行a+b运算时将a的第二个维度复制一份使第二个维度为2(与b一致,即a=[[0,0],[1,1],[2,2]),将b的第一个维度复制两份使第一个维度为3(与a一致,即b=[[0,1],[0,1],[0,1]]),在进行相加得结果。
二、张量中元素的访问
1.可以用-1选择最后一个元素,可以用[1:3]选择第二个和第三个元素。
在这里插入图片描述
在这里插入图片描述
2.还可以通过指定索引来将元素写入矩阵
在这里插入图片描述
为多个元素赋相同的值,只需要索引所有元素,然后为它们赋值。
在这里插入图片描述
3.一个节省内存的小细节
python中可以通过id()函数来获得 变量的编号(相当于地址)
在这里插入图片描述
可以看出,当使一个张量加上另一个张量赋给原来的张量时使用+=执行原地操作,不用为新结果分配内存,而使用=要为新结果分配内存。
在这里插入图片描述
将两个张量相加赋给另一个张量时加“[:]”也可以不用分配新内存,不加则需要。
三、转化为NumPy张量
python里最常见的其实既不是torch,也不是tensorflow,而是numpy。numpy是python里最基础的多元数组运算框架,所有框架可以很方便地从numpy进行转化。
在这里插入图片描述
四、将大小为1的张量转化为python标量
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值