PyTorch怎么展示调用顺序
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"PyTorch怎么展示调用顺序",在日常操作中,相信很多人在PyTorch怎么展示调用顺序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PyTorch
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
启明信息是网络安全
数据库 查询深度
无锡进口网络技术厂家现货
服务器源库
上机位软件开发工程师
深圳占卜软件开发公司
高中信息数据库的基本特征
美团公司软件开发怎么样
九台区网络技术咨询质量推荐
魔兽世界新开的服务器
万网服务器端口
河南拽牛直销软件开发
圣魂纷争切换服务器
csgo社区服务器怎么看战绩
网络安全潜在隐患有哪些
欢心直播软件开发
研究生应该怎样做好网络安全
百度上租服务器安全吗
x射线cr成像软件开发
嘉善景瑞网络技术
上海自制网络技术维保
世界网络安全权威专家
网页设计专业好还是软件开发好
网络技术公司实践岗位
iptv服务器协议
服务器安全防御教程
工信部网络安全项目组
互联网高科技类有哪些
服务器硬盘3.5寸硬盘框
网络技术开发的社会实践报告