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中stdout输出不缓存的设置方法
May 29 Python
python分割文件的常用方法
Nov 01 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
Python实现购物车功能的方法分析
Nov 10 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
Python笔记之代理模式
Nov 20 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
python中uuid模块实例浅析
Dec 29 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python模块学习 datetime介绍
2012/08/27 Python
Python函数参数操作详解
2018/08/03 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python实现直播推流效果
2019/11/26 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
八年级历史教学反思
2014/01/10 职场文书
大学同学会活动方案
2014/08/20 职场文书
联欢会开场白
2015/06/01 职场文书
工程主管竞聘书
2015/09/15 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL