python使用torch随机初始化参数

目录
  • 1、从均匀分布中生成值
  • 2、分布N(mean, std)中生成值
  • 3、使用值val填充输入Tensor
    • 3.1、使用0,或者1 填充数据
  • 4、用单位矩阵填充二维输入张量
  • 5、其他常用的初始化方法

1、从均匀分布中生成值

w = torch.zeros(3, 5)
w
Out[75]: 
tensor([[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]])
torch.nn.init.uniform_(w, a=10, b=15)
Out[76]: 
tensor([[11.8949, 11.0836, 10.6348, 13.4524, 12.8051],
        [14.5289, 11.3441, 10.0570, 11.0310, 11.3643],
        [10.2919, 11.2083, 13.5757, 13.3987, 11.0059]])

2、分布N(mean, std)中生成值

从给定均值和标准差的正态分布N(mean, std)中生成值,填充输入的张量或变量

w = torch.zeros(3, 5)
torch.nn.init.normal_(w, mean=0, std=0.1)
Out[78]: 
tensor([[-0.1810, -0.0781,  0.0562,  0.0239, -0.0599],
        [ 0.0340,  0.1520,  0.0534,  0.1895,  0.0135],
        [ 0.0149, -0.1131, -0.0643,  0.0160, -0.2282]])

3、使用值val填充输入Tensor

w = torch.empty(2, 5)
torch.nn.init.constant_(w, val=0.6)
Out[80]: 
tensor([[0.6000, 0.6000, 0.6000, 0.6000, 0.6000],
        [0.6000, 0.6000, 0.6000, 0.6000, 0.6000]])

3.1、使用0,或者1 填充数据

torch.nn.init.zeros_(w)
Out[83]: 
tensor([[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]])

torch.nn.init.ones_(w)
Out[85]: 
tensor([[1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]])

4、用单位矩阵填充二维输入张量

w = torch.empty(3, 5)
torch.nn.init.eye_(w)
Out[82]: 
tensor([[1., 0., 0., 0., 0.],
        [0., 1., 0., 0., 0.],
        [0., 0., 1., 0., 0.]])
torch.nn.init.zeros_(w)

5、其他常用的初始化方法

torch.nn.init.xavier_normal_(w)
Out[87]: 
tensor([[ 0.2121, -0.3607,  0.6342,  0.1501,  0.0018],
        [-0.0737,  0.6971, -0.2628,  0.1004, -0.0322],
        [ 0.0093,  0.7139,  0.0263,  0.7135,  0.6979]])
torch.nn.init.xavier_uniform_(w)
Out[88]: 
tensor([[-0.1675, -0.1284, -0.4856,  0.5762, -0.6135],
        [ 0.0711, -0.8592, -0.0317,  0.6801,  0.4777],
        [ 0.2965, -0.5528, -0.5425,  0.5166,  0.5759]])
torch.nn.init.kaiming_normal_(w)
Out[89]: 
tensor([[ 0.0015,  0.0681,  0.5349, -0.0972, -0.8459],
        [ 0.6095, -0.0047,  0.2383,  1.1911, -1.2320],
        [-0.7059, -0.0080,  0.4166,  0.6686, -0.9375]])
torch.nn.init.kaiming_uniform_(w)
Out[90]: 
tensor([[-0.2876,  0.3591,  0.7630,  0.5041, -0.6685],
        [-0.6666,  0.5787,  0.9411, -0.0918,  1.0930],
        [-0.5985, -0.9909,  0.4831, -0.6703,  0.0351]])

到此这篇关于python使用torch随机初始化参数的文章就介绍到这了,更多相关torch随机初始化参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pytorch卷积层手动初始化权值的实例

    由于研究关系需要自己手动给卷积层初始化权值,但是好像博客上提到的相关文章比较少(大部分都只提到使用nn.init里的按照一定分布初始化方法),自己参考了下Pytorch的官方文档,发现有两种方法吧. 所以mark下. import torch import torch.nn as nn import torch.optim as optim import numpy as np # 第一一个卷积层,我们可以看到它的权值是随机初始化的 w=torch.nn.Conv2d(2,2,3,padding

  • pytorch  网络参数 weight bias 初始化详解

    权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生. 在pytorch的使用过程中有几种权重初始化的方法供大家参考. 注意:第一种方法不推荐.尽量使用后两种方法. # not recommend def weights_init(m): classname = m.__class__.__name__ if classname.find('Conv') != -1: m.weight.data.normal_(0.0, 0.02) elif classname.

  • Pytorch 实现权重初始化

    在TensorFlow中,权重的初始化主要是在声明张量的时候进行的. 而PyTorch则提供了另一种方法:首先应该声明张量,然后修改张量的权重.通过调用torch.nn.init包中的多种方法可以将权重初始化为直接访问张量的属性. 1.不初始化的效果 在Pytorch中,定义一个tensor,不进行初始化,打印看看结果: w = torch.Tensor(3,4) print (w) 可以看到这时候的初始化的数值都是随机的,而且特别大,这对网络的训练必定不好,最后导致精度提不上,甚至损失无法收敛

  • Pytorch - TORCH.NN.INIT 参数初始化的操作

    路径: https://pytorch.org/docs/master/nn.init.html#nn-init-doc 初始化函数:torch.nn.init # -*- coding: utf-8 -*- """ Created on 2019 @author: fancp """ import torch import torch.nn as nn w = torch.empty(3,5) #1.均匀分布 - u(a,b) #torch.n

  • 对Pytorch神经网络初始化kaiming分布详解

    函数的增益值 torch.nn.init.calculate_gain(nonlinearity, param=None) 提供了对非线性函数增益值的计算. 增益值gain是一个比例值,来调控输入数量级和输出数量级之间的关系. fan_in和fan_out pytorch计算fan_in和fan_out的源码 def _calculate_fan_in_and_fan_out(tensor): dimensions = tensor.ndimension() if dimensions < 2:

  • pytorch自定义初始化权重的方法

    在常见的pytorch代码中,我们见到的初始化方式都是调用init类对每层所有参数进行初始化.但是,有时我们有些特殊需求,比如用某一层的权重取优化其它层,或者手动指定某些权重的初始值. 核心思想就是构造和该层权重同一尺寸的矩阵去对该层权重赋值.但是,值得注意的是,pytorch中各层权重的数据类型是nn.Parameter,而不是Tensor或者Variable. import torch import torch.nn as nn import torch.optim as optim imp

  • python PyTorch参数初始化和Finetune

    前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是"最佳实践"吧.最后希望大家没事多逛逛论坛,有很多高质量的回答. 参数初始化 参数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了data,grad等借口,这就意味着我们可以直接对这些参数进行操作赋值了.这就是PyTorch简洁高效所在. 所以我们可以进行如下操作进行初始化,当然其实有其他的方法,但是这种方法

  • python使用torch随机初始化参数

    目录 1.从均匀分布中生成值 2.分布N(mean, std)中生成值 3.使用值val填充输入Tensor 3.1.使用0,或者1 填充数据 4.用单位矩阵填充二维输入张量 5.其他常用的初始化方法 1.从均匀分布中生成值 w = torch.zeros(3, 5) w Out[75]:  tensor([[0., 0., 0., 0., 0.],         [0., 0., 0., 0., 0.],         [0., 0., 0., 0., 0.]]) torch.nn.ini

  • OpenCV python sklearn随机超参数搜索的实现

    本文介绍了OpenCV python sklearn随机超参数搜索的实现,分享给大家,具体如下: """ 房价预测数据集 使用sklearn执行超参数搜索 """ import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np import sklearn import pandas as pd import os import sys import tens

  • python深度学习tensorflow1.0参数初始化initializer

    目录 正文 所有初始化方法定义 1.tf.constant_initializer() 2.tf.truncated_normal_initializer() 3.tf.random_normal_initializer() 4.random_uniform_initializer = RandomUniform() 5.tf.uniform_unit_scaling_initializer() 6.tf.variance_scaling_initializer() 7.tf.orthogona

  • Python决策树和随机森林算法实例详解

    本文实例讲述了Python决策树和随机森林算法.分享给大家供大家参考,具体如下: 决策树和随机森林都是常用的分类算法,它们的判断逻辑和人的思维方式非常类似,人们常常在遇到多个条件组合问题的时候,也通常可以画出一颗决策树来帮助决策判断.本文简要介绍了决策树和随机森林的算法以及实现,并使用随机森林算法和决策树算法来检测FTP暴力破解和POP3暴力破解,详细代码可以参考: https://github.com/traviszeng/MLWithWebSecurity 决策树算法 决策树表现了对象属性和

  • Python语言描述随机梯度下降法

    1.梯度下降 1)什么是梯度下降? 因为梯度下降是一种思想,没有严格的定义,所以用一个比喻来解释什么是梯度下降. 简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方.但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点.如图所示,黑线标注的路线所指的方向并不是真正的地方. 既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走? 先说选方向,在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因. 如果选定了方向,以后每走一步,都是选择最陡的方向,直到最低点.

  • Python实现的随机森林算法与简单总结

    本文实例讲述了Python实现的随机森林算法.分享给大家供大家参考,具体如下: 随机森林是数据挖掘中非常常用的分类预测算法,以分类或回归的决策树为基分类器.算法的一些基本要点: *对大小为m的数据集进行样本量同样为m的有放回抽样: *对K个特征进行随机抽样,形成特征的子集,样本量的确定方法可以有平方根.自然对数等: *每棵树完全生成,不进行剪枝: *每个样本的预测结果由每棵树的预测投票生成(回归的时候,即各棵树的叶节点的平均) 著名的python机器学习包scikit learn的文档对此算法有

  • 对python的unittest架构公共参数token提取方法详解

    额...每个请求都有token值的传入,但是token非常易变,一旦变化,所有的接口用例都得改一遍token,工作量太大了... 那么有没有一种方法能把token提取出来,作为一个全局变量,作为一个参数,从而牵一发而动全身呢?? 经过探索,具体方案如下 先定义一个全局变量token类型为string 然后把请求链接定义一个变量类型为string 然后定义第三个变量=前两个变量相加 然后requests直接传第三个变量就行了 具体代码如下: class Test(unittest.TestCase

  • Python如何定义有可选参数的元类

    问题 你想定义一个元类,允许类定义时提供可选参数,这样可以控制或配置类型的创建过程. 解决方案 在定义类的时候,Python允许我们使用 ``metaclass``关键字参数来指定特定的元类. 例如使用抽象基类: from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxsize=None): pass @abstractmethod de

  • Python如何生成随机高斯模糊图片详解

    高斯模糊的介绍与原理 通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果. "模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur).它将正态分布(又名"高斯分布")用于图像处理. 所谓"模糊",可以理解成每一个像素都取周边像素的平均值. 上图中,2是中间点,周边点都是1. "中间点"取"周围点"的平均值,就会变成1.在数值

随机推荐