[Aprendizaje rápido] Introducción a Pytorch (XNUMX): Implemente la regresión MLP y aprenda los conceptos básicos de PyTorch

La última vez, revisé cómo manejar la antorcha, que es la base de PyTorch.

Esta vez, me gustaría implementar la regresión de perceptrón multicapa (MLP) en PyTorch y ver los paquetes principales de PyTorch.

Flujo general

El flujo general de implementación del modelo es el siguiente. Los números entre paréntesis son los paquetes de PyTorch utilizados en ese momento.

  • Creación de conjuntos de datos de entrada, procesamiento iterativo (conjunto de datos, cargador de datos)
  • Definición de red neuronal (nn. Módulo)
  • Cálculo de pérdidas, gradiente propagado a parámetros de red (módulo nn)
  • Actualizar los pesos de la red (Optimaizer)

Paquetes principales de PyTorch

Independientemente de PyTorch, muchos marcos de aprendizaje profundo ofrecen varios paquetes para simplificar la implementación. Los elementos principales de PyTorch son:

antorcha.tensorMatriz multidimensional. Estructura de datos utilizada en PyTorch.
antorcha.autogradImplementar propagación hacia adelante / hacia atrás.Admite la operación de diferenciación automática para Tensor, como la propagación hacia atrás (hacia atrás ()).
antorcha.utils.datosIncluye utilidades como "Dataset" que recopila los datos que se ingresarán y su etiqueta como un conjunto, y "Dataloader" que extrae datos del Dataset en un mini-lote y los pasa al modelo.
antorcha.nn.ModuleSe utiliza para construir redes neuronales.Responsable de la encapsulación de parámetros, como guardar y cargar modelos y pasar a GPU.
antorcha.optimLe permite utilizar algoritmos de optimización de parámetros como SDG y Adam.
Paquetes principales de PyTorch

Implementación del modelo

Creando un conjunto de datos

Esta vez, prepararemos sin (5x) más números aleatorios como datos de práctica con numpy.from_numpy()Convierta a torch.tensor con.

Definición de modelo

En pytorch, el modelo se define como una "clase python" que hereda de la clase nn.Module.

clase MLP (nn.Module): La clase MLP definida hereda de la clase principal nn.
def init (): Recibe argumentos y crea instancias
super (MLP, uno mismo) .init (): Hereda la clase principal con superfunción
def adelante (yo, x): Funciona cuando se llama a la función después de la instanciación. Cuando define la función de avance, la función de retroceso (cálculo de gradiente) también se define automáticamente.

.parameters()Puede obtener la estructura y los parámetros de la red con.

Cálculo de pérdidas / retropropagación / actualización de peso

Para comprender el comportamiento individual, tomaremos un dato de x y lo ingresaremos en la red neuronal para ver cómo cambian los parámetros debido a los cálculos de error y las actualizaciones de peso.

Intenta cambiar el ciclo de aprendizaje

Realice el flujo anterior para cada lote para entrenar la red neuronal.
DatasetDevuelve un conjunto de datos y la etiqueta correspondiente,DataLoaderEs una clase que devuelve datos en tamaño de lote.

Visualización de gráfico de cálculo

La estructura del MLP de 3 capas creado esta vez se puede visualizar utilizando un paquete de Python llamado torchviz.parameters()Por favor, cuando no sea suficiente.

Hasta ahora, hemos identificado PyTorch y sus principales paquetes de PyTorch a través de la implementación de la regresión MLP.