python权重初始值设置_pytorch自定义初始化权重的方法

在常见的pytorch代码中,我们见到的初始化方式都是调用init类对每层所有参数进行初始化。但是,有时我们有些特殊需求,比如用某一层的权重取优化其它层,或者手动指定某些权重的初始值。

核心思想就是构造和该层权重同一尺寸的矩阵去对该层权重赋值。但是,值得注意的是,pytorch中各层权重的数据类型是nn.Parameter,而不是Tensor或者Variable。

import torch

import torch.nn as nn

import torch.optim as optim

import numpy as np

# 第一一个卷积层,我们可以看到它的权值是随机初始化的

w=torch.nn.Conv2d(2,2,3,padding=1)

print(w.weight)

# 第一种方法

print("1.使用另一个Conv层的权值")

q=torch.nn.Conv2d(2,2,3,padding=1) # 假设q代表一个训练好的卷积层

print(q.weight) # 可以看到q的权重和w是不同的

w.weight=q.weight # 把一个Conv层的权重赋值给另一个Conv层

print(w.weight)

# 第二种方法

print("2.使用来自Tensor的权值")

ones=torch.Tensor(np.ones([2,2,3,3])) # 先创建一个自定义权值的Tensor,这里为了方便将所有权值设为1

w.weight=torch.nn.Parameter(ones) # 把Tensor的值作为权值赋值给Conv层,这里需要先转为torch.nn.Parameter类型,否则将报错

print(w.weight)

附:Variable和Parameter的区别

Parameter 是torch.autograd.Variable的一个字类,常被用于Module的参数。例如权重和偏置。

Parameters和Modules一起使用的时候会有一些特殊的属性。parameters赋值给Module的属性的时候,它会被自动加到Module的参数列表中,即会出现在Parameter()迭代器中。将Varaible赋给Module的时候没有这样的属性。这可以在nn.Module的实现中详细看一下。这样做是为了保存模型的时候只保存权重偏置参数,不保存节点值。所以复写Variable加以区分。

另外一个不同是parameter不能设置volatile,而且require_grad默认设置为true。Varaible默认设置为False.

参数:

parameter.data 得到tensor数据

parameter.requires_grad 默认为True, BP过程中会求导

Parameter一般是在Modules中作为权重和偏置,自动加入参数列表,可以进行保存恢复。和Variable具有相同的运算。

我们可以这样简单区分,在计算图中,数据(包括输入数据和计算过程中产生的feature map等)时variable类型,该类型不会被保存到模型中。 网络的权重是parameter类型,在计算过程中会被更新,将会被保存到模型中。

以上这篇pytorch自定义初始化权重的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持谷谷点程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vim案列掌握vim的基本操作——案例一:vim创建编写txt文件

案例一:vim创建编写txt文件 1.vim创建test.txt文件 vim test.txt 2.输入i,I,a,A,o,O,r,R均可(这里以i为例) 3.保存文件并退出vim。 a.先返回到一般模式 Esc b.冒号切换到命令行模式 : c.保存文件 :w d.退出vim :q successful 退回界面后可以再次…

Lagom学习 四 CompletionStage

Future: Java 8 之前的 Java 版本功能较弱&#xff0c;仅支持两种用法&#xff1a;要么检查 future 是否已经完成&#xff0c;要么等待 future 完成; Java 8 增加了 CompletableFuture<T> 类&#xff0c;它实现了新的 CompletionStage<T> 接口&#xff0c;并对 Fut…

网络定位-能定位到国家省份市区县街道

代码改变世界 直接上代码 package com.example.baidu;import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;import com.baidu.location.BDLocation; …

Vim功能键整理(图片来自mooc)

1.一般模式 2.编辑模式 3.命令行模式

rpn风险等级评价准则_2019一建经济学习重点:技术方案经济效果评价

2019年一级建造师备考正在进行中&#xff0c;你是在看教材还是在刷题呢&#xff1f;今天优路教育小编是来送干货的&#xff0c;教材太厚&#xff0c;知识点太乱&#xff0c;那就来看这里的考点总结吧。接下来小编带大家一起学习《工程经济》第一章工程经济。一建《工程经济》第…

Android编程之页面跳转整理(只涉及关键步骤,需要有一定的基础,小白学习勿入)

自我学习篇: 1.创建你需要的页面&#xff0c;这里演示以创建一个主页和一个 子页进行跳转作为参考。 2.编写layout&#xff0c;这里仅需要创建一个按钮即可&#xff0c;至于样式美观大家可以根据需要进行自我调整。 这里需要注意的是对id的修改&#xff0c;自己应该起一个相对…

电脑无法打开特定网页_监理检测网校电脑微信无法打开公路试验检测视频课程的处理方法...

电脑版微信安装后&#xff0c;通过微信中置顶的监理检测网校公众号&#xff0c;菜单进入网校课程有的人会出现课程打不开&#xff0c;直接打开的是浏览器&#xff0c;无法学习&#xff0c;处理方法如下&#xff1a;电脑上打开微信&#xff0c;左下角三横线图标点开 &#xff0c…

PHP和MySQL Web开发pdf

下载地址&#xff1a;网盘下载内容简介 本书将PHP开发与MySQL应用相结合&#xff0c;分别对PHP和MySQL做了深入浅出的分析&#xff0c;不仅介绍PHP和MySQL的一般概念&#xff0c;而且对PHP和MySQL的Web应用做了较全面的阐述&#xff0c;并包括几个经典且实用的例子。作者…

python stringstrip方法详解_Python 基础知识全篇-字符串(Strings)

字符串是字符的集合。单引号和双引号字符串可以包含在单引号或双引号中。my_string "This is a double-quoted string."my_string This is a single-quoted string.这种灵活的方式可以让我们在字符串中包含引号。quote "Linus Torvalds once said, Any progr…

Linux环境下创建运行.java文件

1.下载安装jdk。 一条yum指令就可以搞定了,也可以自己从windows上共享文件进行操作&#xff0c;有些复杂&#xff0c;这里不做详细描述。 以后熟练了&#xff0c;可能进行二更。 yum install java-1.8.0-openjdk* -y 这里需要注意是需要你转换到自己的root权限的 su root 截图…

JAVA核心技术卷2:高级特征(原书第8版)

下载地址&#xff1a;网盘下载内容简介 Java领域最有影响力和价值的著作之一&#xff0c;由拥有20多年教学与研究经验的资深Java技术专家撰写&#xff08;获Jolt大奖&#xff09;&#xff0c;与《Java编程思想》齐名&#xff0c;10余年全球畅销不衰&#xff0c;广受好评。…

python处理teradata数据库_Python脚本连接Teradata数据库

Connect Teradata frompythonBaseon Linux Ubuntu with python2.7参考网络搜索结果&#xff0c;具体出处不记得了&#xff0c;结合自身实践总结。以下操作为Linux环境&#xff0c;其他环境请自行调整。(中英文结合是因为这个总结最初也是受惠于歪果仁的分享)1, Install python …

Linux下的Shell编程之Helloworld.sh看过来

1.编写HelloWorld.sh vim HelloWorld.sh 2.按下i进行编辑 里面的代码如下: #!bin/sh echo "hello world!" 然后Esc退出编辑模式 然后:wq保存并退出vim 小白看参考: 小白vim指令学习 3.运行HelloWorld.sh&#xff08;方式有两种&#xff09; a.sh HelloWorld.sh …

python数据录入和分析_hive+python数据分析入门

本文作者系 leanote 的核心开发者, 多谢关注leanote. leanote官网, leanote github为什么要使用hivepython来分析数据举个例子,当年没有数据库的时候, 人们通过编程来操作文件系统, 这相当于我们编写mapreduce来分析数据.后来有了数据库, 没人再操作文件系统了(除非有其它需求)…

Linux下删除非空文件目录

删除目录大家第一反应应该和我一样都是rmdir 但今天有一个目录里因为配置有好多文件直接烦死&#xff0c;不能rmdir直接删除&#xff0c;要是使用这个指令还要先用cd指令转换到该目录下一个个删除&#xff0c;实在是有点麻烦&#xff0c;最后终于还是找到了正确的打开方式。 …

python不同版本共存_多版本Python共存的配置方法

同一台PC中&#xff0c;如果同时安装Python2和Python3环境&#xff0c;会在执行python命令时出现错误&#xff0c;操作系统会找到默认的配置进行执行。怎么样才能让python2和python3一起工作又互相不影响呢。但是由于工作需要&#xff0c;我们的个人PC上可能需要多个python版本…

jdk1.8配置(自我速成)

1.JAVA_HOME 变量名字:JAVA_HOME 变量值:找到自己安装jdk的目录即可&#xff0c;有的教程路径到了bin&#xff0c;但其实到不到都可以。 2.CLASSPATH 变量名:CLASSPATH 变量值&#xff1a; .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意这里那个英文的点点不要少了…

Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解转载于:https://www.cnblogs.com/LionheartCGJ/p/8488825.html

Eclipse export导出war包报错(Module name is invalid.)

出于设计模式的作业过程中遇到的问题&#xff0c;老师要求代码文件最后大家要导出war包&#xff0c;前两次还好好的&#xff0c;今天突然报错 这里来说一下原因&#xff0c;也就是web项目可以导出war包&#xff0c;而java项目是不可以的&#xff0c;下面的操作其实本质上就是给…

车载电脑中控软件_数字图书馆智能化系统集成-ipad中控软件

随着社会发展进入数字化时代&#xff0c;智慧展厅一词&#xff0c;也渐渐的让我们熟悉&#xff0c;在打造智慧展厅的同时&#xff0c;“中控系统软件”功不可没&#xff0c;中控系统软件的可能大家对这个产品也不是特别了解&#xff0c;但接下来&#xff0c;鼎深小编所要介绍的…