pytorch 在Google Colab中调试

c0vxltue  于 2023-01-26  发布在  Go
关注(0)|答案(3)|浏览(194)

我正在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语句。

vh0rcniy

vh0rcniy1#

从Python 3.7开始,您可以使用内置的breakpoint function

import pdb
pdb.set_trace()

而不是。
如果你想执行下一行,你可以尝试n(next)而不是s(step)。

cgyqldqp

cgyqldqp2#

按照以下命令使用pdb内置断点函数:

import pdb; 
pdb.set_trace()

命令描述

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

um6iljoc3#

最新使用,

import pdb; 
pdb.set_trace()

您可以使用内置断点函数在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

相关问题