赋有美感的设计——torch平台cnn-dot-attention的设计及实现

1.背景:分类任务

2.cnn层的设计:

思路:将embedding维度(300维)的向量映射为新的embedding,new-embedding的数目最好比原来的大,因此设计256+256+512,在embedding维做

concat,如果numlayer为3层,则new_emb = 1024; 若为2层,则new_emb= 512, 比原有的embedding大,多层设计,适当的增加权重与网络复杂度。 

 cnn层的实现如下图解所示:


3.dot-attention的设计

思路:在许多应用场景下,如问答等,决定分类的不是一只是一个seq, 设计一个显示两个seq相关性的算子网络段。

实现图解:


4.loss 的问题:

这是pytorch的一个坑,crossentropyloss相当于softmax加nullloss,与交叉熵不太相关。

crossentropyloss

如果要使用二进制交叉熵的话,

使用binary_crossentroyloss, 该函数是BCEloss的拓展,经过笔者实验,是mean(BCEloss),如果weight设置是平均的,

weight*BCEloss = binargy_crossentroyloss

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容