0608-nn和autograd的区别

pytorch完整教程目录:https://www.cnblogs.com/nickchen121/p/14662511.html

一、nn 和 autograd 的区别

Module 利用的是 autograd 的技术,主要是为了实现前向传播。在 forward 函数中,Module 对输入的 Variable 进行的各种操作基本都使用到了 autograd 的技术。

因此在这里主要对比 autograd.Functionnn.Module 两者之间的区别。

  • autograd.Function 利用 Tensor 对 autograd 技术的扩展,为 autograd 实现了新的运算操作符,不仅要实现前向传播还要手动实现反向传播
  • nn.Module 利用了 autograd 技术,对 nn 的功能进行扩展,实现了深度学习中的大部分层,并且只需要实现前向传播,autograd 就会自动实现反向传播
  • nn.functional 是一些 autograd 操作的集合,是经过封装的函数,如果使用它来构建深度神经网络,需要自己编写前向传播和反向传播函数

二、Function 和 Module 在实际中使用的情况

Funciton 和 Module 作为扩充 torch 的两种接口,在实际中

  1. 如果某一个操作在 autograd 中尚未支持,则可以利用 Function 手动实现对应的前向传播和反向传播
  2. 如果某些时候利用 autograd 接口比较复杂,也可以利用 Function 将多个操作聚合,实现优化,如第 3 章 扩展 autograd 那一节实现的 Sigimoid 一样,此时将会比直接利用 autograd 低级别的操作要快
  3. 如果只是想在深度学习中增加某一层,使用 Module 进行封装则会更加简单

0608-nn和autograd的区别的更多相关文章

  1. Pytorch本人疑问(1) torch.nn和torch.nn.functional之间的区别

    在写代码时发现我们在定义Model时,有两种定义方法: torch.nn.Conv2d()和torch.nn.functional.conv2d() 那么这两种方法到底有什么区别呢,我们通过下述代码看 ...

  2. PyTorch 中,nn 与 nn.functional 有什么区别?

    作者:infiniteft链接:https://www.zhihu.com/question/66782101/answer/579393790来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  3. 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...

  4. [pytorch笔记] torch.nn vs torch.nn.functional; model.eval() vs torch.no_grad(); nn.Sequential() vs nn.moduleList

    1. torch.nn与torch.nn.functional之间的区别和联系 https://blog.csdn.net/GZHermit/article/details/78730856 nn和n ...

  5. PyTorch教程之Neural Networks

    我们可以通过torch.nn package构建神经网络. 现在我们已经了解了autograd,nn基于autograd来定义模型并对他们有所区分. 一个 nn.Module模块由如下部分构成:若干层 ...

  6. PyTorch进行深度学习入门

    一.PyTorch是什么? 这是一个基于Python的科学计算软件包,针对两组受众: ①.NumPy的替代品,可以使用GPU的强大功能 ②.深入学习研究平台,提供最大的灵活性和速度 二.入门 ①.张量 ...

  7. 60 分钟极速入门 PyTorch

    2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...

  8. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | NEURAL NETWORKS

    神经网络可以使用 torch.nn包构建. 现在你已经对autograd有所了解,nn依赖 autograd 定义模型并对其求微分.nn.Module 包括层,和一个返回 output 的方法 - f ...

  9. 实践torch.fx第一篇——基于Pytorch的模型优化量化神器

    第一篇--什么是torch.fx 今天聊一下比较重要的torch.fx,也趁着这次机会把之前的torch.fx笔记整理下,笔记大概拆成三份,分别对应三篇: 什么是torch.fx 基于torch.fx ...

  10. Neural Networks

    神经网络能够使用torch.nn包构建神经网络. 现在你已经对autogard有了初步的了解,nn基于autograd来定义模型并进行微分.一个nn.Module包含层,和一个forward(inpu ...

随机推荐

  1. 【Java】 Springboot+Vue 大文件断点续传

    同事在重构老系统的项目时用到了这种大文件上传 第一篇文章是简书的这个: https://www.jianshu.com/p/b59d7dee15a6 是夏大佬写的vue-uploader组件: htt ...

  2. 【Java】匿名表达式 + 构造块

    来源自同事的一个代码截图 可以看见最后一行装填HashMap的语法非常的不常见 在我整理思绪之后才明白这语法是使用了 匿名内部类 + 对象构造代码块 一般使用场景是发生在容器对象的创建上,因为有些时候 ...

  3. 【微信小程序】 全局数据共享

    1.什么是全局数据共享 全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题. 开发中常用的全局数据共享方案有: Vuex.Redux. MobX等. 2.小程序中的全局数据共享方案 在小 ...

  4. 【SpringBoot】01 快速上手

    环境搭建: JDK8 + IDEA 2018 + SpringBoot + Maven 3.0 + 创建Boot项目 2020.6.1更新补充: 最近才发现SpringBoot用IDEA构建项目会发生 ...

  5. 【SpringMVC】05 RestFul风格

    什么是RestFul风格? 一个资源定位和资源操作的风格,不是标准,也不是协议, 基于此风格的路径访问可以隐藏真实的参数传递,以提高网站的安全访问 以往的请求参数: jdbc:mysql://loca ...

  6. 制作Linux系统的启动盘

    我不是没有试过软碟通制作启动盘 在写入U盘的选项确认的时候,盘区不支持NTFS!? 另外什么大白菜和老毛桃这样的根本就不支持Linux镜像加载 还是百度的这个靠谱 https://jingyan.ba ...

  7. Electronics投稿指南

    原地址: https://m.peipusci.com/news/10593.html Electronics的自引率先增后减,2023年度为10.3%.

  8. 如何在CMAKE中指定python路径——使用cmake为python编译扩展模块时指定python路径

    答案: cmake -DPython3_EXECUTABLE=/path/to/bin/python3 ================================================ ...

  9. 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(3) —— 游戏AI解法设计篇

    接前文: 再探 游戏 < 2048 > -- AI方法-- 缘起.缘灭(2) -- 游戏环境设计篇 - Hello_BeautifulWorld - 博客园 (cnblogs.com) = ...

  10. canvas实现手动绘制矩形

    开场白 虽然在实际的开发中我们很少去绘制流程图 就算需要,我们也会通过第3方插件去实现 下面我们来简单实现流程图中很小的一部分 手动绘制矩形 绘制一个矩形的思路 我们这里绘制矩形 会使用到canvas ...