用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使用代理抓取网站图片(多线程)
Mar 14 Python
Python3基础之基本数据类型概述
Aug 13 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
python3实现ftp服务功能(客户端)
Mar 24 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python实现简单日志记录库glog的使用
Dec 13 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
基于python3实现倒叙字符串
Feb 18 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Linux系统下升级pip的完整步骤
Jan 31 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/03 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
原生JS轮播图插件
2017/02/09 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
实例讲解v-if和v-show的区别
2019/01/31 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
Python实现单词拼写检查
2015/04/25 Python
不可错过的十本Python好书
2017/07/06 Python
python最长回文串算法
2018/06/04 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
python 解压pkl文件的方法
2018/10/25 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
《陈毅探母》教学反思
2014/05/01 职场文书
兽医医药专业求职信
2014/07/27 职场文书
关于教师节的广播稿
2014/09/10 职场文书
经理助理岗位职责
2015/02/02 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
导游词之五台山
2019/10/11 职场文书