PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.19k stars 5.57k forks source link

cnn op表现异常问题:同样的emb经过cnn op得到不同的结果 #23876

Closed zhengxiao-yu closed 1 year ago

zhengxiao-yu commented 4 years ago

在训练后的评估阶段 相同的emb前后通过fluid.nets.sequence_conv_pool得到的tensor value不一样 关键组网代码: image

具体的复现和实验步骤见:http://wiki.baidu.com/display/~zhengxiaoyu/simnet-cnn

MRXLT commented 4 years ago

你好,这个应该属于正常现象,embedding对于每个token的映射是固定的,所以embedding层的求和在正负title交换位置后还是相同的,但是embedding层输出的数据排列是不同的,卷积后的结果不仅与数据的值有关,也与数据的排列有关,所以会导致交换位置后卷积层输出不一致

zhengxiao-yu commented 4 years ago

你好,这个应该属于正常现象,embedding对于每个token的映射是固定的,所以embedding层的求和在正负title交换位置后还是相同的,但是embedding层输出的数据排列是不同的,卷积后的结果不仅与数据的值有关,也与数据的排列有关,所以会导致交换位置后卷积层输出不一致

你好,我这里实验两条数据,两条数据的正负title不仅token一致,token的排列也是一致的,也就是说,第一条数据的正title等于第二条数据的负title;交互位置不是说同一个title里的token交换位置了,是不同样本的正负title交换位置了;麻烦再帮看下哈

zhengxiao-yu commented 4 years ago

image image 完整的组网过程如上

zhengxiao-yu commented 4 years ago

上次的实验,评估两条换了正负title位置的样本的program是不同的;这次实验用了同一个评估的program,同样的title的emb层(emb是相同的)先后经过同一个program的cnn层,结果是有diff的