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正则表达式操作指南(re使用)
Sep 06 Python
python通过imaplib模块读取gmail里邮件的方法
May 08 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
python获取中文字符串长度的方法
Nov 14 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
Python构建图像分类识别器的方法
Jan 12 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
pytorch中的numel函数用法说明
May 13 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
numpy中的高维数组转置实例
2018/04/17 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
django做form表单的数据验证过程详解
2019/07/26 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
专科毕业生学习生活的自我评价
2013/10/26 职场文书
生物工程专业求职信
2014/09/03 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python