浅析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中的文件操作
Aug 28 Python
python非递归全排列实现方法
Apr 10 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
Python中文编码知识点
Feb 18 Python
在python中画正态分布图像的实例
Jul 08 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
python爬虫实现获取下一页代码
Mar 13 Python
Python读取yaml文件的详细教程
Jul 21 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
python+flask实现API的方法
2018/11/21 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python shutil模块用法实例分析
2019/10/02 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
python 实现dict转json并保存文件
2019/12/05 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
企业办公室主任岗位职责
2014/02/19 职场文书
兴趣班停课通知
2015/04/24 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
win10下go mod配置方式
2021/04/25 Golang
Python re.sub 反向引用的实现
2021/07/07 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
Java异常处理try catch的基本用法
2021/12/06 Java/Android