Pytorch 容器 - 1. Module类介绍

这篇具有很好参考价值的文章主要介绍了Pytorch 容器 - 1. Module类介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 基于Module构建自己的网络

2. Module的初始化变量

3. Modules中需要子类 forward()

4. Modules中其他内置函数


1. 基于Module构建自己的网络

torch.nn.Module是所有神经网络模块的基类,如何定义自已的网络:

  • 由于 Module 是神经网络模块的基类,自己的模型应该要继承这个类
  • 要实现 torch.nn.Module 中的forward函数,从而进行网络的前向传播
  • 一般把网络中具有可学习参数的层放在构造函数__init__()中
  • 把不具有可学习参数的层(如ReLU)放在forward中,并通过nn.functional来代替
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):    # 继承nn.Module类
    def __init__(self):
        super(Model, self).__init__()
        # 把具有可学习参数的层放在构造函数中
        self.conv1 = nn.Conv2d(1, 20, 5)    
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):    # 实现forward函数
        # 在forward中直接使用torch.nn.functional.relu()函数
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

2. Module的初始化变量

nn.Module 类内置了一些初始化变量。包括在模块 forward、 backward 和权重加载等时候会被调用的的 hooks,也定义了 parameters 和 buffers,如源码所示:

def __init__(self):
    """
    Initializes internal Module state, shared by both nn.Module and ScriptModule.
    """
    torch._C._log_api_usage_once("python.nn_module")

    self.training = True    # 当前训练/测试的状态
    self._parameters = OrderedDict()    # 在训练过程中会随 BP 而更新的参数
    self._buffers = OrderedDict()    # 在训练过程中不会随 BP 而更新的参数
    self._non_persistent_buffers_set = set()    
    self._backward_hooks = OrderedDict()    # Backward 完成后会被调用的 hook
    self._is_full_backward_hook = None
    self._forward_hooks = OrderedDict()    # Forward 完成后会被调用的 hook
    self._forward_pre_hooks = OrderedDict()    # Forward 前会被调用的 hook
    self._state_dict_hooks = OrderedDict()    # 得到 state_dict 以后会被调用的 hook
    self._load_state_dict_pre_hooks = OrderedDict() # 加载state_dict 前会被调用的 hook
    self._modules = OrderedDict()    # 网络的子模块

3. Modules中需要子类 forward()

注意:在网络训练过程中,直接通过mode(input) 自动调用forward函数,而非model.forward(input)进行调用,因为mode(input)会自动调用self.__call__,接下来这些 hooks 在模块被调用时候的执行顺序如下图所示:

Pytorch 容器 - 1. Module类介绍

 

主要顺序如下:

  • 执行_forward_pre_hooks
  • 再调用 forward
  • 执行_forward_hooks
  • 执行_backward_hooks

4. Modules中其他内置函数

除了初始化的成员变量之外,Modules还内置了很多函数,具体包含以下几类:

(1) 属性访问:modules(), named_modules(), buffers(), named_buffers(), children(),  named_children(),  parameters(), named_parameters() 等

(2) 属性设置:register_parameter(),register_buffer(),register_forward_hook(),register_forward_pre_hook() 等

(3) 参数转换/转移:cpu(), cuda(), float(), double() 等

(4) 状态转换:train(), eval() 等

对于这些内置函数的详细介绍,在 PyTorch系列相关文章-Aaron_neil的csdn博客 持续更新中!

本文所参考的部分博客:

[1] pytorch 入坑三:nn module - 知乎

[2] torch.nn.Module模块简单介绍_allan2222的博客-CSDN博客

[3] PyTorch 源码解读之 nn.Module详解_OpenMMLab的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-415757.html

到了这里,关于Pytorch 容器 - 1. Module类介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【基于容器的部署、扩展和管理】3.1 容器编排系统和Kubernetes集群的构建

    往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 基于容器的部署、扩展和管理是一种现代软件开发和部署的方式,它提供了快速、可重复、可移植的开发和部署流程,同时也简化了应用程序的扩展和管理。 在基于容器的部署中,应用程序

    2024年02月08日
    浏览(49)
  • 【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

    本文通过docker-compose构建一个单体的rabbtimq容器。 首先需要有docker和docker-compose环境,docker安装[1],docker-compose安装[2]。 通过下列命令确定docker、docker-compose是否安装成功。 docker-compose在/usr/local/bin里,我们就在/usr/local下构建一个docker-compose目录,里面再构建各级不同容器的目

    2024年04月25日
    浏览(48)
  • 基于Pytorch构建Faster-RCNN网络进行目标检测(二)——预训练模型和预测

    CoCo的全称是Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集,包括检测、分割、关键点估计等任务,目前用的比较多的是Coco2017数据集。 Coco2017数据集是一个包含有大量图像和标注数据的开放数据集,它是微软公司在COCO项目基础上发展而来。这个

    2024年02月09日
    浏览(44)
  • 《人工智能专栏》必读150篇 | 专栏介绍 & 专栏目录 & Python与PyTorch | 机器与深度学习 | 目标检测 | YOLOv5及改进 | YOLOv8及改进 | 关键知识点 | 工具

    各位读者们好,本专栏最近刚推出,限于个人能力有限,不免会有诸多错误,敬请私信反馈给我,接受善意的提示,后期我会改正,谢谢,感谢。 第一步 :[ 购买点击跳转 ] 第二步 : 代码函数调用关系图(全网最详尽-重要) 因文档特殊,不能在博客正确显示,请移步以下链接

    2024年02月02日
    浏览(78)
  • docker基于已有容器和通过Dockerfile进行制作镜像配置介绍

    目录 一.制作镜像的两种方式 1.在已有容器中更新并提交这个镜像 2.使用Dockerfile来制作 二.基于容器制作镜像 1.格式 (1)主要格式 (2)可选参数 2.案例 基于容器创建镜像设置标签并进行验证是否可用 (1)运行容器并写入验证内容(改变容器存储层内容) (2)另起终端制

    2024年02月11日
    浏览(57)
  • Confidential Containers发布0.5.0版本,龙蜥将基于八大特性构建开箱即用的机密容器解决方案

    文/段勇帅 机密容器(Confidential Containers,简称CoCo)是 Cloud Native Computing Foundation(CNCF)Sandbox 项目。目前机密容器项目的核心参与者包括阿里云、AMD、ARM、IBM、Intel、Microsoft、Red Hat、Rivos 等软件和硬件公司。本次发布的 CoCo-0.5.0 release 是机密容器社区成立以来最大规模的版本

    2024年02月02日
    浏览(51)
  • 基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面

    在参照一些行业系统软件的时候,发现一个做的挺不错的系统功能-系统参数管理,相当于把任何一个基础的系统参数碎片化进行管理,每次可以读取一个值进行管理,这样有利于我们快速的处理业务需求,是一个挺好的功能。本篇随笔模拟这个功能,基于SqlSugar开发框架的基

    2023年04月23日
    浏览(46)
  • Docker基础(镜像的结构,Dockerfile语法介绍,基于Ubuntu镜像来构建一个Java应用)

    要想自己构建镜像,必须先了解镜像的结构。 镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依赖。 因此,自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运

    2024年02月20日
    浏览(49)
  • Pytorch:模块(Module类)

    在 PyTorch 中, Module 是一个非常核心的概念,它是所有神经网络层和模型的基础类。 torch.nn.Module 是构建所有神经网络的基类,在 PyTorch 中非常重要,因为它提供了网络的组织架构,并封装了权重、梯度的管理、模型参数的更新等功能。 PyTorch 中的 Linear 层 、 ReLU 激活函数 以

    2024年04月26日
    浏览(20)
  • Pytorch:torch.nn.Module

    torch.nn.Module 是 PyTorch 中神经网络模型的基类,它提供了模型定义、参数管理和其他相关功能。 以下是关于 torch.nn.Module 的详细说明: 1. torch.nn.Module 的定义: torch.nn.Module 是 PyTorch 中所有神经网络模型的基类,它提供了模型定义和许多实用方法。自定义的神经网络模型应该继

    2024年01月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包