pytorch自定义二值化网络层方式


Posted in Python onJanuary 07, 2020

任务要求:

自定义一个层主要是定义该层的实现函数,只需要重载Function的forward和backward函数即可,如下:

import torch
from torch.autograd import Function
from torch.autograd import Variable

定义二值化函数

class BinarizedF(Function):
  def forward(self, input):
    self.save_for_backward(input)
    a = torch.ones_like(input)
    b = -torch.ones_like(input)
    output = torch.where(input>=0,a,b)
    return output
  def backward(self, output_grad):
    input, = self.saved_tensors
    input_abs = torch.abs(input)
    ones = torch.ones_like(input)
    zeros = torch.zeros_like(input)
    input_grad = torch.where(input_abs<=1,ones, zeros)
    return input_grad

定义一个module

class BinarizedModule(nn.Module):
  def __init__(self):
    super(BinarizedModule, self).__init__()
    self.BF = BinarizedF()
  def forward(self,input):
    print(input.shape)
    output =self.BF(input)
    return output

进行测试

a = Variable(torch.randn(4,480,640), requires_grad=True)
output = BinarizedModule()(a)
output.backward(torch.ones(a.size()))
print(a)
print(a.grad)

其中, 二值化函数部分也可以按照方式写,但是速度慢了0.05s

class BinarizedF(Function):
  def forward(self, input):
    self.save_for_backward(input)
    output = torch.ones_like(input)
    output[input<0] = -1
    return output
  def backward(self, output_grad):
    input, = self.saved_tensors
    input_grad = output_grad.clone()
    input_abs = torch.abs(input)
    input_grad[input_abs>1] = 0
    return input_grad

以上这篇pytorch自定义二值化网络层方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
深入解读Python解析XML的几种方式
Feb 16 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
pytorch使用Variable实现线性回归
May 21 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
举例讲解Python装饰器
Dec 24 Python
Pytorch: 自定义网络层实例
Jan 07 #Python
Python StringIO如何在内存中读写str
Jan 07 #Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 #Python
python模拟实现斗地主发牌
Jan 07 #Python
python全局变量引用与修改过程解析
Jan 07 #Python
python__new__内置静态方法使用解析
Jan 07 #Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 #Python
You might like
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python制作小说爬虫实录
2017/08/14 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
儿媳婚宴答谢词
2014/01/14 职场文书
职工趣味运动会方案
2014/02/10 职场文书
网络研修随笔感言
2014/02/17 职场文书
抽样调查项目计划书
2014/04/24 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
校园标语大全
2014/06/19 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
学习作风建设心得体会
2014/10/22 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js