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 相关文章推荐
Python中的装饰器用法详解
Jan 14 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
基于python神经卷积网络的人脸识别
May 24 Python
python 重命名轴索引的方法
Nov 10 Python
python opencv 简单阈值算法的实现
Aug 04 Python
python内打印变量之%和f的实例
Feb 19 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
零基础小白多久能学会python
Jun 22 Python
Python编写nmap扫描工具
Jul 21 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注释实例技巧
2008/10/03 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
浅谈Python 对象内存占用
2016/07/15 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
社区母亲节活动总结
2015/02/10 职场文书
校园安全教育心得体会
2016/01/15 职场文书
Python读写yaml文件
2022/03/20 Python
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
MongoDB支持的索引类型
2022/04/11 MongoDB
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers