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

标签 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 以便它们可以连接。

关于deep-learning - 如何创建具有混合分类和连续矩阵输入的 Pytorch 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62242396/

相关文章:

python - Keras function api,手动设置权重到层

tensorflow - 有没有办法使用 Tensorflow(使用 Keras)或 PyTorch 删除 NN 层之间的 1-2(或更多)特定神经元连接?

parameters - 如何计算 3D 卷积层的可训练参数数量?

random - 在 TensorFlow 图中使用 if 条件

python - 如何为 tensorflow 多GPU代码实现批量归一化层

r - R中的包 ‘neuralnet’,修正线性单元(ReLU)激活函数?

python - 保存和 fast.ai v1 ULMFiT 模型。到/从磁盘

machine-learning - 虚拟批量标准化和批量标准化有什么区别?

python - 在不使用数据加载器的情况下转换每个训练点

pytorch - 如何在源代码中查找从torch._C导入的函数