lipiji / SongNet

Code for ACL 2020 paper "Rigid Formats Controlled Text Generation":https://www.aclweb.org/anthology/2020.acl-main.68/
MIT License
230 stars 40 forks source link

model部分使用work函数输出的词是随机中文 #14

Closed Imposingapple closed 3 years ago

Imposingapple commented 3 years ago

您好! 最近在研究您的代码,您在做模型测试的时候,使用的是work_incremental函数,我这边看到您的work函数,去除了incremental_state然后用了该函数,但是输出的时候输出的是随机的中文,而且标点符号也不会显示,如下面的截图,请问这是什么情况? 微信图片_20210330214711

lipiji commented 3 years ago

@Imposingapple 可以说一下你如何改的code。

Imposingapple commented 3 years ago

因为好像按我理解incrermental方式只在解码的时候用到,所以我只在test.py的top_k_inc函数中,将work_incremental的调用改成了work的调用,然后这个函数后面注释掉了incremental_state["bidx"] = bidx这一行。请问是我这样改的有问题嘛?

lipiji commented 3 years ago

因为好像按我理解incrermental方式只在解码的时候用到,所以我只在test.py的top_k_inc函数中,将work_incremental的调用改成了work的调用,然后这个函数后面注释掉了incremental_state["bidx"] = bidx这一行。请问是我这样改的有问题嘛?

@Imposingapple 嗯,你直接用top_k()这个解码函数就行了。不用改别的。

Imposingapple commented 3 years ago

您好,我用了top_k()解码函数,然后对同样的测试数据,对比了结果,结果发现top_k函数的输出,会出现不少symbol token(比如)。 这是incremental decoding的输出: 1i 2i

这是直接用work函数的输出: 1o 2o

两个用的是相同的数据点,我代码部分应该也是没有更改过的,请问您这边跑一下也是这样的结果吗?

lipiji commented 3 years ago

@Imposingapple 抱歉,是bug,已fix。因实验基本用_inc,所以没发现:)