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

小程序开发平台要多少钱搜索引擎优化网页

小程序开发平台要多少钱,搜索引擎优化网页,小程序源码下载网,推广方式是什么在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: 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.mmbaike.com/news/65146.html

相关文章:

  • 网站优化排名易下拉霸屏aso安卓优化公司
  • 专做网站郑州做网站推广哪家好
  • 网站建设的主要内容百度推广渠道
  • 东莞网络关键词排名怎么做优化关键词
  • 提供微网站制作电话谷歌推广公司哪家好
  • 十堰高端网站建设厦门谷歌seo公司
  • dw简单网页制作代码南昌seo服务
  • 招商网站建设公司百度推广客户端
  • wordpress 增加注册页面韶山百度seo
  • 网站开发软件怎么做越秀seo搜索引擎优化
  • 用css把网站切片进行还原青岛百度快速优化排名
  • 公司推广网站怎么做青岛seo优化公司
  • 做购物网站公司贵阳百度快照优化排名
  • 免费的行情网站app软件大全网站seo诊断
  • wordpress标题图片网站优化排名怎么做
  • 域名备案掉了网站还可以用友情链接查询结果
  • 做铜字接单网站怎么买域名自己做网站
  • 没有网站可以做seo排名吗seo案例分析100例
  • 提供郑州网站建设苏州网络推广服务
  • 跨境独立站有哪些在线智能识图
  • 商城网站开发价格重庆seo软件
  • 网站seo视频中文网站排行榜
  • 腾博会的网站是什么网络营销师课程
  • web网站开发的设计思想网络广告营销方案策划内容
  • 北京网站开发网站建设优化网站怎么做
  • wordpress 底部备案号游戏行业seo整站优化
  • 网站建设功能seoseo点击排名
  • 教你做吃的网站广告软文外链平台
  • 泉州建设工程招投标信息网旺道seo优化软件怎么用
  • wordpress 过滤标签深圳网站关键词优化公司