如何在打印神经网络权重时去除grad_fn信息
解决方法
当然可以去掉grad_fn=<SelectBackward0>,以下是几种简单的实现方式:
方法一:使用
.detach()切断计算图
这个方法会返回一个不带有梯度信息的张量副本,打印时就不会显示grad_fn相关内容:print("Weight:", net.fc1.weight[0].detach())方法二:转换为numpy数组后重新封装为张量
将张量转换为numpy数组会丢失梯度信息,再重新转为张量即可得到干净的输出:import torch weight_np = net.fc1.weight[0].detach().numpy() print("Weight:", torch.tensor(weight_np))方法三:使用
.data属性(不推荐)
虽然.data也能获取不带梯度的张量,但官方更推荐使用.detach(),因为.data在某些场景下可能导致梯度计算异常:print("Weight:", net.fc1.weight[0].data)
内容的提问来源于stack exchange,提问作者David777
相关产品推荐
相关产品推荐

