用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 相关文章推荐
python基础教程之循环介绍
Aug 29 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
python 调用c语言函数的方法
Sep 29 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python 常用的基础函数
Jul 10 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Python函数生成器原理及使用详解
Mar 12 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
利用Python实现Json序列化库的方法步骤
Sep 09 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
php读取文件内容的几种方法详解
2013/06/26 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JS常用知识点整理
2017/01/21 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
房地产开盘策划方案
2014/02/10 职场文书
田径运动会通讯稿
2014/09/13 职场文书
荆州古城导游词
2015/02/06 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python