pytorch 自定义参数不更新方式


Posted in Python onJanuary 06, 2020

nn.Module中定义参数:不需要加cuda,可以求导,反向传播

class BiFPN(nn.Module):
  def __init__(self, fpn_sizes):

  self.w1 = nn.Parameter(torch.rand(1))

  print("no---------------------------------------------------",self.w1.data, self.w1.grad)

下面这个例子说明中间变量可能没有梯度,但是最终变量有梯度:

cy1 cd都有梯度

import torch
 
xP=torch.Tensor([[ 3233.8557, 3239.0657, 3243.4355, 3234.4507, 3241.7087,
     3243.7292, 3234.6826, 3237.6609, 3249.7937, 3244.8623,
     3239.5349, 3241.4626, 3251.3457, 3247.4263, 3236.4924,
     3251.5735, 3246.4731, 3242.4692, 3239.4958, 3247.7283,
     3251.7134, 3249.0237, 3247.5637],
    [ 1619.9011, 1619.7140, 1620.4883, 1620.0642, 1620.2191,
     1619.9796, 1617.6597, 1621.1522, 1621.0869, 1620.9725,
     1620.7130, 1620.6071, 1620.7437, 1621.4825, 1620.5107,
     1621.1519, 1620.8462, 1620.5944, 1619.8038, 1621.3364,
     1620.7399, 1621.1178, 1618.7080],
    [ 1619.9330, 1619.8542, 1620.5176, 1620.1167, 1620.1577,
     1620.0579, 1617.7155, 1621.1718, 1621.1338, 1620.9572,
     1620.6288, 1620.6621, 1620.7074, 1621.5305, 1620.5656,
     1621.2281, 1620.8346, 1620.6021, 1619.8228, 1621.3936,
     1620.7616, 1621.1954, 1618.7983],
    [ 1922.6078, 1922.5680, 1923.1331, 1922.6604, 1922.9589,
     1922.8818, 1920.4602, 1923.8107, 1924.0142, 1923.6907,
     1923.4465, 1923.2820, 1923.5728, 1924.4071, 1922.8853,
     1924.1107, 1923.5465, 1923.5121, 1922.4673, 1924.1871,
     1923.6248, 1923.9086, 1921.9496],
    [ 1922.5948, 1922.5311, 1923.2850, 1922.6613, 1922.9734,
     1922.9271, 1920.5950, 1923.8757, 1924.0422, 1923.7318,
     1923.4889, 1923.3296, 1923.5752, 1924.4948, 1922.9866,
     1924.1642, 1923.6427, 1923.6067, 1922.5214, 1924.2761,
     1923.6636, 1923.9481, 1921.9005]])
 
yP=torch.Tensor([[ 2577.7729, 2590.9868, 2600.9712, 2579.0195, 2596.3684,
     2602.2771, 2584.0305, 2584.7749, 2615.4897, 2603.3164,
     2589.8406, 2595.3486, 2621.9116, 2608.2820, 2582.9534,
     2619.2073, 2607.1233, 2597.7888, 2591.5735, 2608.9060,
     2620.8992, 2613.3511, 2614.2195],
    [ 673.7830,  693.8904,  709.2661,  675.4254,  702.4049,
      711.2085,  683.1571,  684.6160,  731.3878,  712.7546,
      692.3011,  701.0069,  740.6815,  720.4229,  681.8199,
      736.9869,  718.5508,  704.3666,  695.0511,  721.5912,
      739.6672,  728.0584,  729.3143],
    [ 673.8367,  693.9529,  709.3196,  675.5266,  702.3820,
      711.2159,  683.2151,  684.6421,  731.5291,  712.6366,
      692.1913,  701.0057,  740.6229,  720.4082,  681.8656,
      737.0168,  718.4943,  704.2719,  695.0775,  721.5616,
      739.7233,  728.1235,  729.3387],
    [ 872.9419,  891.7061,  905.8004,  874.6565,  899.2053,
      907.5082,  881.5528,  883.0028,  926.3083,  908.9742,
      890.0403,  897.8606,  934.6913,  916.0902,  880.4689,
      931.3562,  914.4233,  901.2154,  892.5759,  916.9590,
      933.9291,  923.0745,  924.4461],
    [ 872.9661,  891.7683,  905.8128,  874.6301,  899.2887,
      907.5155,  881.6916,  883.0234,  926.3242,  908.9561,
      890.0731,  897.9221,  934.7324,  916.0806,  880.4300,
      931.3933,  914.5662,  901.2715,  892.5501,  916.9894,
      933.9813,  923.0823,  924.3654]])
 
 
shape=[4000, 6000]
cx,cy1=torch.rand(1,requires_grad=True),torch.rand(1,requires_grad=True)
 
cd=torch.rand(1,requires_grad=True)
ox,oy=cx,cy1
print('cx:{},cy:{}'.format(id(cx),id(cy1)))
print('ox:{},oy:{}'.format(id(ox),id(oy)))
cx,cy=cx*shape[1],cy1*shape[0]
print('cx:{},cy:{}'.format(id(cx),id(cy)))
print('ox:{},oy:{}'.format(id(ox),id(oy)))
distance=torch.sqrt(torch.pow((xP-cx),2)+torch.pow((yP-cy),2))
mean=torch.mean(distance,1)
starsFC=cd*torch.pow((distance-mean[...,None]),2)
loss=torch.sum(torch.mean(starsFC,1).squeeze(),0)
loss.backward()
print(loss)
print(cx)
print(cy1)
print("cx",cx.grad)
print("cy",cy1.grad)
print("cd",cd.grad)
print(ox.grad)
print(oy.grad)
print('cx:{},cy:{}'.format(id(cx),id(cy)))
print('ox:{},oy:{}'.format(id(ox),id(oy)))

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

Python 相关文章推荐
开始着手第一个Django项目
Jul 15 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
django admin后台添加导出excel功能示例代码
May 15 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
在django中form的label和verbose name的区别说明
May 20 Python
python numpy实现rolling滚动案例
Jun 08 Python
Keras自定义IOU方式
Jun 10 Python
keras slice layer 层实现方式
Jun 11 Python
Python计算信息熵实例
Jun 18 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
3种python调用其他脚本的方法
Jan 06 #Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 #Python
浅析Python3 pip换源问题
Jan 06 #Python
通过实例学习Python Excel操作
Jan 06 #Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 #Python
python与mysql数据库交互的实现
Jan 06 #Python
win10系统下python3安装及pip换源和使用教程
Jan 06 #Python
You might like
一周学会PHP(视频)Http下载
2006/12/12 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
js style动态设置table高度
2014/10/21 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
Async Validator 异步验证使用说明
2017/07/03 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
深入解析koa之异步回调处理
2019/06/17 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
安踏广告词改编版
2014/03/21 职场文书
校庆口号
2014/06/20 职场文书
教师节寄语2015
2015/03/23 职场文书