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

经营网站备案网络宣传方式有哪些

经营网站备案,网络宣传方式有哪些,wordpress 前台登录,做网站建设的有哪些上一篇文章介绍了反向传播的自动化,但也存在一些问题,本章用于说明这些问题,并修改原有框架,使其支持复杂计算图的运行: 问题一:重复使用一个变量,梯度不会累计 也就是说,反向传播时…

上一篇文章介绍了反向传播的自动化,但也存在一些问题,本章用于说明这些问题,并修改原有框架,使其支持复杂计算图的运行:

问题一:重复使用一个变量,梯度不会累计

也就是说,反向传播时gx=[1,1],f.inputs=[x,x],在循环中第二次赋值把第一次赋的值给覆盖了。

如何解决

问题二:重复计算导数,梯度不会自动清零

第一次计算,x的导数是2,第二次计算x的导数是3。但是两次的导数值累加了。

设置x.cleargrad() 手动清空梯度

问题三:不支持复杂计算图

循环funs中的函数
0(初始化)[D]
1[B,C]
2[B,A]
3[B]
4[A]
5[ ]

如何解决

代码验证

完整代码

import numpy as npclass Variable:def __init__(self, data):if data is not None:if not isinstance(data, np.ndarray):raise TypeError('{} is not supported'.format(type(data)))self.data = dataself.grad = Noneself.creator = Noneself.generation = 0def set_creator(self, func):self.creator = funcself.generation = func.generation + 1def cleargrad(self):self.grad = Nonedef backward(self):if self.grad is None:self.grad = np.ones_like(self.data)funcs = []seen_set = set()def addfunc(f):if f not in seen_set:funcs.append(f)seen_set.add(f)funcs.sort(key=lambda x: x.generation)#funcs按照从小到大的辈分排序addfunc(self.creator)while funcs:f = funcs.pop()gys = [output.grad for output in f.outputs]  # 获取所有输出的梯度gxs = f.backward(*gys)                       # 调用 backward 方法if not isinstance(gxs, tuple):               # 确保 gxs 是元组gxs = (gxs,)for x, gx in zip(f.inputs, gxs):            # 为每个输入分配梯度if x.grad is None:x.grad = gxelse:x.grad = x.grad + gxif x.creator is not None:addfunc(x.creator)class Function:def __call__(self, *inputs):xs = [x.data for x in inputs]               # 提取输入数据ys = self.forward(*xs)                      # 前向传播(解包)if not isinstance(ys, tuple):               # 确保 ys 是元组ys = (ys,)outputs = [Variable(as_array(y)) for y in ys]  # 创建输出变量self.generation = max([x.generation for x in inputs])for output in outputs:output.set_creator(self)self.inputs = inputs                        # 保存输入self.outputs = outputs                      # 保存输出return outputs if len(outputs) > 1 else outputs[0]  # 根据输出数量返回def forward(self, *xs):raise NotImplementedError()def backward(self, *gys):raise NotImplementedError()# 实现具体的函数类
class Square(Function):def forward(self, x):return x ** 2def backward(self, gy):x = self.inputs[0].data                     # 从 inputs 中获取数据gx = 2 * x * gyreturn gxclass Add(Function):def forward(self, x0, x1):y = x0 + x1return ydef backward(self, gy):return gy, gy                               # 对两个输入返回相同的梯度# 定义便捷函数
def square(x):return Square()(x)def add(x0, x1):return Add()(x0, x1)# 定义 as_array 函数
def as_array(x):if np.isscalar(x):return np.array(x)return xx = Variable(np.array(2.0))
a = square(x)
y = add(square(a) , square(a))
y.backward()
print(y.data)
print(x.grad)
'''
# 测试代码
x = Variable(np.array(2.0))
y = Variable(np.array(3.0))
z = add(square(x), square(y))
z.backward()
print(z.data)    # 输出结果: 13.0 (2^2 + 3^2 = 4 + 9 = 13)
print(x.grad)    # 输出梯度: 4.0 (dz/dx = 2 * 2 = 4)
print(y.grad)    # 输出梯度: 6.0 (dz/dy = 2 * 3 = 6)
'''

运行结果:

下一章将会深入实践深度学习中的内存管理部分,掌握代码技术

http://www.dtcms.com/wzjs/121406.html

相关文章:

  • 建立网站有哪几种方式百度官网入口链接
  • 销售网站制作电话产品推广方案ppt
  • 浙江疫情最新消息今天新增病例黑帽seo工具
  • 做网站公司是干什么的全网推广怎么做
  • 移动端网站如何优化google搜索优化
  • 写作网站原码如何开发自己的小程序
  • 做建材一般去什么网站宣传河南省郑州市金水区
  • 哪个网站平面设计做的好网站如何快速收录
  • 济南网站建设有限公司关键词app下载
  • 合肥高端网站建设设计公司关键词排名优化公司哪家好
  • 网站建设所需的基本内容地推团队
  • 旅游网站的设计思路bt搜索引擎
  • 北京网站搭建方案谷歌搜索引擎优化seo
  • 企业手机网站建设价位郑州seo网站管理
  • 做网站建设公司企业百度关键词seo排名软件
  • 在常州青之锋做网站客服怎么样百度搜索推广产品
  • 西宁网站设计高端seo北京公司
  • 19楼网站模板实时热搜榜榜单
  • 重庆高端网站设计网络营销推广的
  • 海南万宁市q群排名优化软件
  • 企业运营网站建设社群营销
  • 苏州市住房建设局网站首页网络营销型网站
  • 找网络公司做网站网上电商怎么做
  • 龙岗做网站公司哪家好网络营销的作用和意义
  • 海南房产金昌网站seo
  • 如何做网站拓扑结构图做seo必须有网站吗
  • 做的好的电商网站项目百度seo优化系统
  • 技术难度高的网站开发百度推广好不好做
  • 建设银行交学费网站没经验怎么开广告公司
  • 网站用户黏度表现在外贸网站平台有哪些