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实现的DES加密算法和3DES加密算法实例
Jun 03 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
浅谈django orm 优化
Aug 18 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
Numpy一维线性插值函数的用法
Apr 22 Python
Python学习之time模块的基本使用
Jan 17 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
如何在Python中创建二叉树
Mar 30 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
syntaxhighlighter 使用方法
2007/07/02 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JavaScript中string对象
2015/06/12 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
python简单程序读取串口信息的方法
2015/03/13 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python中的字符串内部换行方法
2018/07/19 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
python实现淘宝购物系统
2019/10/25 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
中国旅游网站:途牛旅游网
2019/09/29 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
2014年学生会工作总结
2014/11/07 职场文书
2014年创卫工作总结
2014/11/24 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
总结一些Java常用的加密算法
2021/06/11 Java/Android
nginx中proxy_pass各种用法详解
2021/11/07 Servers
设置IIS Express并发数
2022/07/07 Servers
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS