用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学习手册中的python多态示例代码
Jan 21 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
python中map()函数的使用方法示例
Sep 29 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
浅析python中的迭代与迭代对象
Oct 08 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
基于django micro搭建网站实现加水印功能
May 22 Python
Python request post上传文件常见要点
Nov 20 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 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
escape unescape的php下的实现方法
2007/04/27 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
brook javascript框架介绍
2011/10/10 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
JavaScript运动原理基础知识详解
2020/04/02 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python获取当前时间的方法
2014/01/14 Python
python套接字流重定向实例汇总
2016/03/03 Python
python中kmeans聚类实现代码
2018/02/23 Python
Python 处理文件的几种方式
2019/08/23 Python
python爬虫基础知识点整理
2020/06/02 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python与js主要区别点总结
2020/09/13 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
机械专业个人求职自荐信格式
2013/09/21 职场文书
药学专业大学生自荐信
2013/09/28 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
大学生励志演讲稿
2014/04/25 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
会计求职简历自我评价
2015/03/10 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
MYSQL如何查看进程和kill进程
2022/03/13 MySQL