常用的Tensor操作

常用的Tensor操作

1、通过tensor.view方法可以调整tensor的形状,但必须保证调整去前后元素总数一致。view不会修改自身的数据,返回新的tensor与原tensor共享内存,即更改其中的一个,另一个也会跟这改变。
2、实际中经常需要添加或减少某一维度,可用squeeze和unsqueeze这两函数。

import torch as t
a = t.arange(0,6)
b = a.view(2,3)     #调整tensor的形状,不会修改自身数据
c = a.view(-1,3)    #-1自动计算大小
'''
a = tensor([0, 1, 2, 3, 4, 5])
b = tensor([[0, 1, 2],
        [3, 4, 5]])
c = tensor([[0, 1, 2],
        [3, 4, 5]])'''
b = b.unsqueeze(1)      #在第一维(下标从0开始)上增加“1”
'''tensor([[[0, 1, 2]],

        [[3, 4, 5]]])'''
c = c.unsqueeze(-2)
'''tensor([[[0, 1, 2]],

        [[3, 4, 5]]])'''
d = b.view(1,1,1,2,3)
'''tensor([[[[[0, 1, 2],
           [3, 4, 5]]]]])'''
d = d.squeeze(0)    #压缩第0维的“1”
'''tensor([[[0, 1, 2],
         [3, 4, 5]]])'''
d = d.squeeze()     #所有维度为“1”的压缩
'''tensor([[0, 1, 2],
        [3, 4, 5]])'''

3、resize是另一种可用调整size的方法,但与view不同,它可以修改tensor的尺寸。如果新尺寸超过原尺寸,会自动分配新的内存空间,而如果新尺寸小于原尺寸,则之前的数据依旧会被保存。
b.resize_(1,3)      #resize_调整size,新尺寸小于原尺寸,则之前的保留
'''tensor([[0, 1, 2]])'''
b.resize_(3,3)      #resize_调整size,新尺寸大于原尺寸,会自动分配新的内存空间
'''tensor([[                  0,                   1,                   2],
        [                  3,                   4,                   5],
        [7526747973031060338, 7306812055932138085, 8389969046800051066]])'''

2018-10-23 17:59:12

转载于:https://www.cnblogs.com/monkeyT/p/9838190.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值