暂无分类
暂无标签
发布于2021-02-27 11:50 阅读(1005) 评论(0) 点赞(17) 收藏(1)
0
1
2
3
4
5
6
def cat(tensors, dim) -> Tensor
a = torch.rand(4, 32, 8) # 含义: 4个班级,每个班级32个人,每个人8门课成绩
b = torch.rand(5, 32, 8) # 含义: 5个班级,每个班级32个人,每个人8门课成绩
# 合并成绩单
c = torch.cat([a,b], dim=0)
print(c.shape) # torch.Size([9, 32, 8]) -> 9个班级,每个班级32个人,每个人8门课成绩
解释:从班级维度( 0D )将成绩进行合并,两个 Tensor 中的 0D 中的值可以不同,但是其他维度上的值必须相同
二维矩阵理解 cat 函数
按行拼接:Tensor1 是 3 行 4 列,Tensor2 是 2 行 4列,将 Tensor1 和 Tensor2 按行拼接,变成 Tensor3 是 5 行 4 列
按列拼接:Tensor1 是 3 行 4 列,Tensor2 是 3 行 5 列,将 Tensor1 和 Tensor2 按行拼接,变成 Tensor3 是 3 行 9 列
def stack(tensors, dim) -> Tensor
a = torch.rand(32, 8) # 含义: A班级32个人,每个人8门课成绩
b = torch.rand(32, 8) # 含义: B班级32个人,每个人8门课成绩
c = torch.rand(32, 8) # 含义: C班级32个人,每个人8门课成绩
# 将三个班级用一个Tensor表示:增加一个维度表示班级
d = torch.stack([a, b, c], dim=0)
print(d.shape) # torch.Size([3, 32, 8]) -> 含义:3个班级,每个班级32个人,每个人8门课成绩
def split(split_size, dim=0)
d = torch.rand(3, 32, 8) # 含义:3个班级,每个班级32个人,每个人8门课成绩
# 将这个Tensor按照班级维度进行拆分成三个班级Tensor
a, b, c = d.split([1, 1, 1], dim=0)
print(a.shape) # torch.Size([1, 32, 8]) -> 含义: A班级32个人,每个人8门课成绩
print(b.shape) # torch.Size([1, 32, 8]) -> 含义: B班级32个人,每个人8门课成绩
print(c.shape) # torch.Size([1, 32, 8]) -> 含义: C班级32个人,每个人8门课成绩
c = torch.rand(4, 32, 8) # 含义:4个班级,每个班级32个人,每个人8门课成绩
# 将这个Tensor按照班级维度拆分成两个班级为一个的Tensor
a, b = c.split(2, dim=0)
print(a.shape) # torch.Size([2, 32, 8]) -> 含义: 该Tensor有2个班级,每个班级32个人,每个人8门课成绩
print(b.shape) # torch.Size([2, 32, 8]) -> 含义: 该Tensor有2个班级,每个班级32个人,每个人8门课成绩
可能的报错:拆分的值 与 接收Tensor的变量的个数 不合适时
ValueError: not enough values to unpack (expected 3, got 2)
ValueError: too many values to unpack (expected 3)
def chunk(chunks, dim=0) -> List of Tensors
chunks:要产生Tensor的个数
dim:拆分的维度
功能:将维度为 dim 中的值平均分给chunks个Tensor
按照某维度的数量来拆分
d = torch.rand(6, 32, 8) # 含义:6个班级,每个班级32个人,每个人8门课成绩
a, b, c = d.chunk(3, dim=0)
print(a.shape) # torch.Size([2, 32, 8]) -> 含义: 该Tensor有2个班级,每个班级32个人,每个人8门课成绩
print(b.shape) # torch.Size([2, 32, 8]) -> 含义: 该Tensor有2个班级,每个班级32个人,每个人8门课成绩
print(c.shape) # torch.Size([2, 32, 8]) -> 含义: 该Tensor有2个班级,每个班级32个人,每个人8门课成绩
解释:将 d 中的 dim 为 0 的维度中的值平均分给 3 个Tensor
故产生的 3 个 Tensor 中 dim 为 0 的值为 6 / 3 = 2
原文链接:https://blog.csdn.net/weixin_45437022/article/details/114133162
0
1
2
3
4
5
作者:83whjh
链接: https://www.pythonheidong.com/blog/article/859029/d202a429adaae39a6038/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!