我尝试运行此代码:
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 新手,所以如果我介绍了一些基础知识,请原谅我。
Python 中的每个变量和表达式都有一个类型。例如,您可以输入
type(5)
并得到 <class 'int'>
。当没有答案时,函数通常会返回类型为 None
的值 <class 'NoneType'>
。
int()
函数将变量从一种类型转换为另一种类型。例如,int(3)
、int(3.5)
和int("3")
都是 3。int(None)
无法转换为整数,并给出您所看到的 TypeError
消息。
不幸的是,对
int
的调用位于调用堆栈中的某个位置。我建议您使用打印语句或调试器来查看正在加载的数据集,特别是对于您期望整数权重但缺少它的地方。
添加有关其工作原理的评论!