pytorch -- 张量相关方法

本文主要讲解ndimension()、nelement()、size() / shape、view() / reshape等与张量相关的方法

深度学习中,张量使用相当频繁,本篇文章主要讲解一些与张量有关的方法。萌新博主,还请各位大佬指导o(* ̄▽ ̄*)ブ

读者如果要尝试本篇中的代码,请自行下载pytorch框架,并且引入torch和numpy包。

先生成示例张量 t (本文后续操作会在 t 张量之上进行)

#  张量相关方法demo
import torch
import numpy as np

# 创建一个3 x 4 x 5 的张量
t = torch.rand(3,4,5)

t 张量(随机生成,读者实验时可能与本文中的不一样):

1.获取张量维度的数目 -- ndimension()

这里的3表示,这个 t 张量总共有3个维度,可以理解成x、y、z轴这种

比如此时,如果再生成一个2 x 3 的张量,则该张量维度的数目为 2

 

2.获取张量中总元素的个数 -- nelement()


 

3.获取张量的形状,和numpy数组中的shape差不多,所以,这里依然可以用shape进行形状的查看 -- size() / shape

使用size和shape的区别在于:

shape是访问的属性,size是调用的方法,所以,shape不用在后面加括号,而size需要加括号

同时我们也可以使用下标,对各个维度的大小进行访问(维度是从下标为0开始的)

4.重塑张量的形状 -- view() / reshape

对于使用过numpy数组的同学,一定熟悉reshape操作,我们可以通过reshape重塑numpy数组的形状

reshape(推荐使用)

当然,在pytorch框架中,我们依然可以使用,对于刚刚的张量 t ,它的形状是 3 x 4 x 5,总计有60个元素,如果我们想要它变成一个二维的张量,我们可以采用reshape方法



改变reshape后的张量,会改变原来的张量

同时,reshape会在形状信息不兼容时自动生成一个新的张量(兼容:新张量的2个连续维度的乘积等于原来张量的某一维度


view

view不改变张量底层的数据,只改变维度步长的信息,如果要生成一个欣的张量,则还需调用contiguous()方法

我们可以理解为 reshape(x,y) = view(x,y).contiguous()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值