yongzhuo / Keras-TextClassification

中文长文本分类、短句子分类、多标签分类、两句子相似度(Chinese Text Classification of Keras NLP, multi-label classify, or sentence classify, long or short),字词句向量嵌入层(embeddings)和网络层(graph)构建基类,FastText,TextCNN,CharCNN,TextRNN, RCNN, DCNN, DPCNN, VDCNN, CRNN, Bert, Xlnet, Albert, Attention, DeepMoji, HAN, 胶囊网络-CapsuleNet, Transformer-encode, Seq2seq, SWEM, LEAM, TextGCN
https://blog.csdn.net/rensihui
MIT License
1.78k stars 405 forks source link

val_acc达不到作者的效果 #2

Closed Veyronl closed 5 years ago

Veyronl commented 5 years ago

在全量数据上acc还不错,但是val_acc就低20%左右; 请问大佬用的输出的结果是在sample数据上的结果还是全量数据的结果?

yongzhuo commented 5 years ago

代码中的实验结果用的是全量语料140万训练集、4万验证集的,sample是随机取得100条训练验证语料,所以100条sample训练验证效果不会好的。此外随机初始化embedding效果可能不会很好,而且不大稳定

Veyronl commented 5 years ago

谢谢你的回复, 我就是用全量跑的,每个val_acc都比大佬低一点,我看大佬下面的train.py里面注释的一个epoch就能达到的acc; 目前跑了4个都会低一点,请问除了用全量数据外,还有额外需要修改的吗?(好像没发现其他的)

再次表示感谢.

yongzhuo commented 5 years ago

之前好像用了 'filters': [2, 3, 4, 5],不知道是不是这个原因,其他的应该就没有改过了

Veyronl commented 5 years ago

谢谢,我再试试

Veyronl commented 5 years ago

image 大佬, 用的FastText那个模型,val_acc还是达不到您的0.5029

yongzhuo commented 5 years ago

我又训练了一下,全量数据60%,估计还是和random初始化有关吧 1424384/1425170 [============================>.] - ETA: 0s - loss: 0.9388 - acc: 0.7100 1425170/1425170 [==============================] - 87s 61us/step - loss: 0.9388 - acc: 0.7100 - val_loss: 1.5648 - val_acc: 0.6077

Epoch 00001: val_loss improved from inf to 1.56478, saving model to D:/workspace/pythonMyCode/django_project/Keras-TextClassification/keras_textclassification/data/model/fast_text/model_fast_text.f5 Epoch 2/20

Veyronl commented 5 years ago

大佬指的是random的embedding吧

yongzhuo commented 5 years ago

嗯嗯,应该能达到60%吧

Veyronl commented 5 years ago

image 在验证集上还达不到,val_losss不再下降了,看来很有可能跟这个有关系; 但是random的这四个[PAD]、[UNK]、[BOS]、[EOS];比较难造成这么大的差异吧 还有我每次运行都会随机初始化这几个吗?我第二次run的也是类似的效果

Veyronl commented 5 years ago

image 大佬,你分析的是对的,我run第三次的时候和你接近的结果,这个有点随机啊(汗颜), 是不是BOS和EOS的随机影响更大呢?那如果在训练词向量的时候加上这两个标记,直接通过语料训练(word2vec或者bert)出来是否更好呢

yongzhuo commented 5 years ago

sample的是达不到,全量的应该可以。默认的超参是字符char大约有20000左右,这谢些随机初始化可能会有影响

yongzhuo commented 5 years ago

paper上加了预训练模型(word2vec、glove、bert)效果会好,无论静态的还是动态的

Veyronl commented 5 years ago

嗯,没细看代码呢 拜读代码去啦;有问题再来请教 再次表示感谢大佬