2021-02-25

pytorch中的reshape函数

1.首先什么是reshape函数?
reshape函数是MATLAB中将指定的矩阵变换成特定维数矩阵一种函数,且矩阵中元素个数不变,函数可以重新调整矩阵的行数、列数、维数。函数语法为 B = A.reshape(size) 是指返回一个和A元素相同的n维数组,但是由向量size来决定重构数组维数的大小。下面看在jupyter中运行的代码示例。

intimport torch
import numpy
a = torch.rand(12) #创建一个0维的张量
print(a)
print(a.shape)

out:
tensor([0.3902, 0.0670, 0.2945, 0.3515, 0.0290, 0.7229, 0.8366, 0.4437, 0.4730,
        0.6963, 0.4553, 0.4144])
torch.Size([12])

int:
b = a.reshape(3,4) #通过reshape函数将数组改成了二维的
print(b)
print(b.shape)

out:
tensor([[0.3902, 0.0670, 0.2945, 0.3515],
        [0.0290, 0.7229, 0.8366, 0.4437],
        [0.4730, 0.6963, 0.4553, 0.4144]])
torch.Size([3, 4])

#如果你愿意也可以将其转化为三维的数组
int:
c = b.reshape(2,2,3)  #变成了三维的数组
print(c)  #形状的变化是基于数组元素所决定的
print(c.shape)

out:
tensor([[[0.3902, 0.0670, 0.2945],
         [0.3515, 0.0290, 0.7229]],

        [[0.8366, 0.4437, 0.4730],
         [0.6963, 0.4553, 0.4144]]])
torch.Size([2, 2, 3])

"""另外因为reshape函数生成的新数组和原始数组公用一个内存,
所以不管改变的是新的或者是旧的数组,另一个数组也会随之改变"""
int:
a[0] = 100 #可以很明显的观察到b随着a的改变而改变了
print(a) 
print(b)

out:
tensor([**1.0000e+02**, 6.6983e-02, 2.9452e-01, 3.5150e-01, 2.8957e-02, 7.2294e-01,
        8.3661e-01, 4.4366e-01, 4.7304e-01, 6.9634e-01, 4.5533e-01, 4.1437e-01])

tensor([[**1.0000e+02**, 6.6983e-02, 2.9452e-01, 3.5150e-01],
        [2.8957e-02, 7.2294e-01, 8.3661e-01, 4.4366e-01],
        [4.7304e-01, 6.9634e-01, 4.5533e-01, 4.1437e-01]])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值