chinese_text_cnn
chinese_text_cnn copied to clipboard
标签数量问题
明明是二分类的数据,为何显示class_num=3呢?
同问
同问
多了个unk
可以将代码中:args.class_num = len(label_field.vocab) 换成:args.class_num = len(label_field.vocab) - 1。因为代码用的时候是label_field.build_vocab(train_dataset, dev_dataset) 用的制作词汇表的代码,而词汇表中有一个unk,就是没有出现在词汇表中单词的代表形式,所以会多一个unk。label_field只对标签数量产生影响,只要把标签数量改回原始数量就行了。
Batch[1800] - loss: 0.009499 acc: 100.0000%(128/128) Evaluation - loss: 0.000026 acc: 94.0000%(6616/7000) early stop by 1000 steps, acc: 94.0000% 这个是作者跑出的结果;
Batch[2200] - loss: 0.008443 acc: 100.0000%(128/128) Evaluation - loss: 0.000025 acc: 94.7429%(6632/7000) Saving best model, acc: 94.7429% 这个是我跑出的结果
请问这个结果,只是args.class_num = len(label_field.vocab) 换成:args.class_num = len(label_field.vocab) - 1吗?: Batch[2200] - loss: 0.008443 acc: 100.0000%(128/128) Evaluation - loss: 0.000025 acc: 94.7429%(6632/7000) Saving best model, acc: 94.7429%
是的,其他的我记得我也没做修改,就搭建了环境!
@caoxiaopeng123 十分感谢
或者在配置label_field的时候可以设置关掉label_field = data.Field(sequential=False, unk_token=None)
我自己写的时候发现这样len(label_field.vocab)输出是正常的, 是2
大佬,那为什么我只有1000+条数据,为啥args.vocabulary_size = len(text_field.vocab)是4210多个?是因为我1000+条的数据构成了一个字典一样的东西,然后相当于字典里面存了4210个词汇吗?