LChanger
LChanger
> > 就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置) > > 词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。 > > 正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram思想中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。 我也感觉应该把t也加上,否则的话2-gram无法体现上下字的联系,3-gram在此变成了2-gram
> > > @Liujish931 我看了一下具体代码,只有frontend.py里面的定义的model设置了eval()模式。但是真正做inference的model, `.modules.elmo.ElmobiLm` 没有设置eval()模式。所以应该还是在inference的时候做了dropout > > > > > > 创建模型的get_model() 里面最后有model.eval(), modules.elmo.ElmobiLm只是整个模型的子模型 所以也会被设置为0 而且你可以运行的时候看 的确所有的dropout都是0 > > 没错 eval() 会影响所有子模型的dropout和 batch normalisation, pytorch doc里有 > >...
对啊,我也不太明白,而且这样的话,同一个batch输入两次,岂不是每次结果都不一样?