Torch的参数初始化
1.不需要初始化
- 调用nn.Linear()等封装好的模块,不需要初始化
def __init__(self, embed_size, heads, adj, dropout, forward_expansion):super(STransformer, self).__init__()# Spatial Embeddingself.adj = adjself.D_S = nn.Parameter(adj)self.embed_liner = nn.Linear(adj.shape[0], embed_size)self.attention = SSelfAttention(embed_size, heads)self.norm1 = nn.LayerNorm(embed_size)self.norm2 = nn.LayerNorm(embed_size)self.feed_forward = nn.Sequential(nn.Linear(embed_size, forward_expansion * embed_size),nn.ReLU(),nn.Linear(forward_expansion * embed_size, embed_size),)# 调用GCN# input:embed_size; hidden: embed_size*2; outpt:embed_sizeself.gcn = GCN(embed_size, embed_size*2, embed_size, dropout) self.norm_adj = nn.InstanceNorm2d(1) # 对邻接矩阵归一化self.dropout = nn.Dropout(dropout)self.fs = nn.Linear(embed_size, embed_size)self.fg = nn.Linear(embed_size, embed_size)
2.需要初始化
- 只有自己定义的参数,例如weight与bias才需要自定义初始化。一般在__init__层里,调用self.reset_parameters()来实现。
def __init__(self, in_features,out_features,bias=True):self.weight = Parameter(torch.FloatTensor(in_features, out_features))if bias:self.bias = Parameter(torch.FloatTensor(out_features))else:self.register_parameter('bias', None)self.reset_parameters()
- 在self.reset_parameters()函数里,使用两种方法
- 第一种:nn.init.xavier_uniform_(x, gain=nn.init.calculate_gain(‘relu’))。其中, gain 参数来自定义初始化的标准差来匹配特定的激活函数:
def reset_parameters(self, reset_mode='glorot_uniform'):nn.init.xavier_uniform_(self.bases, gain=nn.init.calculate_gain('relu'))nn.init.xavier_uniform_(self.comps, gain=nn.init.calculate_gain('relu'))nn.init.xavier_uniform_(self.weights, gain=nn.init.calculate_gain('relu'))if self.bias is not None:torch.nn.init.zeros_(self.bias)
-第二种:变量.data.uniform_(-stdv, stdv)
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)
- 补充:
raise ValueError(“Fan in and fan out can not be computed for tensor with fewer than 2 dimensions”)
# nn.init.xavier_uniform_(self.bv) # raise ValueError("Fan in and fan out can not be computed for tensor with fewer than 2 dimensions")self.bv.data.fill_(0)
Torch的参数初始化相关推荐
- Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化
Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...
- Pytorch基础知识整理(六)参数初始化
参数初始化的目的是限定网络权重参数的初始分布,试图让权重参数更接近参数空间的最优解,从而加速训练.pytorch中网络默认初始化参数为随机均匀分布,设定额外的参数初始化并非总能加速训练. 1,模板 在 ...
- PyTorch模型读写、参数初始化、Finetune
使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...
- pytorch中的参数初始化方法
参数初始化(Weight Initialization) PyTorch 中参数的默认初始化在各个层的 reset_parameters() 方法中.例如:nn.Linear 和 nn.Conv2D, ...
- PyTorch学习:参数初始化
Sequential 模型的参数初始化 import numpy as np import torch from torch import nn# 定义一个 Sequential 模型 net1 = ...
- pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法
Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...
- 网络优化(三)——参数初始化
文章目录 1. 基于固定方差的参数初始化 2. 基于方差缩放的参数初始化 2.1 Xavier 初始化 2.2 Kaiming初始化 3. 正交初始化 神经网络的参数学习是一个非凸优化问题.当使用梯度 ...
- 深度学习参数初始化(二)Kaiming初始化 含代码
目录 一.介绍 二.基础知识 三.Kaiming初始化的假设条件 四.Kaiming初始化的简单的公式推导 1.前向传播 2.反向传播 五.Pytorch实现 深度学习参数初始化系列: (一)Xavi ...
- PyTorch参数初始化和Finetune
前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是"最佳实践"吧.最后希望大家没事多逛逛论坛,有很多高质量的回答. ...
最新文章
- 超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M
- 数学图形(2.8)Viviani曲线
- R语言实战应用精讲50篇(八)-随机区组设计资料的方差分析
- leetcode 刷题 3. 无重复字符的最长子串解题思路
- 7.12-7.19 id、w、who、last、lastb、lastlog
- 黄梅理工学校计算机,黄梅理工学校2021年有哪些专业
- python 多线程 popen ping指定IP是否在线 判断连通
- 4-30 HTML 细节摘录
- Ruby中的字符串与符号
- 【less-1】基于SQLI的SQL字符型报错注入
- SQLServer中一个多用户自动生成编号的过程
- 【iOS开发】使用iFrameExtractor实现视频直播
- python五位回文数_蓝桥杯,特殊回文数,Python
- MySql ALTER用法
- ignite集成mysql_Ignite集成Spark之IgniteDataFrames
- 华为荣耀手机录制视频 华为手机如何录制视频
- HTML中视频的压缩方式,快速将视频压缩到最小的技巧!
- 黑盒子法探索人脑逻辑模型备忘录
- 天津大学计算机学院研究生报录比,天津大学2017年考研报录比
- mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
热门文章
- java计算机毕业设计基于ssm的网上跳蚤市场高校二手闲置交易网站
- mysql select符合查询_mysql学习-select查询,子查询,联接查询,union,intersect,except联合...
- 学习中用到的python脚本记录
- centos7修改主机名的方法
- Java开发真的这么赚钱?连做金融的忍不住转行了
- java生成英雄与怪物对象,java 创建一个LOL中的英雄类和怪物类 初学者,求大神指点...
- docker启动ssh、xrdp命令
- 各个流行语言优缺点对比及其适用场景
- 计算机画画作品 人物 游泳,幼儿人物画图片游泳的人
- 百度网盘是如何实现妙传的