torch.max()、torch.sum()、A.unsqueeze()、torch.view()、x.permute()、x.transpose()

torch.max()

举例:

import torch

x = torch.randn(4, 3)
print(x)

# 沿着行取最大值
max_value, max_idx = torch.max(x, dim=1)

# 每一行的最大值
max_value

# 每一行最大值的下标
max_idx

结果:

tensor([[-0.1317,  0.1343,  0.9080],
        [-2.5571,  1.0907,  0.4270],
        [-0.5427, -0.5975, -0.3776],
        [ 1.7802,  1.0238,  0.1180]])
tensor([ 0.9080,  1.0907, -0.3776,  1.7802])
 2
 2
 2
 2
[torch.LongTensor of size 4]

torch.sum()

# 沿着行对 x 求和
sum_x = torch.sum(x, dim=1)
print(sum_x)

结果:

 0.9751
 0.6212
-4.5228
-2.1997
[torch.FloatTensor of size 4]

 

x.unsqueeze()、x.squeeze()

# 增加维度或者减少维度
print(x.shape)
x = x.unsqueeze(0) # 在第一维增加
print(x.shape)

结果:

torch.Size([4, 3])
torch.Size([1, 4, 3])
x = x.unsqueeze(1) # 在第二维增加
print(x.shape)

结果:

torch.Size([1, 1, 4, 3])
x = x.squeeze(0) # 减少第一维
print(x.shape)

结果:

torch.Size([1, 4, 3])
x = x.squeeze() # 将 tensor 中所有的一维全部都去掉
print(x.shape)

结果:

torch.Size([4, 3])

x.permute()、x.transpose()

可以进行维度的变换

x = torch.randn(3, 4, 5)
print(x.shape)

# 使用permute和transpose进行维度交换
x = x.permute(1, 0, 2) # permute 可以重新排列 tensor 的维度
print(x.shape)

x = x.transpose(0, 2)  # transpose 交换 tensor 中的两个维度
print(x.shape)

结果:

torch.Size([3, 4, 5])
torch.Size([4, 3, 5])
torch.Size([5, 3, 4])

torch.view()

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如,
 

# 使用 view 对 tensor 进行 reshape
x = torch.randn(3, 4, 5)
print(x.shape)

x = x.view(-1, 5) # -1 表示任意的大小,总共60个元素,5列,所以就是显示12行,5 表示第二维变成 5
print(x.shape)

x = x.view(3, 20) # 重新 reshape 成 (3, 20) 的大小
print(x.shape)

结果:

torch.Size([3, 4, 5])
torch.Size([12, 5])
torch.Size([3, 20])

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值