（风拂过的声音） (wind swiping sound)
- [讲师] 在终端中使用 Python 调试器。 - [Instructor] Using the Python debugger in a terminal.
在本视频中，我们将学习如何使用 Python 调试器 In this video, we'll learn how to use a Python debugger
在一个终端。 in a terminal.
对于这个例子，我们正在运行代码 For this example, we're running code
从令牌分类部分， from the token classification section,
下载 Conll 数据集 downloading the Conll dataset
在加载标记器以对其进行预处理之前。 before loading a tokenizer to pre-process it.
查看下面的课程链接部分 Check out the section of the course link below
了解更多信息。 for more information.
一旦完成， Once this is done,
我们尝试将一些功能组合在一起 we try to batch together some features
通过填充训练数据集 of the training dataset by padding them
并返回一个张量。 and returning a tensor.
如果我们尝试在终端中执行我们的脚本 If we try to execute our scripts in a terminal
我们得到一个错误。 we get an error.
请注意，我们在这里使用 PyTorch Note that we use PyTorch here
我们返回张量等于可惜。 we return tensors equal pity.
但是你会在 TensorFlow 中遇到同样的错误。 But you would get the same error with TensorFlow.
正如我们在 “如何调试错误？” 中看到的那样视频， As we have seen in the, 'How to debug an error?' video,
原始消息在最后，它表明我们 The raw message is at the end and it indicates we
应该使用配对，我们实际上正在尝试这样做。 should use pairing, which we're actually trying to do.
所以这没有用，我们需要更深入一点 So this is not useful and we need to go little deeper
调试问题。 to debug the problem.
幸运的是，你可以很容易地使用 Python 调试器 Fortunately, you can use the Python debugger quite easily
在终端中通过使用 Python -m PDB 启动脚本 in a terminal by launching your script with Python -m PDB
然后是训练脚本的名称。 and then the name of the training script.
执行该评论时，你将被发送 When executing that comment, you are sent
到脚本的第一条指令。 to the first instruction of your script.
你可以通过键入 N 并回车来运行下一条指令。 You can run just the next instruction by typing N and enter.
或者你可以通过键入 C 并回车直接继续归零。 Or you can continue directly to zero by typing C and enter.
一旦到了那里，你就会走到最底层 Once there, you go to the very bottom
回溯，你可以键入命令。 of the traceback and you can type commands.
你应该学习的前两个命令是 U 和 D， The first two commands you should learn are U and D,
对于上下。 for up and down.
这允许你在回溯中上下移动。 This allows you to get up and down in the traceback.
上升两次，我们到达了错误发生的地步。 Going up twice, we get to the point the error was reached.
要学习的第一个命令是 P，表示打印。 The first command to learn is P for print.
它允许你打印任何你想要的值。 It allows you to print any value you want.
例如，这里我们可以看到 return_tensors 的值 For instance, here we can see the value of return_tensors
或 batch_outputs 试图了解触发零的原因。 or batch_outputs to try to understand what triggered zero.
批量输出字典有点难看 The batch outputs dictionary is a bit hard to see
因此，让我们深入研究它的较小部分。 so let's dive into smaller pieces of it.
在调试器内部，你不仅可以打印任何变量 Inside the debugger, you can not only print any variable
还要评估任何表达式， but also evaluate any expression,
所以我们可以独立地查看输入。 so we can look independently at the inputs.
还有标签。 Also labels.
这些标签肯定很奇怪。 Those labels are definitely weird.
它们有各种尺寸，我们可以确认 They are various size, which we can confirm
通过使用释放压缩打印站点。 by printing the sites using a release compression.
难怪分词器无法创建 No wonder the tokenizer wasn't able to create
与他们的张量。 a tensor with them.
这是因为 pad 方法只关心 This is because the pad method only takes care
分词器的输出、输入 ID、注意掩码 of the tokenizer outputs, the input IDs, the attention mask
和令牌类型 ID。 and the token type IDs.
所以我们必须自己填充关卡 So we have to pad the level ourselves
在尝试与他们一起创建新传感器之前。 before trying to create a new sensor with them.
一旦你准备好执行 Python 调试器， Once you're ready to execute the Python debugger,
你可以按 Q 退出并进入。 you can press Q for quit and enter.
我们可以通过另一种方式访问 Python 调试器， Another way we can access the Python debugger,
是在我们的脚本中设置一个断点。 is to put a breaking point in our script.
我们可以使用 PDB 中的 set_trace 方法来做到这一点。 We can do this using the PDB that set_trace method.
只要我们导入 PDB 模块 As long as we import the PDB module
在我们脚本的开头。 at the beginning of our script.
保存并重新启动我们的脚本，仅使用 Python。 Saving and then relaunching our script, with just Python.
我们将在我们设置的断点处停止执行。 We'll stop the execution at the breaking point we set.
我们可以检查所有变量 We can inspect all the variable
在再次执行下一条指令之前。 before the next instruction is executed again.
例如，这里的功能。 For instance, here, the features.
输入 N 并回车执行下一条指令 Typing N and enter execute the next instruction
这将我们带回到回溯中。 which takes us back inside traceback.
当要手动修复零是 When going to fix zero manually is to
将所有标签填充到最长。 pad all the labels to the longest.
另一种方法是使用合适的数据创建器 Another way is to use the data creator suitable
用于令牌分类。 for token classification.
如果你想学习如何使用 Python If you want to learn how to use the Python
笔记本中的调试器，查看下面链接中的视频。 debugger in a notebook, check out the video in link below.
（风拂过的声音） (wind swiping sound)