首页 > 解决方案 > (NLP, TextCNN) 为什么 in_channels 等于 torch.nn.Conv1d 中的嵌入大小?

问题描述

如果我们应用torch.nn.Conv2d到可以理解为 3 个二维矩阵的“RGB”图像,那么参数in_channels对应于 3 个通道“R”、“G”和“B”。而在我看来,一个形状为的嵌入句子[sentence length, embedding size]应该被认为是1个二维矩阵,那么在这种情况下,为什么参数in_channels不是1而是嵌入大小在torch.nn.Conv1d,而不是相同的含义torch.nn.Conv2d

你能解释一下nlp / TextCNN中inin_channels的真正含义是什么吗?torch.nn.Conv1d为什么不同于torch.nn.Conv2d?

谢谢!

标签: nlppytorchconv-neural-network

解决方案


在使用 Conv1d 时,嵌入维度可以视为 NLP 中的 in_channels。

解释
-假设您尝试输入一个长度为“N”的句子,如下所示-
我是这个...... N的用户。
所有这些单词都转换为单词嵌入,比如E维。
这个向量的维度是 --> [N, E]
如果你考虑一批批量大小为“B”的输入句子 --> [B, N, E]

因此,现在您可以将其称为:-

x = nn.Conv1d(in_channels = E, out_channels = .......)

看看 - https://gist.github.com/spro/c87cc706625b8a54e604fb1024106556


推荐阅读