concatenation - 在pytorch中连接两个不同形状的火炬张量
问题描述
我有两个火炬张量。一种有形[64, 4, 300]
,一种有形[64, 300]
。如何连接这两个张量以获得 shape 的结果张量[64, 5, 300]
。我知道tensor.cat
用于此的函数,但为了使用该函数,我需要重塑第二个张量以匹配张量的维数。我听说不应该对张量进行整形,因为它可能会弄乱张量中的数据。我该如何进行这种连接?
我尝试过重塑,但以下部分让我对这种重塑更加怀疑。
a = torch.rand(64,300)
a1 = a.reshape(64,1,300)
list(a1[0]) == list(a)
Out[32]: False
解决方案
您必须torch.cat
沿第一个维度使用并unsqueeze
在第一个维度上使用,如下所示:
import torch
first = torch.randn(64, 4, 300)
second = torch.randn(64, 300)
torch.cat((first, second.unsqueeze(dim=1)), dim=1)
# Shape: [64, 5, 300]
它不会弄乱您的数据,它只会增加表面1
维度(reshape
无论如何都不会正确完成)。
推荐阅读
- amazon-web-services - AWS Glue 布尔转换
- kotlin - Kotlin 垃圾收集强引用 lambda
- javascript - 在更改时使用 JsonSchemaForm 来更新字段的内容
- javascript - 使用 MediaRecorder 将音频和视频流合并到一个文件中
- android - 为什么 Android Studio 显示 setupWithNavController 不存在?
- javascript - 在 setTimeout 中,函数正在读取旧版本的全局变量
- angular - 当检测到对不同变量的更改时,如何自动更新 Angular 6 组件变量?
- asp.net - 引导内容在 ASP.NET 中无法正确呈现
- ios - 如何在 willDisplayCell 回调中重新加载 collectionView 的单个单元格?
- c# - 无法识别的转义序列 CS1009