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的参数初始化相关推荐

  1. Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化

    Pytorch 学习(6):Pytorch中的torch.nn  Convolution Layers  卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...

  2. Pytorch基础知识整理(六)参数初始化

    参数初始化的目的是限定网络权重参数的初始分布,试图让权重参数更接近参数空间的最优解,从而加速训练.pytorch中网络默认初始化参数为随机均匀分布,设定额外的参数初始化并非总能加速训练. 1,模板 在 ...

  3. PyTorch模型读写、参数初始化、Finetune

    使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...

  4. pytorch中的参数初始化方法

    参数初始化(Weight Initialization) PyTorch 中参数的默认初始化在各个层的 reset_parameters() 方法中.例如:nn.Linear 和 nn.Conv2D, ...

  5. PyTorch学习:参数初始化

    Sequential 模型的参数初始化 import numpy as np import torch from torch import nn# 定义一个 Sequential 模型 net1 = ...

  6. pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法

    Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...

  7. 网络优化(三)——参数初始化

    文章目录 1. 基于固定方差的参数初始化 2. 基于方差缩放的参数初始化 2.1 Xavier 初始化 2.2 Kaiming初始化 3. 正交初始化 神经网络的参数学习是一个非凸优化问题.当使用梯度 ...

  8. 深度学习参数初始化(二)Kaiming初始化 含代码

    目录 一.介绍 二.基础知识 三.Kaiming初始化的假设条件 四.Kaiming初始化的简单的公式推导 1.前向传播 2.反向传播 五.Pytorch实现 深度学习参数初始化系列: (一)Xavi ...

  9. PyTorch参数初始化和Finetune

    前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是"最佳实践"吧.最后希望大家没事多逛逛论坛,有很多高质量的回答. ...

最新文章

  1. 超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M
  2. 数学图形(2.8)Viviani曲线
  3. R语言实战应用精讲50篇(八)-随机区组设计资料的方差分析
  4. leetcode 刷题 3. 无重复字符的最长子串解题思路
  5. 7.12-7.19 id、w、who、last、lastb、lastlog
  6. 黄梅理工学校计算机,黄梅理工学校2021年有哪些专业
  7. python 多线程 popen ping指定IP是否在线 判断连通
  8. 4-30 HTML 细节摘录
  9. Ruby中的字符串与符号
  10. 【less-1】基于SQLI的SQL字符型报错注入
  11. SQLServer中一个多用户自动生成编号的过程
  12. 【iOS开发】使用iFrameExtractor实现视频直播
  13. python五位回文数_蓝桥杯,特殊回文数,Python
  14. MySql ALTER用法
  15. ignite集成mysql_Ignite集成Spark之IgniteDataFrames
  16. 华为荣耀手机录制视频 华为手机如何录制视频
  17. HTML中视频的压缩方式,快速将视频压缩到最小的技巧!
  18. 黑盒子法探索人脑逻辑模型备忘录
  19. 天津大学计算机学院研究生报录比,天津大学2017年考研报录比
  20. mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析

热门文章

  1. java计算机毕业设计基于ssm的网上跳蚤市场高校二手闲置交易网站
  2. mysql select符合查询_mysql学习-select查询,子查询,联接查询,union,intersect,except联合...
  3. 学习中用到的python脚本记录
  4. centos7修改主机名的方法
  5. Java开发真的这么赚钱?连做金融的忍不住转行了
  6. java生成英雄与怪物对象,java 创建一个LOL中的英雄类和怪物类 初学者,求大神指点...
  7. docker启动ssh、xrdp命令
  8. 各个流行语言优缺点对比及其适用场景
  9. 计算机画画作品 人物 游泳,幼儿人物画图片游泳的人
  10. 百度网盘是如何实现妙传的