Ejercicio: Creación de una red neuronal para la clasificación de rocas espaciales

Completado

Crearemos una red neuronal (o red de aprendizaje profundo) para aprender las asociaciones entre las características y cada tipo de roca. Las características pueden incluir elementos como curvas, bordes y textura.

Neuronas y redes cableadas

Las redes neuronales procesan información de forma similar al funcionamiento de nuestros cerebros. Nuestros cerebros constan de neuronas o células nerviosas que transmiten y procesan la información que recibe de los sentidos. Muchas células nerviosas se organizan como una red de nervios en el cerebro. Los nervios pasan los impulsos eléctricos de una neurona a la siguiente en la red.

Las redes neuronales tienen millones de neuronas y nervios y, para crear una red neuronal funcional, conectamos las neuronas y los nervios entre sí en dos pasos:

  • Paso A: Creación de todas las neuronas.
  • Paso B: Conexión de las neuronas de forma adecuada (existen miles de formas de conectar neuronas).

En nuestro modelo, recopilaremos las características de una roca de una imagen y las almacenaremos como una secuencia lineal de parámetros. Este paso crea una única neurona. Cada nueva imagen que se analiza es otra neurona. Proporcionamos los datos de entrenamiento para que nuestro equipo compile todas las neuronas.

A continuación, indicaremos al equipo que combine las secuencias en una matriz. La matriz representa el mejor patrón que tenemos para describir las características de los tipos de roca espacial. Esta matriz es una red cableada.

Entrenaremos nuestro modelo para predecir el tipo de roca. Compararemos las características de la roca de una nueva imagen con el patrón de matriz. Cada vez que ejecutamos el modelo, la matriz crece y mejora la precisión de la predicción. Nuestro objetivo es probar el modelo y lograr una precisión de la predicción cercana al 100 %.

Comprobación del entorno de trabajo

Para poder agregar código nuevo al modelo de IA, es necesario asegurarse de que el entorno de desarrollo sigue activo.

Si cerró el símbolo del sistema de Anaconda o Visual Studio Code, debe reiniciarlos. Deberá configurar el entorno para seguir trabajando en el modelo de IA.

Si el símbolo del sistema de Anaconda sigue abierto desde el trabajo del módulo anterior y no ha cerrado Visual Studio Code, continúe con la sección, Creación de una red neuronal.

Comprobación del entorno de Anaconda (myenv)

Si cerró el símbolo del sistema de Anaconda después de completar los ejercicios del módulo anterior, siga estos pasos para reiniciar el entorno.

  1. Inicie la aplicación Anaconda prompt (o terminal en Mac).

  2. En el símbolo del sistema de Anaconda, escriba el siguiente comando para activar el entorno:

    conda activate myenv
    
  3. Use el siguiente comando para comprobar la instalación del paquete de torchvision:

    conda install -c pytorch torchvision
    

    El sistema debe informar de que todos los paquetes solicitados ya están instalados. Puede omitir las advertencias sobre la versión de Anaconda (conda).

Reinicio de Visual Studio y el kernel de Python

Si ha actualizado el entorno de Anaconda siguiendo los pasos anteriores o ha cerrado Visual Studio Code después de completar los ejercicios del módulo anterior, debe reiniciar la aplicación y el kernel myenv de Python.

  1. Reinicie Visual Studio Code.

  2. Abra el archivo de Jupyter Notebook que creó anteriormente.

    En los ejercicios anteriores, se usó el archivo de Jupyter Notebook ClassifySpaceRockProgram.ipynb.

  3. Inicie el kernel myenv de Python de Jupyter. En las esquinas superior derecha e inferior izquierda de Visual Studio, cambie al entorno de Anaconda ('myenv') que creó anteriormente.

Nueva ejecución de celdas en el archivo de Jupyter Notebook

Si ha actualizado el entorno de Anaconda o ha reiniciado Visual Studio Code, debe ejecutar las celdas existentes en el archivo de Jupyter Notebook para poder agregar nuevas celdas de código.

  1. Para volver a ejecutar las celdas en el archivo de Jupyter Notebook, comience desde la primera celda del archivo de Notebook.

  2. Ejecute cada celda de Notebook en orden, desde la primera celda del archivo hasta la última.

  3. Si no hay errores, continúe con la sección siguiente, Creación de una red neuronal.

Solución de errores del entorno

Estas son algunas sugerencias para ayudar a solucionar errores en el proceso de instalación:

  • Si recibe errores al ejecutar celdas existentes en el archivo de Jupyter Notebook, asegúrese de haber seguido todos los pasos de esta sección:

    1. Reinicie el entorno de Anaconda. Active myenv. Compruebe la instalación de torchvision.
    2. Reinicie Visual Studio Code. Inicie el kernel de Python myenv de Jupyter.
    3. Ejecute las celdas existentes en el archivo de Jupyter Notebook, desde la primera celda hasta la última.
  • Si recibe un error sobre un comando o biblioteca específicos, es posible que tenga que actualizar una biblioteca a través del entorno del símbolo del sistema de Anaconda. Asegúrese de que el entorno del símbolo del sistema de Anaconda indica que todas las bibliotecas se descargan e instalan. Siga los pasos para descargar las bibliotecas de IA de Python como se describe en un módulo anterior.

  • Si detecta errores en Visual Studio Code, intente reiniciar la aplicación, reiniciar el kernel myenv y ejecutar las celdas existentes en el archivo de Jupyter Notebook.

  • Si es posible, intente completar los ejercicios de todos los módulos de la ruta de aprendizaje en una sola sesión. Intente no cerrar el entorno del símbolo del sistema de Anaconda o Visual Studio Code.

Creación de una red neuronal

Una vez que confirme que el entorno está activo, estará listo para crear una red neuronal para el modelo de inteligencia artificial.

Detección del tipo de dispositivo

Es necesario ayudar al equipo a determinar la manera más eficaz de crear la red de aprendizaje profundo. En primer lugar, es necesario que encontremos el tipo de dispositivo que usa: CPU o GPU. Las API de PyTorch ofrecen compatibilidad para formar una red neuronal según el tipo de dispositivo.

  • Agregue el siguiente código en una nueva celda y, a continuación, ejecute la celda.

    # Determine if you're using a CPU or a GPU device to build the deep learning network
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model = models.resnet50(pretrained=True)
    

    Una vez que el sistema detecta el dispositivo, descarga las estructuras de modelo adecuadas en la ubicación de instalación de PyTorch del equipo.

Creación de neuronas y conexión de la red

Agreguemos código al archivo de Jupyter Notebook para compilar las neuronas y conectar la red.

  • Agregue el siguiente código en una nueva celda y, a continuación, ejecute la celda.

    # Build all the neurons
    for param in model.parameters():
         param.requires_grad = False
    
    # Wire the neurons together to create the neural network
    model.fc = nn.Sequential(nn.Linear(2048, 512),
                                   nn.ReLU(),
                                   nn.Dropout(0.2),
                                   nn.Linear(512, 2),
                                   nn.LogSoftmax(dim=1))
    
    criterion = nn.NLLLoss()
    optimizer = optim.Adam(model.fc.parameters(), lr=0.003)
    
    # Add the neural network to the device
    model.to(device)
    
    print('done')
    

    Cuando se completa la compilación, la salida del comando muestra que el proceso se ha completado:

    done
    

La red neuronal avanza y retrocede muchas veces hasta que aprende las mejores asociaciones (conexiones) entre las características y los tipos de rocas.

Dynamic diagram that demonstrates how neural networks are created to train a learning model.

Crédito de visualización: Grant Sanderson, https://www.3blue1brown.com/.