Consulte: torch.nn.init - Nube + Comunidad - Tencent Cloud
1. torch.nn.init.
constant_
( tensor , valor )
1. Función:
Distribución constante: Llene el vector con el valor val.
2. Parámetros:
- tensor : una antorcha n-dimensional.Tensor
- val – el valor con el que llenar el tensor
3. Ejemplo:
import torch
form torch from nn
w = torch.empty(3, 5)
print(w)
print(nn.init.constant_(w, 0.3))
-------------------------------------
tensor([[6.4069e+02, 2.7489e+20, 1.5444e+25, 1.6217e-19, 7.0062e+22],
[1.6795e+08, 4.7423e+30, 4.7393e+30, 9.5461e-01, 4.4377e+27],
[1.7975e+19, 4.6894e+27, 7.9463e+08, 3.2604e-12, 2.6209e+20]])
tensor([[0.3000, 0.3000, 0.3000, 0.3000, 0.3000],
[0.3000, 0.3000, 0.3000, 0.3000, 0.3000],
[0.3000, 0.3000, 0.3000, 0.3000, 0.3000]])
二. torch.nn.init.normal_(tensor, media=0, std=1)
1. Función:
Distribución normal: genera valores a partir de una distribución normal N (media, estándar) con una media y una desviación estándar determinadas, llenando el tensor o variable de entrada.
2. Parámetros:
- tensor - antorcha n-dimensional.Tensor
- media : la media de la distribución normal
- std – la desviación estándar de la distribución normal
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(torch.nn.init.normal_(w))
----------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[-1.1406, -0.1720, -1.4460, 0.5305, -0.0854],
[ 0.8992, 0.3495, -0.8262, -1.4641, -0.6426],
[ 0.7404, 0.7124, -0.3902, 0.0625, 0.6256]])
tres. torch.nn.init.uniform_(tensor, a=0.0, b=1.0)
1.作用:
Distribución uniforme: Genera valores a partir de la distribución uniforme N (a, b), llenando el tensor o variable de entrada.
2. Parámetros:
tensor
– antorcha n-dimensional.Tensora
– Límite inferior para una distribución uniformeb
– Límite superior para una distribución uniforme
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.uniform_(w))
-----------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[0.6653, 0.9605, 0.2208, 0.0140, 0.9672],
[0.4201, 0.5819, 0.8383, 0.4334, 0.0673],
[0.1246, 0.4066, 0.3413, 0.1231, 0.0463]])
Cuatro. torch.nn.init.ones_(tensor)
1.作用
:
全1分布:
1
Rellena el tensor de entrada con un valor escalar .
2. Parámetros:
tensor
– antorcha n-dimensional.Tensor
3. Ejemplo :
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.ones_(w))
---------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
cinco. torch.nn.init.zeros_(tensor)
1.作用:
Distribución todo cero: llena el tensor con todos ceros.
2. Parámetros:
tensor
– antorcha n-dimensional.Tensor
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.zeros_(w))
-------------------------------------------------
tensor([[-4.2990e-27, 4.5701e-41, -4.2990e-27, 4.5701e-41, nan],
[ 4.5699e-41, 7.6194e+31, 1.5564e+28, 4.7984e+30, 6.2121e+22],
[ 1.8370e+25, 1.4603e-19, 6.4069e+02, 2.7489e+20, 1.5444e+25]])
tensor([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
seis. torch.nn.init.eye_(tensor)
1.作用:
对角分布:
Llene el tensor o variable de entrada 2D con la matriz identidad .
2. Parámetros:
tensor
– Antorcha bidimensional. Tensor o autograd. Variable
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.eye_(w))
-------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.]])
Siete. torch.nn.init.dirac_(tensor, groups=1)
1.作用:
dirac分布:
Utilice la función delta de Dirac para llenar variables o tensores de entrada dimensionales {3, 4, 5}. Conserve tantas características del canal de entrada como sea posible en la capa convolucional .
2. Parámetros:
tensor
– Antorcha de {3, 4, 5} dimensiones. Tensor o autogrado. Variable
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 16, 5, 5)
print(w.shape)
print(nn.init.dirac_(w).shape)
z = torch.empty(3, 24, 5, 5)
print(z.shape)
print(nn.init.dirac_(z, 3).shape)
---------------------------------------------
torch.Size([3, 16, 5, 5])
torch.Size([3, 16, 5, 5])
torch.Size([3, 24, 5, 5])
torch.Size([3, 24, 5, 5])
ocho. torch.nn.init.xavier_uniform_(tensor, gain=1.0)
1. Función:
distribución xavier_uniform: genera valores a partir de una distribución uniforme para llenar el tensor o variable de entrada.
2. Parámetros:
tensor
– antorcha n-dimensional.Tensorgain
– Factor de escala opcional
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu')))
----------------------------------------------------------
tensor([[6.4069e+02, 2.7489e+20, 1.5444e+25, 1.6217e-19, 7.0062e+22],
[1.6795e+08, 4.7423e+30, 4.7393e+30, 9.5461e-01, 4.4377e+27],
[1.7975e+19, 4.6894e+27, 7.9463e+08, 3.2604e-12, 2.6209e+20]])
tensor([[-0.9562, -0.6834, 0.7449, -0.2484, -0.7638],
[-1.0150, -0.2982, -0.2133, -1.1132, -1.0273],
[ 0.5228, 0.9122, -0.5077, -0.2911, 0.1625]])
Nueve. torch.nn.init.xavier_normal_(tensor, gain=1.0)
1. Función:
distribución xavier_normal: genera valores a partir de una distribución normal para llenar el tensor o variable de entrada.
2. Parámetros:
tensor
– antorcha n-dimensional.Tensorgain
– Factor de escala opcional
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.xavier_normal_(w))
--------------------------------------------
tensor([[4.7984e+30, 6.2121e+22, 1.8370e+25, 1.4603e-19, 6.4069e+02],
[2.7489e+20, 1.5444e+25, 1.6217e-19, 7.0062e+22, 1.6795e+08],
[4.7423e+30, 4.7393e+30, 9.5461e-01, 4.4377e+27, 1.7975e+19]])
tensor([[ 0.3654, 0.4767, 0.1407, -0.4990, 0.2799],
[ 0.0545, 0.5941, -0.3611, 0.5469, 0.0781],
[-0.0393, 0.1817, -0.0407, -0.2593, -0.2736]])
diez. torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
1. Función:
Distribución kaiming_uniform: genera valores a partir de una distribución uniforme para llenar el tensor o variable de entrada.
2. Parámetros:
tensor
– antorcha n-dimensional. Tensor o autograd.Variable;- a – el coeficiente de pendiente del rectificador utilizado después de esta capa (el valor predeterminado de ReLU es 0);
- modo : puede ser “fan_in” (predeterminado) o “fan_out”;
- “fan_in” – la magnitud de la variación del peso al preservar la propagación hacia adelante;
- “fan_out” – conserva la magnitud durante la retropropagación;
- nonlinearity='leaky_relu' : se recomienda utilizar funciones no lineales "relu" o "leaky_relu" (predeterminado).
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu'))
-------------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[ 0.6771, -0.7587, 0.6915, -0.7163, 0.0840],
[-1.0694, -0.4790, -0.4019, -0.8439, 0.5794],
[-0.9363, -0.0655, -0.0506, -0.1419, 0.5395]])
once. torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
1. Función:
Distribución kaiming_normal: genera valores a partir de una distribución normal para llenar el tensor o variable de entrada.
2. Parámetros:
tensor
– antorcha n-dimensional. Tensor o autograd.Variable;- a – el coeficiente de pendiente del rectificador utilizado después de esta capa (el valor predeterminado de ReLU es 0);
- modo : puede ser “fan_in” (predeterminado) o “fan_out”. fan_in conserva la magnitud de la variación de peso durante la propagación hacia adelante fan_out conserva la magnitud durante la propagación hacia atrás.
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu'))
-------------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[-0.2421, 1.3102, -0.0506, 0.5099, -0.1017],
[-1.2707, -0.9636, -0.4539, 1.1167, 0.6717],
[ 0.1898, 0.6261, -1.1114, -0.4440, 0.5798]])
doce. torch.nn.init.orthogonal_(tensor, gain=1)
1. Función:
Matriz ortogonal: llena el tensor de entrada con una matriz (semi)ortogonal.
2. Parámetros:
tensor
– Un tensor n-dimensional, donde n≥2gain
– Factor de escala opcional
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.orthogonal_(w))
------------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[-0.2146, -0.8764, -0.3447, -0.1060, 0.2363],
[-0.1957, 0.2711, 0.0974, -0.6438, 0.6813],
[ 0.6258, -0.3716, 0.6203, -0.2903, -0.0353]]
doce. torch.nn.init.sparse_(tensor, sparsity, std=0.01)
1. Función:
Matriz dispersa: complete el tensor de entrada 2D como una matriz dispersa, donde los elementos distintos de cero se extraerán de la distribución normal N (0, 0.01) N(0,0.01)N(0,0.01).
2. Parámetros:
tensor
– Un tensor torch.tensor n-dimensionalsparsity
– La escala de elementos en cada columna se establece en cero.std
– La desviación estándar de la distribución normal utilizada para producir valores distintos de cero.
3. Ejemplo:
import torch
from torch import nn
w = torch.empty(3, 5)
print(w)
print(nn.init.sparse_(w, sparsity=0.1))
------------------------------------------
tensor([[9.5461e-01, 4.4377e+27, 1.7975e+19, 4.6894e+27, 7.9463e+08],
[3.2604e-12, 2.6209e+20, 4.1641e+12, 1.9434e-19, 3.0881e+29],
[6.3828e+28, 1.4603e-19, 7.7179e+28, 7.7591e+26, 3.0357e+32]])
tensor([[ 0.0112, 0.0000, -0.0055, 0.0000, 0.0000],
[ 0.0026, -0.0009, 0.0000, -0.0044, -0.0012],
[ 0.0000, 0.0176, 0.0022, -0.0037, -0.0035]])