浅析PyTorch中nn.Module的使用


Posted in Python onAugust 18, 2019

torch.nn.Modules 相当于是对网络某种层的封装,包括网络结构以及网络参数和一些操作

torch.nn.Module 是所有神经网络单元的基类

查看源码

初始化部分:

def __init__(self):
  self._backend = thnn_backend
  self._parameters = OrderedDict()
  self._buffers = OrderedDict()
  self._backward_hooks = OrderedDict()
  self._forward_hooks = OrderedDict()
  self._forward_pre_hooks = OrderedDict()
  self._state_dict_hooks = OrderedDict()
  self._load_state_dict_pre_hooks = OrderedDict()
  self._modules = OrderedDict()
  self.training = True

属性解释:

  • _parameters:字典,保存用户直接设置的 Parameter
  • _modules:子 module,即子类构造函数中的内容
  • _buffers:缓存
  • _backward_hooks与_forward_hooks:钩子技术,用来提取中间变量
  • training:判断值来决定前向传播策略

方法定义:

def forward(self, *input):
 raise NotImplementedError

没有实际内容,用于被子类的 forward() 方法覆盖

且 forward 方法在 __call__ 方法中被调用:

def __call__(self, *input, **kwargs):
 for hook in self._forward_pre_hooks.values():
    hook(self, input)
  if torch._C._get_tracing_state():
    result = self._slow_forward(*input, **kwargs)
  else:
    result = self.forward(*input, **kwargs)
  ...
  ...

实例展示

简单搭建:

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
  def __init__(self, n_feature, n_hidden, n_output):
    super(Net, self).__init__()
    self.hidden = nn.Linear(n_feature, n_hidden)
    self.out = nn.Linear(n_hidden, n_output)

  def forward(self, x):
    x = F.relu(self.hidden(x))
    x = self.out(x)
    return x

Net 类继承了 torch 的 Module 和 __init__ 功能

hidden 是隐藏层线性输出

out 是输出层线性输出

打印出网络的结构:

>>> net = Net(n_feature=10, n_hidden=30, n_output=15)
>>> print(net)
Net(
 (hidden): Linear(in_features=10, out_features=30, bias=True)
 (out): Linear(in_features=30, out_features=15, bias=True)
)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
numpy.linspace函数具体使用详解
May 27 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
django 连接数据库 sqlite的例子
Aug 14 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python计算IV值的示例讲解
Feb 28 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
Feb 25 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 Python
python神经网络ResNet50模型
May 06 Python
关于PyTorch 自动求导机制详解
Aug 18 #Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 #Python
pytorch numpy list类型之间的相互转换实例
Aug 18 #Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 #Python
pytorch 自定义数据集加载方法
Aug 18 #Python
PyTorch的Optimizer训练工具的实现
Aug 18 #Python
Pytorch反向求导更新网络参数的方法
Aug 17 #Python
You might like
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
处理php自动反斜杠的函数代码
2010/01/05 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP加密解密函数详解
2015/10/28 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
vue实现记事本功能
2019/06/26 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python3+Appium安装使用教程
2019/07/05 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
django跳转页面传参的实现
2020/09/17 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
人事主管的岗位职责
2013/11/16 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
学校财务管理制度
2015/08/04 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书