昇思25天学习打卡营第6天|munger85

函数式自动微分

一般来说,神经网络都是神经元组成,所以利用一些计算图组织神经网络的计算
在这里插入图片描述
非常重要。
在这里插入图片描述
可见mindspore里用Parameter申明会变的元
https://www.mindspore.cn/docs/zh-CN/r2.3.0rc2/api_python/ops/mindspore.ops.binary_cross_entropy_with_logits.html
官网的函数api文档指出
loss = ops.binary_cross_entropy_with_logits(z, y, ops.ones_like(z), ops.ones_like(z))
后面2个是权重,一个是输出的权重,1个是输入的权重。
表示在一批里,假如传入3个是一批,3个z的权重是怎么样的,ops.ones_like(z)就都是1,一样的权重,没有偏心,计算出来损失值
在这里插入图片描述
function就是前面计算loss的函数,
grad_fn = mindspore.grad(function, (2, 3))的2,3是function里哪个位置的变参要求导,所以是最后2个,我一共有4个参数
在这里插入图片描述

就得到2 tensor
在这里插入图片描述

关于梯度截断

梯度的作用是反向传播时让nn知道要怎么变化神经元的参数,当某些参数在计算图里的时候会影响所有神经元的梯度
在这里插入图片描述
这是计算梯度函数返回的东西多了个z,原来是只有loss,就是计算loss对于各个变参的梯度,现在还要计算z这个输出路径上的神经元变参对于各个变参梯度,得到的数值和单计算对于loss的不同
所以要截断z
在这里插入图片描述
grad_fn = mindspore.grad(function_with_logits, (2, 3), has_aux=True)
has_aux=True就可以让z对参数的梯度输出,而不参入z对参数的梯度影响。

在这里插入图片描述

nn的自动微分

在这里插入图片描述
这是前向计算,得到loss的函数,很常见
在这里插入图片描述
这样就得到了损失和损失对于参数的梯度
非常自动。本文常说的参数是什么呢
在这里插入图片描述
参数就是1神经元。1神经元里有不同的结构,是个众多参数的矩阵,说实话,ms里起名叫参数不好。个人建议应该叫cell,而cell应该改名为network。
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值