¿Qué es PyTorch?
Es un paquete de Python diseñado para realizar cálculos numéricos haciendo uso de la programación de tensores. Además permite su ejecución en GPU para acelerar los cálculos.
Normalmente PyTorch es usado tanto para sustituir numpy y procesar los cálculos en GPU como para la investigación y desarrollo en el campo del machine learning, centrado principalmente en el desarrollo de redes neuronales.
Alternativas a PyTorch:
En la actualidad disponemos de varias alternativas a PyTorch en su aplicación al machine learning, algunas de las más conocidas son:
- Tensorflow: fue desarrollado por Google Brain Team. Es software libre diseñado para computación numérica mediante grafos.
- Caffe: es un framework de machine learning diseñado con objetivo de ser usado en visión por computador o clasificación de imagenes. Caffe es popular por su librería de modelos ya entrenados (Model Zoo) que no requieren de ninguna implementación extra.
- Microsoft CNTK: es el framework de software libre desarrollado por Microsoft. Es muy popular en el área de reconocimiento del habla aunque también puede ser usado para otros campos como texto e imágenes.
- Theano: es una librería de python que te permite definir, optimizar y evaluar expresiones matemáticas que implican cálculos con arrays multidimensionales de forma eficiente.
- Keras: es una API de alto nivel para el desarrollo de redes neuronales escrita en Python. Utiliza otras librerías de forma interna como son Tensorflow, CNTK y Theano. Fue desarrollado con el propósito de facilitar y agilizar el desarrollo y la experimentación con redes neuronales.
¿Por qué usar PyTorch?
PyTorch es una librería muy reciente y pese a ello dispone de una gran cantidad de manuales y tutoriales donde encontrar ejemplos. Además de una comunidad que crece a pasos agigantados.
PyTorch dispone una interfaz muy sencilla para la creación de redes neuronales pese a trabajar de forma directa con tensores sin la necesidad de una librería a un nivel superior como pueda ser Keras para Theano o Tensorflow.
Al contrario que otros paquetes como Tensorflow, PyTorch trabaja con grafos dinámicos en vez de estáticos. Esto significa que en tiempo de ejecución se pueden ir modificando las funciones y el cálculo del gradiente variará con ellas. En cambio en Tensorflow debemos definir primero el grafo de computación y después utilizar la session para calcular los resultados de los tensores, esto dificulta la depuración de código y hace más tediosa su implementación.
PyTorch dispone de soporte para su ejecución en tarjetas gráficas (GPU), utiliza internamente CUDA, una API que conecta la CPU con la GPU que ha sido desarrollado por NVIDIA.
Cómo instalar PyTorch
Instalar PyTorch es muy sencillo, sobre todo si hacemos uso de anaconda o del gestor de paquetes pip. Simplemente vamos a la web de PyTorch, y seleccionamos el paquete que nos corresponda:
En nuestro caso vamos a realizar la instalación en Ubuntu 17.04 utilizando pip para Python3. En este equipo no disponemos de una gráfica NVIDIA por lo que no utilizaremos CUDA.
Simplemente ejecutamos los comandos que nos proporciona y una vez instalado comprobamos que se ha instalado correctamente entrando en el interprete de Python y escribiendo:
>>> import torch
>>> import torchvision
Si no recibimos ningún mensaje el paquete se habrá instalado exitosamente. En próximos artículos veremos como utilizar la librería para crear nuestras primeras redes neuronales.
2 respuestas
Usando PyTorch) para desarrollar y entrenar un modelo de inteligencia artificial.
Tarea:
1. como hago la, clasificación de imágenes, predicción de series temporales) y determina el tipo de modelo de aprendizaje profundo más adecuado para abordarlo.
Hola Julieta,
Vamos a responderte en los 3 puntos:
– Para la clasificación de imágenes con Pytorch, normalmente se utilizan redes neuronales convolucionales (CNNs), ya que son muy eficaces para captar patrones espaciales en las imágenes.
– Para predecir series temporales, el tipo de modelo de aprendizaje profundo más adecuado suele ser una Red Neuronal Recurrente (RNN) o, más específicamente, una LSTM (Long Short-Term Memory).
– Clasificación de Imágenes: Como mencionamos, las Redes Neuronales Convolucionales (CNNs) son el estándar de facto para la clasificación de imágenes.
– Para elegir el modelo de aprendizaje más adecuado para la clasificación de Imágenes, como mencionamos, las Redes Neuronales Convolucionales (CNNs) y para la predicción de series temporales, las LSTM o GRU son opciones muy comunes debido a su capacidad para manejar dependencias secuenciales.