PyTorch中文本输入的卷积神经网络

PyTorch中文本输入的卷积神经网络,pytorch,conv-neural-network,Pytorch,Conv Neural Network,我正在尝试使用CNN实现一个新的应用程序。据我所知,对于文本数据,我们应该使用一维卷积。我在pytorch中看到了一个使用Conv2d的示例,但我想知道如何将Conv1d应用于文本?或者,这实际上是不可能的 以下是我的模型场景: Number of in-channels: 1, Number of out-channels: 128 Kernel size : 3 (only want to consider trigrams) Batch size : 16 所以,我将提供形状张量,其中

我正在尝试使用CNN实现一个新的应用程序。据我所知,对于文本数据,我们应该使用一维卷积。我在pytorch中看到了一个使用Conv2d的示例,但我想知道如何将Conv1d应用于文本?或者,这实际上是不可能的

以下是我的模型场景:

Number of in-channels: 1, Number of out-channels: 128 
Kernel size : 3 (only want to consider trigrams)
Batch size : 16
所以,我将提供形状张量,其中28是一个句子的长度。我想使用Conv1d,它将为我提供长度为26的128个特征图(因为我正在考虑三叉图)


我不确定如何为此设置定义nn.Conv1d()。我可以使用Conv2d,但想知道使用Conv1d是否可以实现同样的效果?

虽然我不使用文本数据,但当前形式的输入张量只能使用Conv2d。使用conv1d的一种可能方法是将嵌入连接到形状张量中,例如。您可以使用pytorch中的
视图
对输入进行重塑。

将Conv1d和Pool1d层转换为RNN解决了我的问题

<> P>这样,在使用<代码> NN时,需要考虑嵌入维数作为通道数。
m = nn.Conv1d(200, 10, 2) # in-channels = 200, out-channels = 10
input = Variable(torch.randn(10, 200, 5)) # 200 = embedding dim, 5 = seq length
feature_maps = m(input)
print(feature_maps.size()) # feature_maps size = 10,10,4 

300是从哪里来的?300是嵌入维度。谢谢分享解决方案!我一直在尝试实现同一个网络,但只找到了使用2D卷积的例子。这个例子正是我想要的!