用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实现的百度贴吧网络爬虫实例
Apr 17 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
基于Python实现签到脚本过程解析
Oct 25 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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 array操作10个小技巧分享
2011/06/23 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
python基础教程之常用运算符
2014/08/29 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python绘制多个曲线的折线图
2020/03/23 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
优秀生推荐信范文
2013/11/28 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
西式婚礼主持词
2014/03/13 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
Python极值整数的边界探讨分析
2021/09/15 Python