从神经网络调整特征向量
Resize feature vector from neural network
我正在尝试执行两个嵌入(文本和视觉)的近似任务。
对于视觉嵌入,我使用 VGG 作为编码器。输出是 1x1000
嵌入。对于文本编码器,我使用的是输出形状为 1x712
的 Transformer。我想要的是将这两个向量转换为相同的维度 512.
img_features.shape, txt_features.shape = (1,1000),(1,712)
如何在 PyTorch 中实现?
在每个架构中添加最后一层,将输出建模为 512?
您可以应用可微 PCA 运算符,例如 torch.pca_lowrank
。
或者,一个更简单的解决方案是使用两个完全连接的适配器层来学习两个映射。一个用于图像特征 1000 -> n
,另一个用于文本特征:712 -> n
。然后您可以选择一种融合策略来组合形状为 (1,n)
的两个特征:要么使用串联,逐点 addition/multiplication(在这些情况下 n
应该等于 512
。 Esle你可以学习最终映射n*2 -> 512
.
我正在尝试执行两个嵌入(文本和视觉)的近似任务。
对于视觉嵌入,我使用 VGG 作为编码器。输出是 1x1000
嵌入。对于文本编码器,我使用的是输出形状为 1x712
的 Transformer。我想要的是将这两个向量转换为相同的维度 512.
img_features.shape, txt_features.shape = (1,1000),(1,712)
如何在 PyTorch 中实现? 在每个架构中添加最后一层,将输出建模为 512?
您可以应用可微 PCA 运算符,例如
torch.pca_lowrank
。或者,一个更简单的解决方案是使用两个完全连接的适配器层来学习两个映射。一个用于图像特征
1000 -> n
,另一个用于文本特征:712 -> n
。然后您可以选择一种融合策略来组合形状为(1,n)
的两个特征:要么使用串联,逐点 addition/multiplication(在这些情况下n
应该等于512
。 Esle你可以学习最终映射n*2 -> 512
.