[Python] 更改矩阵形状:reshape(m,n)、view(m,n)和view_as(tensor)

.reshape(m,n).view(m,n)实质上是将元素重组为新的shape

.reshape(m,n)只可用于numpyndarray,不可用于torchtensor

.view(m,n)对于numpyndarraytorchtensor都可用
(即:对于tensor只能用.view(m,n))。

示例如下:

import numpy as np
import torch

# 生成 numpy 的 ndarray, 3行4列
b=np.array([[ 0, 1, 2,3],
            [ 4,5,6,7],
            [ 8,9, 10,11]])
print(b)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(b.shape)
# (3, 4)

# 用 .reshape(m,n) 更改 a 的形状为4行3列
a=b.reshape(4,3)
print(a)
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]]
print(a.shape)
# (4, 3)

# 将 numpy 的 ndarray 改为 torch 的 tensor,3行4列
c=torch.from_numpy(b)
print(c)
# tensor([[ 0,  1,  2,  3],
#         [ 4,  5,  6,  7],
#         [ 8,  9, 10, 11]], dtype=torch.int32)
print(c.shape)
# torch.Size([3, 4])

# 用 .view(m,n) 更改 c 的形状为4行3列
d=c.view(4,3)
print(d)
# tensor([[ 0,  1,  2],
#         [ 3,  4,  5],
#         [ 6,  7,  8],
#         [ 9, 10, 11]], dtype=torch.int32)
print(d.shape)
# torch.Size([4, 3])

# 用 .reshape(m,n) 更改 c 的形状为4行3列
e=c.reshape(4,3)
print(e)
# tensor([[ 0,  1,  2],
#         [ 3,  4,  5],
#         [ 6,  7,  8],
#         [ 9, 10, 11]], dtype=torch.int32)
print(e.shape)
# torch.Size([4, 3])

view_as(tensor)

返回与给定的tensor相同 shapetensor

示例:

a = torch.Tensor(2, 4)
b = a.view_as(torch.Tensor(4, 2))

print (b)
# tensor([[1.3712e-14, 6.4069e+02],
#         [4.3066e+21, 1.1824e+22],
#         [4.3066e+21, 6.3828e+28],
#         [3.8016e-39, 0.0000e+00]])
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值