PyTorch怎么展示调用顺序
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"PyTorch怎么展示调用顺序",在日常操作中,相信很多人在PyTorch怎么展示调用顺序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PyTorch
千家信息网最后更新 2026年11月01日PyTorch怎么展示调用顺序
这篇文章主要介绍"PyTorch怎么展示调用顺序",在日常操作中,相信很多人在PyTorch怎么展示调用顺序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PyTorch怎么展示调用顺序"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
总结说明:代码实验表面,反向传播计算梯度时的执行顺序是和前向计算相反的.这一点由钩子函数的执行顺序可以观察到,并且由保存梯度的列表中的内容顺序可以推断出来.
代码实验展示:
import torchprint(torch.__version__) # 1.2.0+cu92torch.manual_seed(seed=20200910)gradients = list()# ------------------------------------------ #def grad_hook_x0(grad):print("\n为x0执行自定义的钩子函数...")print("保存x0的梯度...")gradients.append(grad)print("x0的钩子函数执行结束...\n")# return gradx0 = torch.randn(2,3,4,5,6,7,requires_grad=True)print('x0.shape:', x0.shape) # x0.shape: torch.Size([2, 3, 4, 5, 6, 7])# print('x0:\n',x0)x0.register_hook(grad_hook_x0)# ------------------------------------------ #def grad_hook_x1(grad):print("\n为x1执行自定义的钩子函数...")print("保存x1的梯度...")gradients.append(grad)print("x1的钩子函数执行结束...\n")# return gradx1 = torch.sum((4 * x0 + 18.0), dim=(0,1)) x1.retain_grad()print('x1.shape:', x1.shape) # x1.shape: torch.Size([4, 5, 6, 7])# print('x1:\n',x1)x1.register_hook(grad_hook_x1)# ------------------------------------------ #def grad_hook_x2(grad):print("\n为x2执行自定义的钩子函数...")print("保存x2的梯度...")gradients.append(grad)print("x2的钩子函数执行结束...\n")# return gradx2 = torch.sum(x1, dim=(1,2)) * 10.0x2.retain_grad()print('x2.shape:', x2.shape) # x2.shape: torch.Size([4, 7])# print('x2:\n',x2)x2.register_hook(grad_hook_x2)# ------------------------------------------ #def grad_hook_loss(grad):print("\n为loss执行自定义的钩子函数...")print("保存loss的梯度...")gradients.append(grad)print("loss的钩子函数执行结束...\n")# return gradloss = torch.mean(x2)loss.retain_grad()print('loss.shape:', loss.shape) # loss.shape: torch.Size([])print('loss:',loss) # loss: tensor(32403.7344, grad_fn=)loss.register_hook(grad_hook_loss)# ------------------------------------------ #loss.backward() # 这行代码将会执行已注册登记的钩子函数tensors_list = [loss, x2, x1, x0]print('打印相关信息,gradients列表的长度为:', len(gradients))print('打印相关信息,tensors_list列表的长度为:', len(tensors_list))for g, t in zip(gradients, tensors_list):print( torch.equal(g, t.grad), g.shape==t.grad.shape==t.shape, g.shape, t.grad.shape, t.shape) 控制台输出结果:
尝试新的跨平台 PowerShell 加载个人及系统配置文件用了 869 毫秒。(base) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> conda activate ssd4pytorch2_2_0(ssd4pytorch2_2_0) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> & 'D:\Anaconda3\envs\ssd4pytorch2_2_0\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2021.1.502429796\pythonFiles\lib\python\debugpy\launcher' '58682' '--' 'c:\Users\chenxuqi\Desktop\News4cxq\test4cxq\testHook.py'1.2.0+cu92x0.shape: torch.Size([2, 3, 4, 5, 6, 7])x1.shape: torch.Size([4, 5, 6, 7])x2.shape: torch.Size([4, 7])loss.shape: torch.Size([])loss: tensor(32403.7344, grad_fn=)为loss执行自定义的钩子函数...保存loss的梯度...loss的钩子函数执行结束...为x2执行自定义的钩子函数...保存x2的梯度...x2的钩子函数执行结束...为x1执行自定义的钩子函数...保存x1的梯度...x1的钩子函数执行结束...为x0执行自定义的钩子函数...保存x0的梯度...x0的钩子函数执行结束...打印相关信息,gradients列表的长度为: 4打印相关信息,tensors_list列表的长度为: 4True True torch.Size([]) torch.Size([]) torch.Size([])True True torch.Size([4, 7]) torch.Size([4, 7]) torch.Size([4, 7])True True torch.Size([4, 5, 6, 7]) torch.Size([4, 5, 6, 7]) torch.Size([4, 5, 6, 7])True True torch.Size([2, 3, 4, 5, 6, 7]) torch.Size([2, 3, 4, 5, 6, 7]) torch.Size([2, 3, 4, 5, 6, 7])(ssd4pytorch2_2_0) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq>
到此,关于"PyTorch怎么展示调用顺序"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
函数
钩子
梯度
顺序
信息
长度
学习
代码
更多
实验
帮助
实用
接下来
个人
内容
控制台
文件
文章
方法
注册登记
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
百单网互联网科技有限公司
圆梦互联网科技
新华互联网科技学院
互联网品科技
科技企业和互联网企业
互联网医疗科技
合肥互联网科技公司
互联网科技公司官网
贷财互联网科技
融贸通互联网科技
掌上梦互联网科技
互联网科技大会案例
996高科技互联网公司
河南住房之家互联网科技
佛山市拉法互联网科技有限公司
中国新注册互联网科技
玉溪新华互联网科技怎么选
众联互联网络科技
科技互联网专业务虚会材料
科技互联网
南京欣网互联网络科技有限公司
亿人帮互联网科技有限公司
互联网最新的科技
互联网金融与金融科技
善班互联网科技有限公司
杭州披云加互联网科技有限公司
城市宝互联网科技有限公司
广西泛欧互联网科技有限公司
互联网对科技影响