在Google Colab中进行调试

时间:2018-10-05 00:15:14

标签: python deep-learning pytorch tensor google-colaboratory

我在单个单元格中的google colab中运行以下代码段:

%debug
# Create tensors of shape (10, 3) and (10, 2).
x = torch.randn(10, 3)
y = torch.randn(10, 2)

# Build a fully connected layer.
linear = nn.Linear(3, 2)
print ('w: ', linear.weight)
print ('b: ', linear.bias)

我希望调试一段代码(逐行进行调试)以了解发生了什么。我希望进入函数nn.Linear。

但是,当我逐步执行时,它根本不会进入该功能。有没有一种方法可以逐步解决nn.Linear?另外,我如何在nn.Linear中设置断点?此外,我也希望逐行一步一步地介绍代码段。但是,如图所示,step命令会自动执行并执行print语句。

Step_though_collab

3 个答案:

答案 0 :(得分:1)

从Python 3.7开始,您可以使用内置的breakpoint function。如果不可用,则可以改用import pdb; pdb.set_trace()

如果要执行下一行,可以尝试使用n(下一个)代替s(步骤)。

答案 1 :(得分:0)

您可以使用内置的断点函数在nn.Linear中设置断点。

import sys; sys.breakpoint()

还有更多可用的命令可用于交互式调试,

Command  Description
list     Show the current location in the file
h(elp)   Show a list of commands, or find help on a specific command
q(uit)   Quit the debugger and the program
c(ontinue)  Quit the debugger, continue in the program
n(ext)   Go to the next step of the program
<enter>  Repeat the previous command
p(rint)  Print variables
s(tep)   Step into a subroutine
r(eturn)    Return out of a subroutine

答案 2 :(得分:0)

根据以下命令使用pdb内置断点函数:

import pdb; 
pdb.set_trace()

命令说明

  1. list 显示文件中的当前位置
  2. h(elp) 显示命令列表,或查找特定命令的帮助
  3. q(uit) 退出调试器和程序
  4. c(ontinue) 退出调试器,继续程序
  5. n(ext) 进入程序的下一步
  6. 重复之前的命令
  7. p(rint) 打印变量
  8. s(tep) 进入子程序
  9. r(eturn) 从子程序中返回