diff --git a/chapters/zh-CN/chapter3/6.mdx b/chapters/zh-CN/chapter3/6.mdx index f0e33b25c..bf93482ba 100644 --- a/chapters/zh-CN/chapter3/6.mdx +++ b/chapters/zh-CN/chapter3/6.mdx @@ -11,11 +11,12 @@ Test what you learned in this chapter! -### 1.“情绪”数据集包含标记有情绪的 Twitter 消息。在[模型中心](https://huggingface.co/datasets)中搜索它,然后读取数据集卡。哪一个不是它的基本情感? + +### 1.`emotion`数据集包含标记有情绪的 Twitter 消息。在[Hub](https://huggingface.co/datasets)中搜索它,然后读取数据集卡。哪一个不是它的基本情感? -### 2.在[模型中心](https://huggingface.co/datasets)中搜索‘ ar _ sarcasm’数据集,它支持哪个任务? +### 2.在[Hub](https://huggingface.co/datasets)中搜索`ar_sarcasm`数据集,它支持哪个任务? dataset card !" + explain: "不是这样的ーー再看看 数据集卡 !" }, { text: "命名实体识别", - explain: "不是这样的ーー再看看 < a href =’https://huggingface.co/datasets/ar _ sarcasm’> dataset card !" + explain: "不是这样的ーー再看看 数据集卡 !" }, { text: "回答问题", - explain: "Alas, this question was not answered correctly. 再试一次!" + explain: "哎呀, 问题回答不正确. 再试一次!" } ]} /> -### 3.BERT 模型期望如何处理一对句子? +### 3.BERT模型期望如何处理一对句子? [SEP]标记来分割两个句子,但这并不是唯一的需求!" }, { - text: "表示句子的记号表示句子的记号", - explain: "一个 < code > [ CLS ] 特殊令牌在开始时是必需的,但是这不是唯一的事情!" + text: "[CLS]句子1 句子2", + explain: "确实在最开始需要一个[CLS]标记的,但是这不是唯一的事情!" }, { - text: "表示句子1[ SEP ]的符号表示句子2[ SEP ]", + text: "[CLS]句子1 [SEP] 句子2 [SEP]", explain: "没错!", correct: true }, { - text: "表示句子1[ SEP ]的符号表示句子2", - explain: "开头需要一个 < code > [ CLS ] 特殊标记,还需要一个 < code > [ SEP ] 特殊标记来分隔两个句子,但这还不是全部!" + text: "[CLS]句子1 [SEP] 句子2", + explain: "开头需要一个[CLS]特殊标记,还需要一个[SEP]特殊标记来分隔两个句子,但这还不是全部!" } ]} /> {#if fw === 'pt'} -### 4.‘ Dataset.map ()’方法的好处是什么? +### 4.`Dataset.map()`方法的好处是什么? @@ -126,25 +127,25 @@ Test what you learned in this chapter! choices={[ { text: "它确保数据集中的所有序列具有相同的长度。", - explain: "校对函数用于处理单个批处理,而不是整个数据集。此外,我们讨论的是通用的校对函数,而不是特定的 < code > > DataCollatorWithPadding 。" + explain: "校对函数用于处理单个批次,而不是整个数据集。此外,我们讨论的是通用的排序函数,而不是专门讨论DataCollatorWithPadding。" }, { - text: "它把所有的样品一批一批地放在一起。", - explain: "正确! You can pass the collate function as an argument of a DataLoader. We used the DataCollatorWithPadding function, which pads all items in a batch so they have the same length.", + text: "它把所有的样品放在一起成一批", + explain: "正确的!可以将校对函数作为DataLoader的参数传递。我们使用了DataCollatorWithPadding函数,该函数填充批处理中的所有项,使它们具有相同的长度。", correct: true }, { - text: "它预处理整个数据集。", + text: "它对整个数据集进行预处理。", explain: "这将是一个预处理函数,而不是校对函数。" }, { text: "它截断数据集中的序列。", - explain: "校对函数用于处理单个批处理,而不是整个数据集。如果您对截断感兴趣,可以使用 < code > tokenizer 的 < truncate 参数。" + explain: "校对函数用于处理单个批次,而不是整个数据集。如果您对截断感兴趣,可以使用标记器truncate参数。" } ]} /> -### 7.当你用一个预先训练过的语言模型(例如‘ bert-base-uncased’)实例化一个‘ AutoModelForXxx’类,这个类对应于一个不同于它所被训练的任务时会发生什么? +### 7.当你用一个预先训练过的语言模型(例如`bert-base-uncased`)实例化一个`AutoModelForXxx`类,这个类对应于一个不同于它所被训练的任务时会发生什么? Trainer 所做的,而不是 Accelerate 库。再试一次!", + explain: "正确的。例如,当我们使用AutoModelForSequenceClassification配合bert-base-uncase 时,我们在实例化模型时会得到警告。预训练的头部不用于序列分类任务,因此它被丢弃,并用随机权重实例化一个新的头部。", correct: true }, { text: "丢弃预先训练好的模型头部。", - explain: "Something else needs to happen. 再试一次!" + explain: "还有其他事情需要发生。 再试一次!" }, { - text: "没有,因为模型仍然可以针对不同的任务进行微调。", - explain: "这个经过训练的模特的头没有经过训练来解决这个问题,所以我们应该丢掉这个头!" + text: "无事发生,因为模型仍然可以针对不同的任务进行微调。", + explain: "预训练模型的头部没有被训练来解决这个任务,所以我们应该丢弃头部!!" } ]} /> -### 8.训练争论的目的是什么? +### 8.`TrainingArguments`的目的是什么? 训练器进行训练和评估的所有超参数。", explain: "正确!", correct: true }, { text: "它指定模型的大小。", - explain: "模型大小是由模型配置定义的,而不是类 < code > TrainingArguments 。" + explain: "模型大小是由模型配置定义的,而不是类TrainingArguments。" }, { text: "它只包含用于评估的超参数。", - explain: "In the example, we specified where the model and its checkpoints will be saved. 再试一次!" + explain: "在举例中,我们指定了模型及其检查点的保存位置。再试一次!" }, { - text: "您可以轻松地计算与数据集相关的指标。", - explain: "In the example, we used an evaluation_strategy as well, so this impacts evaluation. 再试一次!" + text: "它只包含用于训练的超参数。", + explain: "在举例中,我们还使用了求值策略,因此这会影响求值。再试一次!" } ]} /> -### 9.为什么要使用 Accelerate 库? +### 9.为什么要使用 🤗Accelerate 库? Trainer, not the 🤗 Accelerate library. 再试一次!" + explain: "这是我们在Trainer所做的,而不是🤗Accelerate库。再试一次!”" }, { text: "它使我们的训练循环工作在分布式策略上", - explain: "正确! 随着加速,你的训练循环将为多个 gpu 和 TPUs 工作。", + explain: "正确! 随着🤗Accelerate库,你的训练循环将为多个GPU和TPU工作。", correct: true }, { text: "它提供了更多的优化功能。", - explain: "不,Accelerate 库不提供任何优化功能。" + explain: "不,🤗Accelerate 库不提供任何优化功能。" } ]} /> {:else} -### 4.当你用一个预先训练过的语言模型(例如‘ bert-base-uncased’)实例化一个‘ tfautoodelforxxx’类时,会发生什么? +### 4.当你用一个预先训练过的语言模型(例如`bert-base-uncased`)实例化一个`TFAutoModelForXxx`类时,会发生什么? TFAutoModelForSequenceClassification配合bert-base-uncase时,我们在实例化模型时会得到警告。预训练的头部不用于序列分类任务,因此它被丢弃,并用随机权重实例化一个新的头部。", correct: true }, { text: "丢弃预先训练好的模型头部。", - explain: "Something else needs to happen. 再试一次!" + explain: "还有其他事情需要发生。 再试一次!" }, { - text: "没有,因为模型仍然可以针对不同的任务进行微调。", - explain: "这个经过训练的模特的头没有经过训练来解决这个问题,所以我们应该丢掉这个头!" + text: "无事发生,因为模型仍然可以针对不同的任务进行微调。", + explain: "预训练模型的头部没有被训练来解决这个任务,所以我们应该丢弃头部!!" } ]} /> -### 5.来自“变压器”的 TensorFlow 模型已经是 Keras 模型,这有什么好处? +### 5.来自`transfomers`的 TensorFlow 模型已经是 Keras 模型,这有什么好处? TPUStrategy scope 中的所有内容,包括模型的初始化。" + text: "这些模型在一个开箱即用的TPU上工作。", + explain: "差不多了!还需要进行一些小的额外更改。例如,您需要在TPUStrategy范围内运行所有内容,包括模型的初始化。" }, { - text: "您可以利用现有的方法,如 < code > compile () 、 < code > fit () 和 < code > predict () 。", + text: "您可以利用现有的方法,如compile()fit()predict() 。", explain: "正确! 一旦你有了这些数据,在这些数据上进行培训只需要很少的工作。", correct: true }, { - text: "你可以学习 Keras 和变形金刚。", + text: "你可以学习 Keras 和 transformers库。", explain: "没错,但我们要找的是别的东西:)", correct: true }, { - text: "困惑", - explain: "Keras 帮助我们训练和评估模型,而不是计算与数据集相关的度量。" + text: "您可以轻松地计算与数据集相关的指标。", + explain: "Keras 帮助我们训练和评估模型,而不是计算与数据集相关的指标。" } ]} /> -### 6.如何定义自己的定制度量? +### 6.如何定义自己的定制指标? tfkeras.metrics. Metric 。", + text: "通过子类化tf.keras.metrics.Metric。", explain: "太好了!", correct: true }, @@ -274,7 +275,7 @@ Test what you learned in this chapter! explain: "再试一次!" }, { - text: "通过使用带签名的可调用 < code > metric _ fn (y _ true,y _ pred) 。", + text: "通过使用带签名的可调用metric_fn(y_true, y_pred) 。", explain: "正确!", correct: true }, diff --git a/chapters/zh-CN/chapter4/6.mdx b/chapters/zh-CN/chapter4/6.mdx index 806ab4352..8308af695 100644 --- a/chapters/zh-CN/chapter4/6.mdx +++ b/chapters/zh-CN/chapter4/6.mdx @@ -102,28 +102,28 @@ ]} /> -### 5.哪些🤗 Transformers 库的对象可以直接在 Hub 上通过push _ to _ Hub ()共享? +### 5.哪些🤗 Transformers 库的对象可以直接在 Hub 上通过`push_to_Hub()`共享? {#if fw === 'pt'} push_to_hub方法,使用该方法将把所有标记器文件(词汇表、标记器的架构等)推送到给定的存储库。不过,这不是唯一正确的答案!", correct: true }, { text: "模型配置", - explain: "对!所有模型配置都有 push _ to _ hub 方法,使用这个方法可以将它们推送到给定的存储库。你还有其他能共享的吗?", + explain: "对!所有模型配置都有push_to_hub方法,使用这个方法可以将它们推送到给定的存储库。你还有其他能共享的吗?", correct: true }, { text: "一个模型", - explain: "正确! 所有模型都有 push_to_hub 方法,使用它会将它们及其配置文件推送到给定的存储库。不过,这并不是您可以共享的全部内容。", + explain: "正确! 所有模型都有push_to_hub方法,使用它会将它们及其配置文件推送到给定的存储库。不过,这并不是您可以共享的全部内容。", correct: true }, { text: "Trainer", - explain: "没错————Trainer也实现了push _ to _ hub方法,并且使用它将模型、配置、标记器和模型卡草稿上传到给定的存储器。试试其他答案!", + explain: "没错————Trainer也实现了push_to_hub方法,并且使用它将模型、配置、标记器和模型卡草稿上传到给定的存储器。试试其他答案!", correct: true } ]} @@ -133,29 +133,29 @@ choices={[ { text: "一个标记器", - explain: "正确! 所有标记器都有push_to_hub方法,使用该方法将把所有标记器文件(词汇表、标记器的架构等)推送到给定的存储库。不过,这不是唯一正确的答案!", + explain: "正确! 所有标记器都有push_to_hub方法,使用该方法将把所有标记器文件(词汇表、标记器的架构等)推送到给定的存储库。不过,这不是唯一正确的答案!", correct: true }, { text: "模型配置", - explain: "对!所有模型配置都有 push _ to _ hub 方法,使用这个方法可以将它们推送到给定的存储库。你还有其他能共享的吗?", + explain: "对!所有模型配置都有push_to_hub方法,使用这个方法可以将它们推送到给定的存储库。你还有其他能共享的吗?", correct: true }, { text: "一个模型", - explain: "正确! 所有模型都有 push_to_hub 方法,使用它会将它们及其配置文件推送到给定的存储库。不过,这并不是您可以共享的全部内容。", + explain: "正确! 所有模型都有push_to_hub方法,使用它会将它们及其配置文件推送到给定的存储库。不过,这并不是您可以共享的全部内容。", correct: true }, { text: "以上都有专用的回调函数", - explain: "正确————在训练期间,PushToHubCallback会定期将所有这些对象发送到存储器。", + explain: "正确————在训练期间,PushToHubCallback会定期将所有这些对象发送到存储器。", correct: true } ]} /> {/if} -### 6.当使用push _ to _ hub ()方法或 CLI 工具时,第一步是什么? +### 6.当使用`push_to_hub()`方法或 CLI 工具时,第一步是什么? huggingface _ hub 实用程序: 不需要额外的包装!" + text: "在 Python 运行时中,将它们包装在huggingface_hub实用程序中。", + explain: "模型和标记器已经受益于huggingface_hub 实用程序: 不需要额外的包装!" }, { - text: "将它们保存到磁盘并调用 < code > transformers-cli upload-model ", - explain: "命令 < code > upload-model 不存在。" + text: "将它们保存到磁盘并调用 transformers-cli upload-model", + explain: "命令 upload-model 不存在。" } ]} /> -### 8.您可以使用'Repository'类执行哪些 git 操作? +### 8.您可以使用`Repository`类执行哪些 git 操作? git _ commit () 方法就是为此而存在的。", + explain: "正确,git_commit() 方法就是为此而存在的。", correct: true }, { - text: "拉一下", - explain: "这就是 < code > git _ pull () 方法的目的。", + text: "拉取", + explain: "这就是 git_pull() 方法的目的。", correct: true }, { - text: "推一下", - explain: "方法 < code > git _ push () 可以做到这一点。", + text: "推送", + explain: "方法 git_push() 可以做到这一点。", correct: true }, { diff --git a/chapters/zh-CN/chapter5/8.mdx b/chapters/zh-CN/chapter5/8.mdx index 502c0d8b5..503108c9c 100644 --- a/chapters/zh-CN/chapter5/8.mdx +++ b/chapters/zh-CN/chapter5/8.mdx @@ -44,8 +44,8 @@ dataset = load_dataset("glue", "mrpc", split="train") dataset.sample (50) ", - explain: "这是不正确的——没有 < code > Dataset.sample () 方法。" + text: "dataset.sample(50)", + explain: "这是不正确的——没有 Dataset.sample() 方法。" }, { text: "dataset.shuffle().select(range(50))", @@ -63,17 +63,17 @@ dataset = load_dataset("glue", "mrpc", split="train") pets _ dataset. filter (lambda x: x ['name'] . startswith ('L')) ", + text: "pets_dataset.filter(lambda x: x['name'].startswith('L'))", explain: "正确! 为这些快速过滤使用 Python lambda 函数是一个好主意。你还能想到其他解决方案吗?", correct: true }, { - text: "< code > pets _ dataset. filter (lambda x ['name'] . startswith ('L') ", - explain: "这是不正确的—— lambda 函数采用通用格式 < code > lambda * arguments * : * expression * , 因此在这种情况下需要提供参数。" + text: "pets_dataset.filter(lambda x['name'].startswith('L')", + explain: "这是不正确的—— lambda 函数采用通用格式 lambda * arguments * : * expression * , 因此在这种情况下需要提供参数。" }, { - text: "创建一个类似于 < code > def filter _ names (x) : return x ['name'] . startswith ('L') 的函数并运行 < code > pets _ dataset. filter (filter _ names) 。", - explain: "正确!就像使用 < code > Dataset.map () 一样,你可以将显式函数传递给 < code > Dataset.filter () 。当你有一些不适合于简短 lambda 函数的复杂逻辑时,这是非常有用的。其他解决方案中还有哪一个可行?", + text: "创建一个类似于 def filter_names(x) : return x['name'].startswith('L') 的函数并运行 pets_dataset.filter(filter_names) 。", + explain: "正确!就像使用 Dataset.map() 一样,你可以将显式函数传递给 Dataset.filter() 。当你有一些不适合于简短 lambda 函数的复杂逻辑时,这是非常有用的。其他解决方案中还有哪一个可行?", correct: true } ]} @@ -133,13 +133,13 @@ dataset[0] explain: "这是不正确的---- 流数据集是动态解压的, 你可以用非常小的RAM处理TB大小的数据集!", }, { - text: "它尝试访问 < code > IterableDataset 。", - explain: "正确! < code > IterableDataset 是一个生成器, 而不是一个容器, 因此你应该使用 < code > next (iter (dataset)) 来访问它的元素。", + text: "它尝试访问 IterableDataset 。", + explain: "正确! IterableDataset 是一个生成器, 而不是一个容器, 因此你应该使用 next(iter(dataset)) 来访问它的元素。", correct: true }, { - text: "数据集 < code > allocine 没有分割< code >训练集。", - explain: "这是不正确的---- 查看 Hub 上的[ < code > allocine dataset card ]( https://huggingface.co/datasets/allocine ), 看看它包含哪些拆分。" + text: "数据集 allocine 没有分割train。", + explain: "这是不正确的---- 查看 Hub 上的[allocine数据集卡](https://huggingface.co/datasets/allocine), 看看它包含哪些拆分。" } ]} />