浅析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的Tornado框架中的协程异步实现原理
Apr 23 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python组合无重复三位数的实例
Nov 13 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
python仿evething的文件搜索器实例代码
May 13 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python英语单词测试小程序代码实例
Sep 09 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Django框架请求生命周期实现原理
Nov 13 Python
方法汇总:Python 安装第三方库常用
Apr 26 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
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
Python中getpass模块无回显输入源码解析
2018/01/11 Python
TensorFlow如何实现反向传播
2018/02/06 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
理财投资建议书
2014/03/12 职场文书
党支部公开承诺书
2014/03/28 职场文书
家长学校工作方案
2014/05/07 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书