NLP的时间卷积

NLP的时间卷积,nlp,neural-network,backpropagation,conv-neural-network,Nlp,Neural Network,Backpropagation,Conv Neural Network,我试图遵循Kalchbrenner et al.2014()(以及过去两年将CNN应用于NLP任务的大部分论文),并实现他们描述的CNN模型。不幸的是,虽然我的前传正确,但我似乎对坡度有问题 我所做的是输入的完全卷积,每行,每内核,每输入一次,在前向传递中(没有旋转,所以它实际上是一个相关性)。 然后,对于梯度wrt W,每个行、每个内核、每个输入(同样,未旋转)的输入与先前增量的有效卷积。 最后,对于梯度wrt x,另一个有效的可渗透增量与W的卷积,同样,每行、每核、每输入(无旋转) 这将返回

我试图遵循Kalchbrenner et al.2014()(以及过去两年将CNN应用于NLP任务的大部分论文),并实现他们描述的CNN模型。不幸的是,虽然我的前传正确,但我似乎对坡度有问题

我所做的是输入的完全卷积,每行,每内核,每输入一次,在前向传递中(没有旋转,所以它实际上是一个相关性)。 然后,对于梯度wrt W,每个行、每个内核、每个输入(同样,未旋转)的输入与先前增量的有效卷积。 最后,对于梯度wrt x,另一个有效的可渗透增量与W的卷积,同样,每行、每核、每输入(无旋转)

这将返回正确的大小和维度,但在连接层时,渐变检查实际上处于关闭状态。当测试单个conv层时,结果是正确的,当连接两个conv层时,结果也是正确的,但是,当添加MLP、池等时,结果开始变差。所有其他类型的层也分别进行了测试,它们也是正确的,因此,我假设问题从梯度的计算开始。W_conv


有人有类似实现的想法或有用的链接吗?

我正在开发Torch 7中的一个实现。如果有帮助,Kalchenbrenner在其网站上发布了该网络的Matlab代码: