【问题标题】:How to create a Pytorch network with mixed categorical and continuous matrix input如何创建具有混合分类和连续矩阵输入的 Pytorch 网络
【发布时间】:2020-07-02 02:26:26
【问题描述】:

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

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

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

【问题讨论】:

  • 一种高效的特征提取方法,通过将整个数据集通过卷积基进行管道传输并将输出收集到 NumPy 数组。然后这个数组成为我们的新数据集。反过来,我们可以使用这个新数据集作为新分类器的训练数据。

标签: deep-learning neural-network pytorch conv-neural-network


【解决方案1】:

从分类数据创建连续值的最常用方法是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])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2022-12-08
    • 2015-01-12
    相关资源
    最近更新 更多