Pytorch入门之张量tensor

一、张量tensor

张量的三个特征:秩、轴、形状

张量的秩是指索引的个数,轴是指每一个维度的最大的索引的值,张量的形状提供了维度和索引的数量关系。

经常需要对张量进行重塑

t.reshape(1,9)

利用上述函数可以将张量按任意想要的形状进行重塑

下面我们考虑具体的情况,将张量带入CNN的输入中

这里的张量的秩为4,即[B,C,H,W],其中后两个维度作为每一个像素的长和宽的索引,第三个维度作为RBG或者灰度图的通道的索引,第四个维度作为批的数量的索引。

对于每一张图片,通过卷积运算将被改变其高度、宽度维度以及颜色通道的数量,通道的数量根据在层中使用的滤波器的数量而变化。

二、利用函数制造张量

利用numpy

事先没有数据,创建一些特殊的tensor

 

关于创建tensor的不同选项的性能解读

 

不难看出,前两种方式相当于在内存中创建了初始数据对象的副本,二后两种方式则是共享数据内存。通常情况下建议使用torch.tensor()来创建tensor对象。

三、常见的tensor操作 

重塑、元素操作、还原和访问

tensor的重塑

接下来可以对其reshape

此外还可以对张量进行压缩和解压缩(squeeze & unsqueeze)

这个操作可以消除(增加)轴为1的秩

flatten函数,传递给全连接层的卷积层输出必须在进入全连接层之前进行flatten。将输入的图像压扁成为一个一维的张量,所有轴被挤压在一起。

 

考察CNN的输入,对于每一张图片而言相当于进行展平成一维

 但是对于实际情况来说,还需要批和通道三个维度,模拟CNN的输入

 

 接下来可以通过flatten函数来对特定维度的tensor进行处理

 显然这不是我们想要看到的,我们希望将每一批的图片每一张进行单独的处理,而不是草率的全部压缩为一维,这样的信息失去了处理的意义,因此我们需要规定flatten的起始维度start_dim

这样,我们就可以利用tensor进行批处理了 

 tensor的元素操作

元素操作通常进行于相同位置上的元素,由索引确定位置,两个张量必须具有相同的形状才能进行一个元素操作。

张量广播:通过numpy的广播可以进行简单的tensor和标量之间的计算。

此外张量还可以进行比较,符合条件的元素被设定为1,否则被置为0。

张量的缩减操作

减少张量中包含的元素数量的操作,例如:求和操作,求平均值

Argmax,返回tensor中最大值的索引,在一个tensor上调用argmax压缩为一个新的tensor。在神经网络的输出层中可以用其找到预测概率最大的预测类。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HIT-Steven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值