用pytorch的nn.Module构造简单全链接层实例


Posted in Python onJanuary 14, 2020

python版本3.7,用的是虚拟环境安装的pytorch,这样随便折腾,不怕影响其他的python框架

1、先定义一个类Linear,继承nn.Module

import torch as t
from torch import nn
from torch.autograd import Variable as V
 
class Linear(nn.Module):

  '''因为Variable自动求导,所以不需要实现backward()'''
  def __init__(self, in_features, out_features):
    super().__init__()
    self.w = nn.Parameter( t.randn( in_features, out_features ) ) #权重w 注意Parameter是一个特殊的Variable
    self.b = nn.Parameter( t.randn( out_features ) )   #偏值b
  
  def forward( self, x ): #参数 x 是一个Variable对象
    x = x.mm( self.w )
    return x + self.b.expand_as( x ) #让b的形状符合 输出的x的形状

2、验证一下

layer = Linear( 4,3 )
input = V ( t.randn( 2 ,4 ) )#包装一个Variable作为输入
out = layer( input )
out

#成功运行,结果如下:

tensor([[-2.1934, 2.5590, 4.0233], [ 1.1098, -3.8182, 0.1848]], grad_fn=<AddBackward0>)

下面利用Linear构造一个多层网络

class Perceptron( nn.Module ):
  def __init__( self,in_features, hidden_features, out_features ):
    super().__init__()
    self.layer1 = Linear( in_features , hidden_features )
    self.layer2 = Linear( hidden_features, out_features )
  def forward ( self ,x ):
    x = self.layer1( x )
    x = t.sigmoid( x ) #用sigmoid()激活函数
    return self.layer2( x )

测试一下

perceptron = Perceptron ( 5,3 ,1 )
 
for name,param in perceptron.named_parameters(): 
  print( name, param.size() )

输出如预期:

layer1.w torch.Size([5, 3])
layer1.b torch.Size([3])
layer2.w torch.Size([3, 1])
layer2.b torch.Size([1])

以上这篇用pytorch的nn.Module构造简单全链接层实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
详解python中asyncio模块
Mar 03 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python实现QQ空间自动点赞功能
Apr 09 Python
Python基础知识点 初识Python.md
May 14 Python
python调用动态链接库的基本过程详解
Jun 19 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
Python过滤序列元素的方法
Jul 31 Python
Python unittest生成测试报告过程解析
Sep 08 Python
python实现网络五子棋
Apr 11 Python
Python使用protobuf序列化和反序列化的实现
May 19 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 #Python
Python实现bilibili时间长度查询的示例代码
Jan 14 #Python
基于python监控程序是否关闭
Jan 14 #Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 #Python
使用Pytorch来拟合函数方式
Jan 14 #Python
pytorch 模拟关系拟合——回归实例
Jan 14 #Python
PyTorch实现AlexNet示例
Jan 14 #Python
You might like
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
PHP 代码规范小结
2012/03/08 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
jQuery 对象中的类数组操作
2009/04/27 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
Python pickle模块用法实例
2015/04/14 Python
python统计cpu利用率的方法
2015/06/02 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
高一自我鉴定
2013/12/17 职场文书
经典团队口号大全
2014/06/21 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
东京审判观后感
2015/06/01 职场文书
接收函
2019/04/22 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers