如何解决“TypeError:int() 参数必须是字符串、类似字节的对象或实数,而不是‘NoneType’”

问题描述 投票:0回答:1

我尝试运行此代码:

EN_AR = load_dataset("iwslt2017", "iwslt2017-ar-en", split="train").select(range(2000))

def extract_languages(examples):
  inputs = [ex["ar"] for ex in examples['translation']]
  target = [ex["en"] for ex in examples['translation']]
  return {"inputs":inputs,"targets":target}

EN_AR = EN_AR.map(extract_languages,batched=True, remove_columns=["translation"])

from transformers import AutoTokenizer, MBart50TokenizerFast

model_name = "facebook/mbart-large-50"
tokenizer = AutoTokenizer.from_pretrained(model_name)
maxL = 128
def preprocess_func(examples):
  model_inputs = tokenizer(examples["inputs"],max_length=maxL,truncation=True)

  with tokenizer.as_target_tokenizer():
    labels = tokenizer(examples["targets"],max_length=maxL,truncation=True)

  model_inputs["labels"]= labels["input_ids"]
  return model_name

tokenized_datasets = EN_AR.map(preprocess_func, batched = True, remove_columns=["inputs","targets"])

但它一直告诉我


TypeError Traceback(最近一次调用最后一次) 在 () 中 13 返回模型名称 14 ---> 15 tokenized_datasets = EN_AR.map(preprocess_func,batched = True,remove_columns=>>>["inputs","targets"])

10帧 /usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_fast.py >convert_ids_to_tokens(self, ids,skip_special_tokens) 387 代币 = [] 388 表示 ids 中的索引: --> 389 索引 = int(索引) [第 390 章] 第391章 继续

TypeError:int() 参数必须是字符串、类似字节的对象或实数,而不是“NoneType”

我从 Hugging Face 网站上获取了这段代码进行翻译预处理,但我不知道为什么它对我不起作用

python huggingface-transformers huggingface huggingface-tokenizers
1个回答
0
投票

欢迎光临。

这个问题表明您是 Python 新手,所以如果我介绍了一些基础知识,请原谅我。

Python 中的每个变量和表达式都有一个类型。例如,您可以输入

type(5)
并得到
<class 'int'>
。当没有答案时,函数通常会返回类型为
None
的值
<class 'NoneType'>

int()
函数将变量从一种类型转换为另一种类型。例如,
int(3)
int(3.5)
int("3")
都是 3。
int(None)
无法转换为整数,并给出您所看到的
TypeError
消息。

不幸的是,对

int
的调用位于调用堆栈中的某个位置。我建议您使用打印语句或调试器来查看正在加载的数据集,特别是对于您期望整数权重但缺少它的地方。

添加有关其工作原理的评论!

© www.soinside.com 2019 - 2024. All rights reserved.