新旧paddle sequence_conv_pool计算细节对比
Created by: onfireisme
1 新版本paddle 接口——https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/nets_cn/sequence_conv_pool_cn.html#sequence-conv-pool 这个参数跟论文中的text-cnn就一致了。 text input [A B C D E F G] 是个6 * embeding_size的矩阵 假定filter为3,卷积核矩阵就为3 * embeding_size,那么跟卷积核点乘就变成[ 0AB ABC BCD CDE DEF EFG FG0 ],是个7 * 1的矩阵。 有N个卷积,就变成7 * N的矩阵,最后做个max pooling变成1 * N的矩阵。
2 老版paddle 接口——https://www.paddlepaddle.org.cn/documentation/api/en/0.11.0/v2/config/networks.html 文档写的是 Text input => Context Projection => FC Layer => Pooling => Output. 同样,text input [A B C D E F G] 是个6 * embeding_size的矩阵 Context Projection ,设定filter为3,卷积核矩阵就为3 * embeding_size。那么跟卷积核点乘就变成[ 0AB ABC BCD CDE DEF EFG FG0 ],是个7*1的矩阵,并且我看这里都没有激活函数的设置参数。 FC Layer 这里是一个1 * hidden_size的矩阵?然后7 * 1 的矩阵和1 * hidden_size的矩阵全联接后就变成7 * hidden_size的矩阵。以及我看激活函数是放到这里了。 Pooling Pooling后就变成了 1 * hidden_size的矩阵。
两种方法计算得到的矩阵是一致的,但是中间计算细节是不同的。 以及我这边好奇的是,新paddle底层是怎么实现的,是复用了老paddle的这种做法,还是按照论文中的做法复现的。 以及老paddle这样子做的意义是什么?省计算量?