您的位置:首页 > 其它

关于CNN的小知识

2018-01-22 11:28 134 查看
CNN知识1:

宽卷积:句子长度为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知识2:

目前应用在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]


https://www.cnblogs.com/Joyce-song94/p/7277871.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息