mayabot/mynlp

压缩cpp模型后,java加载模型预测出错

Opened this issue · 6 comments

cpp命令行结果
image
java 预测结果
image

java的预测代码

FastText model = FastText.loadCppModel(new File("E:\\Downloads\\model.ftz"));
//        Lexer lexer =Mynlp.instance().bigramLexer();
        long start = System.currentTimeMillis();
        String [] querys = new String[]{"北京大学在哪里","白羊座","金牛座"};
        for(int i=0;i <querys.length;i++){
            List<String> strings = Arrays.asList(querys[i].split(""));
            List<ScoreLabelPair> predict = model.predict(strings,1,0);
            System.out.println(predict.toString());
        }

        long end = System.currentTimeMillis();
        System.out.println("cost time:"+(end-start));

压缩用到的命令

fasttext quantize -input train.txt -output model -qnorm -retrain -epoch 5 -cutoff 100000

想请教下大佬的问题的所在。

暂时看不出问题

  1. 你确定训练也是单字分词?
  2. 在不压缩的情况下,是否正常?

暂时看不出问题

  1. 你确定训练也是单字分词?
  2. 在不压缩的情况下,是否正常?

确定是单字训练, 不压缩是正常的。

该是新版本又变化了

该是新版本又变化了

意思是建议我用老版本的fasttext编译一版?

补充下额外的问题,经过一些测试发现,cpp训练的模型,loss除了softmax,像ns,hs都存在类似溢出现象,具体体现就是所有预测结果均集中于第0个标签,且prob为1.00001。

感谢
要是能帮我fix这个问题,就太棒了