浅析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中自定义函数的教程
Apr 27 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
python爬虫爬取网页表格数据
Mar 07 Python
python3爬取数据至mysql的方法
Jun 26 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
django在开发中取消外键约束的实现
May 20 Python
python如何建立全零数组
Jul 19 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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的特殊设置
2006/10/09 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
php-msf源码详解
2017/12/25 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
python 实现登录网页的操作方法
2018/05/11 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
wxPython实现分隔窗口
2019/11/19 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
精彩的英文自荐信
2014/01/30 职场文书
物业保安员岗位职责
2014/03/14 职场文书
副董事长岗位职责
2014/04/02 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
病危通知书样本
2015/04/17 职场文书