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

网站模板之家免费模板哈尔滨网站建设30t

网站模板之家免费模板,哈尔滨网站建设30t,德国 网站建设,搭建一个平台要多少钱上一篇关于反向传播的代码仅支持单变量的梯度计算#xff0c;下面我们将扩展代码使其支持多个输入/输出。增加了对多输入函数#xff08;如 Add#xff09;#xff0c;以实现的计算。 1.关于前向传播可变长参数的改进-修改Function类 修改方法#xff1a; Function用于对…上一篇关于反向传播的代码仅支持单变量的梯度计算下面我们将扩展代码使其支持多个输入/输出。增加了对多输入函数如 Add以实现的计算。 1.关于前向传播可变长参数的改进-修改Function类 修改方法 Function用于对输入输出做规定帮助实现右图的效果接受inputs 返回outputs 2.关于反向传播可变长参数的改进 修改函数类的反向传播 修改Variable类的反向传播 改进前 获取y.creator,获取输入creator.inputs根据y.grads计算x.grads:creator.backward(y.grads) 2.3两步的解包和打包操作 最后修改square方法 完整代码 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 Nonedef set_creator(self, func):self.creator funcdef backward(self):if self.grad is None:self.grad np.ones_like(self.data)funcs [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): # 为每个输入分配梯度x.grad gxif x.creator is not None:funcs.append(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] # 创建输出变量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 x# 测试代码 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.hkea.cn/news/14393549/

相关文章:

  • 公司网站模板怎么做怎样申请网络域名
  • 雅安网站建设微信小程序点餐系统源码
  • 做网站的价位济南网站建设行知keji
  • 深做网站公司网页制作工具有
  • 微信小程序官方电话sem优化和seo的区别
  • wordpress 多站点共享wordpress二次元模板
  • 主题网站建设番禺区网络销售费用低
  • 高端网站建设服务网站右下角flash
  • 外贸公司的网站宁波制作网站企业
  • 广告设计图片网站基于h5的网站开发
  • 淄博专业网站建设wordpress发文章套模版
  • 企业做网站应注意什么适合翻译做兼职的网站
  • 手把手教建设网站黑群晖按照wordpress
  • 网站建设与规划结课论文做现金贷网站的公司
  • 合肥网站建设的价格网站排名优化怎么弄
  • 带后台的网站建设大团网站建设
  • 网站网讯一建的专业
  • 六安网站推广音乐网站首页设计
  • 随州网站视频分享网站怎么做的
  • 网站代码上传到服务器后要怎么做的企业推广方案范例
  • 企业网站托管哪家好做游戏难吗比做网站
  • 网站建设企业资质等级数据营销
  • 网站建设销售客户开发网站为什么显示正在建设中
  • 什么网站可以做试题企业网站建设趋势
  • 嘉兴网站设计999 999注册做网站的营业执照
  • 好的手机网站推荐营销网站建设规划概念
  • 网站建设设计哪家好网站建设的主要功能及定位
  • 学生网站建设首页余杭区高端网站建设
  • 手机网站建设教材好医生网站继续教育网
  • 陕西省城乡建设厅官方网站网络广告策划书模板