第五步Train the whole model with RL时,没有ids_to_tokens
Closed this issue · 3 comments
yifanjun commented
可能我问了个很蠢的问题,但我确实不知道怎么处理。
在进行第五步训练时,会报错,说 "models/rl.model.py"第499行:
AttributeError: 'collections.OrderedDict' object has no attribute 'ids_to_tokens'
不太明白是不是因为版本原因。除了pytorch是1.9.0+cu111,其他的包我尝试都换成readme中的版本。请问有人遇到过这个问题么?
vkmu commented
我的transformers
版本是4.15.0。通过查看BertTokenizer
类的__init__()
源码可知,ids_to_tokens
不在vocab
里面。
self.vocab = load_vocab(vocab_file)
self.ids_to_tokens = collections.OrderedDict([(ids, tok) for tok, ids in self.vocab.items()])
RowitZou commented
可能我问了个很蠢的问题,但我确实不知道怎么处理。 在进行第五步训练时,会报错,说 "models/rl.model.py"第499行: AttributeError: 'collections.OrderedDict' object has no attribute 'ids_to_tokens' 不太明白是不是因为版本原因。除了pytorch是1.9.0+cu111,其他的包我尝试都换成readme中的版本。请问有人遇到过这个问题么?
能提供详细的Error Log吗?
yifanjun commented
我的
transformers
版本是4.15.0。通过查看BertTokenizer
类的__init__()
源码可知,ids_to_tokens
不在vocab
里面。self.vocab = load_vocab(vocab_file) self.ids_to_tokens = collections.OrderedDict([(ids, tok) for tok, ids in self.vocab.items()])
感谢,很有用。下面给出具体方案:
在src/models/rl_model.py
中,做出以下修改:
- 开头添加
from nltk import collections
__inti__()
方法中,在self.vocab=vocab
之后添加self.ids_to_tokens=collections.OrderedDict([(ids, tok) for tok, ids in self.vocab.items()])
- 第499行,修改为
words = [self.ids_to_tokens[w] for w in words]