Pytorch 实现自定义参数层的例子


Posted in Python onAugust 17, 2019

注意,一般官方接口都带有可导功能,如果你实现的层不具有可导功能,就需要自己实现梯度的反向传递。

官方Linear层:

class Linear(Module):
  def __init__(self, in_features, out_features, bias=True):
    super(Linear, self).__init__()
    self.in_features = in_features
    self.out_features = out_features
    self.weight = Parameter(torch.Tensor(out_features, in_features))
    if bias:
      self.bias = Parameter(torch.Tensor(out_features))
    else:
      self.register_parameter('bias', None)
    self.reset_parameters()

  def reset_parameters(self):
    stdv = 1. / math.sqrt(self.weight.size(1))
    self.weight.data.uniform_(-stdv, stdv)
    if self.bias is not None:
      self.bias.data.uniform_(-stdv, stdv)

  def forward(self, input):
    return F.linear(input, self.weight, self.bias)

  def extra_repr(self):
    return 'in_features={}, out_features={}, bias={}'.format(
      self.in_features, self.out_features, self.bias is not None
    )

实现view层

class Reshape(nn.Module):
  def __init__(self, *args):
    super(Reshape, self).__init__()
    self.shape = args

  def forward(self, x):
    return x.view((x.size(0),)+self.shape)

实现LinearWise层

class LinearWise(nn.Module):
  def __init__(self, in_features, bias=True):
    super(LinearWise, self).__init__()
    self.in_features = in_features

    self.weight = nn.Parameter(torch.Tensor(self.in_features))
    if bias:
      self.bias = nn.Parameter(torch.Tensor(self.in_features))
    else:
      self.register_parameter('bias', None)
    self.reset_parameters()

  def reset_parameters(self):
    stdv = 1. / math.sqrt(self.weight.size(0))
    self.weight.data.uniform_(-stdv, stdv)
    if self.bias is not None:
      self.bias.data.uniform_(-stdv, stdv)

  def forward(self, input):
    x = input * self.weight
    if self.bias is not None:
      x = x + self.bias
    return x

以上这篇Pytorch 实现自定义参数层的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
使用Python实现简单的服务器功能
Aug 25 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
最小二乘法及其python实现详解
Feb 24 Python
python将数据插入数据库的代码分享
Aug 16 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 #Python
画pytorch模型图,以及参数计算的方法
Aug 17 #Python
pytorch 共享参数的示例
Aug 17 #Python
Pytorch卷积层手动初始化权值的实例
Aug 17 #Python
pytorch自定义初始化权重的方法
Aug 17 #Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 #Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 #Python
You might like
PHP 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php简单统计中文个数的方法
2016/09/30 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
php-msf源码详解
2017/12/25 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
jQuery创建插件的代码分析
2011/04/14 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
就业自我评价
2014/02/04 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
公司应聘求职信
2014/06/21 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL