我有两个张量:
a = torch.randn((1, 30, 1220)) # represents text embedding vector (30 spans, each with embedding size of 1220)
b = torch.randn((1, 128, 256)) # represents image features obtained from a pretrained CNN (object detection)
如何将b
中的所有内容连接到a
的30个跨距中的每一个跨距
如何将整个b
连接到整个a
这就是我想做的:
作者仅提供了以下文本:
我正在从3d点云(类似于CNN,但适用于3d)中提取特征(以红色勾勒),如下所示:
由于这些表示来自两种不同的模式(即文本和图像),并且它们包含对最终目标非常重要的有价值的特征,因此我建议以“可学习”的方式融合它们,而不仅仅是串联或添加。此外,这种可学习的权重(特征之间)将是最佳的,因为在某些情况下,一种表示方式将比另一种表示方式更有用,而在其他情况下,反之亦然
请注意,在您将要实现的这个融合模块中,也可能发生简单的连接。对于实际实现,有几种类型的融合技术。例如简单熔合、冷熔合等(参见Fusion Models for Improved Visual Captioning, 2021)
例如,一个简单的想法是使用一个简单的线性层将其中一个特征投影到与另一个相同的维度,然后进行简单的连接,如果需要,可以使用一些可选的非线性
你想把两个不同形状的张量组合起来,没有简单的方法把它们连接起来。两个张量都包含关于同一实例的信息:您希望通过两种不同的模式嵌入特征来表征的元素:文本和视觉
对我来说唯一有意义的方法是学习两个独立的层,将文本嵌入和图像特征映射到一个公共空间,在这个公共空间中可以轻松地融合它们
此映射所采用的设计完全取决于您。当然,这种映射层需要通过培训来学习,即在另一端应用某种监督
相关问题 更多 >
编程相关推荐