浅析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相似模块用例
Mar 04 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
python实现蒙特卡罗方法教程
Jan 28 Python
利用Django模版生成树状结构实例代码
May 19 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
django 模版关闭转义方式
May 14 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
python中使用np.delete()的实例方法
Feb 01 Python
Django+Celery实现定时任务的示例
Jun 23 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+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python实现CET查分的方法
2015/03/10 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
详解Python字典的操作
2019/03/04 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
2014年大学生自我评价
2014/01/19 职场文书
法院授权委托书范文
2014/08/02 职场文书
党员民主评议个人总结
2014/10/20 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫