Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

516
Vistas
¿Cómo inicializar pesos en PyTorch?

¿Cómo inicializo los pesos y sesgos de una red (a través de, por ejemplo, la inicialización de He o Xavier)?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Una sola capa

Para inicializar los pesos de una sola capa, use una función de torch.nn.init . Por ejemplo:

 conv1 = torch.nn.Conv2d(...) torch.nn.init.xavier_uniform(conv1.weight)

Alternativamente, puede modificar los parámetros escribiendo en conv1.weight.data (que es un torch.Tensor ). Ejemplo:

 conv1.weight.data.fill_(0.01)

Lo mismo se aplica a los sesgos:

 conv1.bias.data.fill_(0.01)

nn.Sequential o custom nn.Module

Pase una función de inicialización a torch.nn.Module.apply . Inicializará los pesos en todo el nn.Module recursivamente.

apply( fn ): aplica fn recursivamente a cada submódulo (tal como lo devuelve .children() ), así como a sí mismo. El uso típico incluye inicializar los parámetros de un modelo (ver también torch-nn-init).

Ejemplo:

 def init_weights(m): if isinstance(m, nn.Linear): torch.nn.init.xavier_uniform(m.weight) m.bias.data.fill_(0.01) net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2)) net.apply(init_weights)
over 4 years ago · Santiago Trujillo Denunciar

0

Para inicializar capas, normalmente no necesita hacer nada. PyTorch lo hará por ti. Si lo piensas bien, esto tiene mucho sentido. ¿Por qué deberíamos inicializar capas, cuando PyTorch puede hacerlo siguiendo las últimas tendencias?

Compruebe, por ejemplo, la capa Lineal .

En el método __init__ llamará a la función de inicio de Kaiming He .

 def reset_parameters(self): init.kaiming_uniform_(self.weight, a=math.sqrt(3)) if self.bias is not None: fan_in, _ = init._calculate_fan_in_and_fan_out(self.weight) bound = 1 / math.sqrt(fan_in) init.uniform_(self.bias, -bound, bound)

Lo mismo es para otros tipos de capas. Para conv2d , por ejemplo, consulte aquí .

Para tener en cuenta: la ganancia de una inicialización adecuada es la velocidad de entrenamiento más rápida. Si su problema merece una inicialización especial, puede hacerlo después.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda