[BUG/Help] <title>ValueError: 130001 is not in list
WanJuWuGo opened this issue · 8 comments
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
ptuning时候max_steps改大一点点, 就会这样,是我哪里搞错了吗
Expected Behavior
。
Steps To Reproduce
。
Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :
Anything else?
。
代码和模型版本都是最新
#432
看看这个,应该替换下output模型内的文件就可以解决
mask_token = gMASK if gMASK in input_ids else MASK
这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK)
mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉
mask_positions =[]
for seq in input_ids:
mask_token = gMASK if gMASK in seq else MASK
mask_positions.append(seq.tolist().index(mask_token))
mask_token = gMASK if gMASK in input_ids else MASK 这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK) mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉 mask_positions =[] for seq in input_ids: mask_token = gMASK if gMASK in seq else MASK mask_positions.append(seq.tolist().index(mask_token))
目前的实现里都是用gMASK的,如果没用gMASK就是出错了
mask_token = gMASK if gMASK in input_ids else MASK 这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK) mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉 mask_positions =[] for seq in input_ids: mask_token = gMASK if gMASK in seq else MASK mask_positions.append(seq.tolist().index(mask_token))目前的实现里都是用gMASK的,如果没用gMASK就是出错了
如果数据本身存在mask,在
tokenizer.build_inputs_with_special_tokens(a_ids, b_ids)就不会加入gMask
mask_token = gMASK if gMASK in input_ids else MASK 这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK) mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉 mask_positions =[] for seq in input_ids: mask_token = gMASK if gMASK in seq else MASK mask_positions.append(seq.tolist().index(mask_token))目前的实现里都是用gMASK的,如果没用gMASK就是出错了
那如果数据里有mask的情况,数据需要把mask去掉?
mask_token = gMASK if gMASK in input_ids else MASK 这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK) mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉 mask_positions =[] for seq in input_ids: mask_token = gMASK if gMASK in seq else MASK mask_positions.append(seq.tolist().index(mask_token))目前的实现里都是用gMASK的,如果没用gMASK就是出错了
那如果数据里有mask的情况,数据需要把mask去掉?
哦原来是这样,我终于知道出现这种错误的都是什么情况了。
mask_token = gMASK if gMASK in input_ids else MASK 这句代码有问题,input_ids为一个batch,一个batch只要有一个example中存在gMASK则mask_token就等于gMASK。
这样会导致下面这句报错(假设input_ids有一条数据存在gMASK,一条数据存在MASK) mask_positions = [seq.tolist().index(mask_token) for seq in input_ids]
按照下面写 把原来那两句注释掉 mask_positions =[] for seq in input_ids: mask_token = gMASK if gMASK in seq else MASK mask_positions.append(seq.tolist().index(mask_token))目前的实现里都是用gMASK的,如果没用gMASK就是出错了
那如果数据里有mask的情况,数据需要把mask去掉?
现在应该已经修复了,不管数据里有没有 [MASK],tokenizer都会在末尾加入 [gMASK]。不过还是建议把数据里的 [MASK] 去掉。目前transformers
没有提供可以不编码这些special token的选项。