CNN知识1:
什么是卷积?什么是池化:
https://blog.csdn.net/myboyliu2007/article/details/51535679
CNN知识2:
宽卷积:句子长度为S,kernel的大小是K,则卷积后的长度是S+K-1, 其实是句子的前后各padding了(k-1)个零
窄卷积:句子没有进行pad, 卷积后的长度是S-K+1
CNN只是2: pytorch中CNN的方法理解
self.sent_cnn=nn.Conv2d(in_channels=1, out_channels=num_filters, kernel_size = (filter_size, embedding_size), padding=(filter_size-1, 0))
out = self.sent_cnn(x), 其中
out的维度是[1, num_filters, (sentence_length+filter_size)-1, 1],我们要保留的就是第1维和第2维
https://zhuanlan.zhihu.com/p/27441587
CNN知识3:
目前应用在NLP任务中的除了max-pooling over time以外,由陆续出现了很多pooling 的形式,比如 Kmax pooling, chunk-max pooling等.具体的区别在下面的这个链接:
http://blog.csdn.net/malefactor/article/details/51078135
kmax pooling的实现:
import torch
def kmax_pooling(x, dim, k):
index = x.topk(k, dim=dim)[1].sort(dim=dim)[0]
return x.gather(dim, index)
x = torch.rand(4, 5, 6, 10)
print(x) # [torch.FloatTensor of size 4x5x6x10]
y = kmax_pooling(x, 3, 5)
print(y) # # [torch.FloatTensor of size 4x5x6x5]

2万+

被折叠的 条评论
为什么被折叠?



