当前位置: 首页 > news >正文

网站配色案例新网站怎么做优化

网站配色案例,新网站怎么做优化,网站csv导入,国家建设执业资格注册中心网站在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: retain_grad()hook 不过我感觉“hook”比“retain_grad()”要麻烦.....,所以我感觉还是…

在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是:

  • retain_grad()
  • hook

不过我感觉“hook”比“retain_grad()”要麻烦.....,所以我感觉还是使用“retain_grad()”吧

1、retain_grad()

retain_grad()显式地保存非叶节点的梯度, 代价就是会增加显存的消耗(对比hook函数的方法则是在反向计算时直接打印, 因此不会增加显存消耗.)

使用方法:

直接在forward中对你想要输出gred的tensor“.retain_grad()”即可:tensor.retain_grad()

import torchdef forwrad(x, y, w1, w2):# 其中 x,y 为输入数据,w为该函数所需要的参数z_1 = torch.mm(w1, x)z_1.retain_grad()y_1 = torch.sigmoid(z_1)y_1.retain_grad()z_2 = torch.mm(w2, y_1)z_2.retain_grad()y_2 = torch.sigmoid(z_2)# y_2.retain_grad()loss = 1 / 2 * (((y_2 - y) ** 2).sum())return loss, z_1, y_1, z_2, y_2# 测试代码
x = torch.tensor([[1.0]])
y = torch.tensor([[1.0], [0.0]])
w1 = torch.tensor([[1.0], [2.0]], requires_grad=True)
w2 = torch.tensor([[3.0, 4.0], [5.0, 6.0]], requires_grad=True)
# 正向
loss, z_1, y_1, z_2, y_2 = forwrad(x, y, w1, w2)
# 反向
loss.backward()  # 反向传播,计算梯度print(loss.grad)print(y_2.grad)print(z_2.grad)# 输出结果是否是None,如果是None-->True
def is_none(obj):return obj is None
# 打印出非叶子结点的gred
print(is_none(z_1.grad))
print(is_none(y_2.grad))
print(z_2.grad)

注意:不要对保存梯度的变量做任何修改,例如:z_1, y_1, z_2, y_2,修改为gred_list = [z_1, y_1, z_2, y_2],然后输入梯度值,那是错误的,要直接一个一个输出,不要做任何操作

2、hook的使用

使用retain_grad会消耗额外的显存, 我们可以使用hook在反向计算的时候进行保存. 还是上面的例子, 我们使用hook来完成.

import torch# 我们可以定义一个hook来保存中间的变量
grads = {} # 存储节点名称与节点的grad
def save_grad(name):def hook(grad):grads[name] = gradreturn hookdef forwrad(x, y, w1, w2):# 其中 x,y 为输入数据,w为该函数所需要的参数z_1 = torch.mm(w1, x)y_1 = torch.sigmoid(z_1)z_2 = torch.mm(w2, y_1)y_2 = torch.sigmoid(z_2)loss = 1/2*(((y_2 - y)**2).sum())return loss, z_1, y_1, z_2, y_2# 测试代码
x = torch.tensor([[1.0]])
y = torch.tensor([[1.0], [0.0]])
w1 = torch.tensor([[1.0], [2.0]], requires_grad=True)
w2 = torch.tensor([[3.0, 4.0], [5.0, 6.0]], requires_grad=True)
# 正向传播
loss, z_1, y_1, z_2, y_2 = forwrad(x, y, w1, w2)# hook中间节点
z_1.register_hook(save_grad('z_1'))
y_1.register_hook(save_grad('y_1'))
z_2.register_hook(save_grad('z_2'))
y_2.register_hook(save_grad('y_2'))# 反向传播
loss.backward()
print(grads['z_1'])
print(grads['y_1'])
print(grads['z_2'])
print(grads['y_2'])

https://www.cnblogs.com/dxscode/p/16146470.html

pytorch | loss不收敛或者训练中梯度grad为None的问题_pytorch梯度为none_Rilkean heart的博客-CSDN博客

http://www.dt0577.cn/news/13808.html

相关文章:

  • 专业做网站建设的想做电商怎么入手
  • 深圳高端网站制作公司排名深圳外贸seo
  • 为什么做的网站打开自动缩放网店运营培训
  • 电子商务网站建设的风险分析免费注册个人网站不花钱
  • 秦皇岛手机网站制作公司磁力宅
  • 如何做生鲜配送网站生意windows10优化工具
  • 网站 沙盒外链图片
  • 新网域名管理长沙企业seo优化
  • 一定要用c 做网站吗网络营销的优势包括
  • 响应式网站无法做百度联盟网盘网页版登录入口
  • 如何建设网站服务器百度优选官网
  • 网站域名价值查询工具百度推广北京总部电话
  • 证件制作seo优化排名易下拉软件
  • 一个网站的建设流程有哪些资料谷歌搜索优化seo
  • 外贸建站应该怎么做昆明优化网站公司
  • 网站开发好后要做什么生成关键词的软件免费
  • dreamweaver怎样用框架做网站廊坊百度推广seo
  • 网页设计与制作教学设计南宁seo排名外包
  • 微信公众号如何创建文件夹海南seo
  • 网站搭建公司排行榜产品软文范例500字
  • 网站改备案信息吗网络推广 公司 200个网站
  • 做公司年报网站登录密码是什么全自动引流推广软件
  • 昆明门户网站科技公司网站制作公司
  • 仿微信主题wordpress北京排名seo
  • 电子工程设计网站百度seo怎么优化
  • js源码下载从哪个网站能下载营销管理培训课程
  • 做影视后期有哪些资源网站自媒体推广平台
  • 建设部网站资质查询6短视频营销推广方式
  • 如何通过网站后台修改网站海口做网站的公司
  • 珠海网站小型项目外包网站