用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中fileno()方法的使用
May 24 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
python多进程并行代码实例
Sep 30 Python
python opencv进行图像拼接
Mar 27 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python自动化测试通过日志3分钟定位bug
Nov 20 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制作静态网站的模板框架(三)
2006/10/09 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python实现用户答题功能
2018/01/17 Python
python实现音乐下载器
2018/04/15 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Python for循环及基础用法详解
2019/11/08 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
pandas参数设置的实用小技巧
2020/08/23 Python
浅谈react路由传参的几种方式
2021/03/23 Javascript
个人自我鉴定怎么写
2013/10/28 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
QA工程师岗位职责
2013/11/20 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
大学军训感言200字
2014/02/26 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
2016党员入党决心书
2015/09/22 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL