栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch中的拼接函数:cat()和stack()

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch中的拼接函数:cat()和stack()

文章目录
  • Ⅰ. cat([ Tensor a, Tensor b, ..., ...], dim = i )%a b c ... 个数为n
    • 一、作用
    • 二、常用
    • 三、特殊
    • 四、代码
  • Ⅱ. stack([ Tensor a, Tensor b, ..., ...], dim = i ]) %a b c ... 个数为n
    • 一、作用
    • 二、常用
    • 三、特殊
    • 四、代码

Ⅰ. cat([ Tensor a, Tensor b, …, …], dim = i )%a b c … 个数为n 一、作用

1-1. 各Tensor在第i个维度上拼接。各Tensor非拼接的维度上的维度数必须相同。见In[9]。 注:Tensor的维度指Tensor的索引值;如a = torch.size([2, 3, 4]),Tensor a第0维度上有2个维度、Tensor a第一维度上有3个维度等。

二、常用

2-1. 见代码In[8]

三、特殊

3-1. 意义:每张图片由原来RGB3个通道,变成了RGBα四个通道。见In[12] 。由两张半张照片拼接成一张照片,见In[16]。

四、代码
In[6]: a = torch.rand(4, 3, 32, 32)
In[7]: b = torch.rand(5, 3, 32, 32)
In[8]: torch.cat([a, b], dim = 0).shape
Out[8]: torch.Size([9, 3, 32, 32])
In[9]: torch.cat([a, b], dim = 1).shape
Traceback (most recent call last):
  File "E:minicondainstall-filelibsite-packagesIPythoncoreinteractiveshell.py", line 3397, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "", line 1, in 
    torch.cat([a, b], dim = 1).shape
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 4 but got size 5 for tensor number 1 in the list.
In[10]: a = torch.rand(4, 3, 32, 32)
In[11]: b = torch.rand(4, 1, 32, 32)
In[12]: torch.cat([a, b], dim = 1).shape
Out[12]: torch.Size([4, 4, 32, 32])
In[13]: a = torch.rand(4, 3, 32, 32)
In[14]: a = torch.rand(4, 3, 16, 32)
In[15]: b = torch.rand(4, 3, 16, 32)
In[16]: torch.cat([a, b], dim = 2).shape
Out[16]: torch.Size([4, 3, 32, 32])
Ⅱ. stack([ Tensor a, Tensor b, …, …], dim = i ]) %a b c … 个数为n 一、作用

1-1. 在原Tensor维度前增加一个维度。且该Tensor维度上的维度数为n,所有Tensor的Tensor维度上的维度数相同,见In[9] In[10]。

二、常用

2-1. 见In[5] In[8]

三、特殊

3-1. 意义:插入的维度上有两个维度,用一个维度表示Tensor a照片的一半,用另一个维度表示Tensor b照片的一半,见In[5]。插入的维度上有两个维度,可用来表示两个班级学生各科成绩单。

四、代码
In[2]: import torch
In[3]: a = torch.rand(4, 3, 16, 32)
In[4]: b = torch.rand(4, 3, 16, 32)
In[5]: torch.stack([a, b], dim = 2).shape
Out[5]: torch.Size([4, 3, 2, 16, 32])
In[6]: a = torch.rand(32, 8)
In[7]: b = torch.rand(32, 8)
In[8]: torch.stack([a, b], dim = 0).shape
Out[8]: torch.Size([2, 32, 8])
In[9]: a = torch.rand(32, 8)
In[10]: b = torch.rand(30, 8)
In[11]: torch.stack([a, b], dim = 0).shape
Traceback (most recent call last):
  File "E:minicondainstall-filelibsite-packagesIPythoncoreinteractiveshell.py", line 3397, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "", line 1, in 
    torch.stack([a, b], dim = 0).shape
RuntimeError: stack expects each tensor to be equal size, but got [32, 8] at entry 0 and [30, 8] at entry 1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号