用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分析nignx访问日志脚本分享
Feb 26 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
Python选择网卡发包及接收数据包
Apr 04 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
python speech模块的使用方法
Sep 09 Python
聊一聊python常用的编程模块
May 14 Python
Python图像处理库PIL详细使用说明
Apr 06 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--用万网的接口实现域名查询功能
2012/12/13 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
Python 变量类型详解
2018/10/10 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
求职自荐信格式
2013/12/04 职场文书
公司前台辞职报告
2014/01/19 职场文书
情侣吵架检讨书
2014/02/05 职场文书
爽歪歪广告词
2014/03/20 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
《开国大典》教学反思
2016/02/16 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技