如何创建具有混合分类和连续矩阵输入的 Pytorch 网络

sma*_*lis 2 neural-network deep-learning conv-neural-network pytorch

我正在创建一个网络网络,它将采用连续值矩阵以及一些表示为所有类向量的分类输入。

现在,我也在寻找通过卷积从矩阵中提取特征。但如果我将矩阵减少到 1 维并与类向量连接,这是不可能的。

有没有办法将其连接在一起作为单个输入?或者我是否必须创建两个单独的输入层,然后在卷积后以某种方式将它们连接起来?如果是后者,我要寻找什么功能?

Mic*_*ngo 5

从分类数据创建连续值的最常见方法是nn.Embedding。它创建可用类的可学习向量表示,使得两个相似的类(在特定上下文中)比两个不相似的类更接近。

当您有大小为[v]的类向量时,嵌入将创建大小为[v, embedding_size]的张量,其中每个类由长度为embedding_size的向量表示。

num_classes = 4
embedding_size = 10

embedding = nn.Embedding(num_classes, embedding_size)

class_vector = torch.tensor([1, 0, 3, 3, 2])

embedded_classes = embedding(class_vector)
embedded_classes.size() # => torch.Size([5, 10])
Run Code Online (Sandbox Code Playgroud)

如何将它们与连续矩阵结合起来取决于您的特定用例。如果您只想要一个一维向量,您可以展平并连接它们。另一方面,如果矩阵具有您想要保留的有意义的维度,您应该决定连接哪个维度有意义并调整 embedding_size以便它们可以连接。