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

wordpress git 7.5/北京网站优化服务

wordpress git 7.5,北京网站优化服务,学做网站丛什么开始,公司网站如何注册上一篇关于反向传播的代码仅支持单变量的梯度计算,下面我们将扩展代码使其支持多个输入/输出。增加了对多输入函数(如 Add),以实现的计算。 1.关于前向传播可变长参数的改进-修改Function类 修改方法: 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.whsansanxincailiao.cn/news/31975014.html

相关文章:

  • 新网站应该怎么做可以排名靠前/单页网站
  • 网站做多个产品/seo推广一年要多少钱
  • 小企业网站建设/今天发生了什么重大新闻
  • vs网站开发效果图/搜索引擎的关键词优化
  • 产品盘网站建设/网站新站整站排名
  • wordpress多合一seo包/东莞seo建站优化工具
  • 旅游网站管理系统论文/seo网站优化培训
  • 做的比较漂亮的中国网站/浙江网站建设营销
  • 做搜狗网站排名首页/站长工具四叶草
  • 我的世界是谁做的视频网站/爱站网站排名查询工具
  • 网站开发管理招聘/河南网站定制
  • 哈尔滨企业建站哪家靠谱/外贸谷歌优化
  • 网站建设的具体方法/上海全国关键词排名优化
  • 网站开发毕业论文/百度关键词排名查询
  • 网站在公司做有什么要求吗/品牌传播推广方案
  • php js做网站/品牌seo如何优化
  • 美容北京公司网站建设/广州网站建设推荐
  • 这么建立com的网站/电商数据分析
  • 网站盈利/2022最新小学生新闻
  • 网站报名照片怎么做/广州百度网站推广
  • wordpress 过滤词/seo服务加盟
  • 咨询聊城做网站/2022年新闻大事
  • 安陆做网站公司/百度seo服务方案
  • 怎么建设免费小说网站/外贸网站免费推广
  • 专业的河南网站建设公司哪家好/大连seo
  • 中山建设网站的公司/天津seo推广软件
  • 盘锦网站建设服务/windows优化大师下载
  • 没有网站百度推广吗/百度搜索名字排名优化
  • 上海疫情通报最新/seo网上培训
  • 如何做网站进行推广/线上产品推广方案