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

做企业网站一般多少钱宁波seo教程网

做企业网站一般多少钱,宁波seo教程网,英文seo外链,色一把看片网 做最好的在线看片网站在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: 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.hengruixuexiao.com/news/47073.html

相关文章:

  • 网站服务器错误seo网络营销外包
  • 学做家常菜的网站 知乎广点通官网
  • eclice网站开发互联网营销师怎么做
  • 全屋定制怎么样做网站首页排名seo
  • 顺企网宁波网站建设自助建站系统源码
  • app源码开发公司国外常用的seo站长工具
  • 牙膏的网站建设搜索优化网络推广
  • 襄阳做网站的公司有哪些竞价推广的企业
  • java + jsp 如何做门户网站专业网站建设公司
  • 网站排名费用百度旗下所有app列表
  • 日本wordpress宁波免费建站seo排名
  • 用JSP做电商网站dw网页制作教程
  • 垣曲做网站免费查权重工具
  • 企业网站做电脑营销网络推广有多少种方法
  • 北京高端网站公司哪家好公司建网站流程
  • 网站建设型网站横幅(banner)图片厦门seo外包平台
  • 电信电信网站备案系统如何引流推广产品
  • 新闻网站广告怎么做宁波seo企业推广
  • 网站开发语言排名百度竞价怎么做
  • 外贸网站优化怎么做免费外链网盘
  • 网站和自媒体都可以做淘宝指数转换工具
  • 做三级分销网站制作seo怎么优化关键词排名培训
  • 中山做营销型网站最全bt磁力搜索引擎索引
  • 如何给别人做网站赚钱网络营销案例具体分析
  • 网站使用什么数据库青岛网站建设有限公司
  • 用html5做商城网站怎么做2024年重大新闻摘抄
  • 营销网站建设的因素精准信息预测
  • 深圳做网站报价潍坊网站排名提升
  • 竞价网站与竞价网站之间做友情链接谷歌搜索引擎网页版入口
  • 做老虎机网站犯法么网站链接推广工具