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实现类似jQuery使用中的链式调用的示例
Jun 16 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python闭包思想与用法浅析
Dec 27 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python创建n行m列数组示例
Dec 02 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
Python基于字典实现switch case函数调用
Jul 22 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
Python中的socket网络模块介绍
Jul 23 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处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
详解php的socket通信
2015/08/11 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JavaScript模拟push
2016/03/06 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Django的CVB实例详解
2020/02/10 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
群众路线剖析材料
2014/02/02 职场文书
先进集体事迹材料
2014/02/17 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
英文道歉信
2015/01/20 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python