pytorch relu函数实现_Pytorch 自定义Function

本文详细介绍了如何在PyTorch中自定义一个ReLU函数,通过创建继承自`torch.autograd.Function`的`MyReLU`类,实现前向传播和反向传播过程。此外,还探讨了Function与Module的差异,以及如何将自定义的ReLU类封装为可直接调用的函数。
摘要由CSDN通过智能技术生成

转载:https://zhuanlan.zhihu.com/p/27783097

https://zhuanlan.zhihu.com/XavierLin

0. 本章内容

在本次,我们将学习如何自定义一个torch.autograd.Function,下面是本次的主要内容

1. 对Function的直观理解;

2. Function与Module的差异与应用场景;

3. 写一个简单的ReLU Function;

1.对Function的直观理解

在之前的介绍中,我们知道,Pytorch是利用Variable与Function来构建计算图的。回顾下Variable,Variable就像是计算图中的节点,保存计算结果(包括前向传播的激活值,反向传播的梯度),而Function就像计算图中的边,实现Variable的计算,并输出新的Variable。Function简单说就是对Variable的运算,如加减乘除,relu,pool等。但它不仅仅是简单的运算。与普通Python或者numpy的运算不同,Function是针对计算图,需要计算反向传播的梯度。因此他不仅需要进行该运算(forward过程),还需要保留前向传播的输入(为计算梯度),并支持反向传播计算梯度。如果有做过公开课cs231的作业,记得里面的每个运算都定义了forward,backward,并通过保存cache来进行反向传播。这两者是类似的。在之前Variable的学习中,我们知道进行一次运算后,输出的Variable对应的creator就是其运行的计算,如y = relu(x), y.creator,就

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值