¿Por qué PyTorch?
Si tienes claro que necesitas Deep Learning para tu aplicación lo más normal es que acabes con la duda «metafísica» de utilizar TensorFlow o PyTorch… Hay más librerías de deep learning pero a día de hoy los dos estandares de código abierto son Pytorch y TensorFlow.
Ambas librerías están especializadas en el manejo de tensores. Los tensores se pueden entender de manera muy sencilla como si fueran una generalización de matrices. El calculo tensorial es utilizado en algunos ámbitos de la ingeniería como puede ser el calculo tensional en resistencia de materiales.
¿Qué hace especiales a estas librerías frente a Numpy?
Aunque Numpy maneja arrays (matrices) de manera muy buena, no esta especializada en calculo tensorial… y principalmente no esta optimizada para el cálculo paralelizado. A la hora de trabajar con redes neuronales y debido al tamaño tan grande de parametros que vamos a usar, lo normal es trabajar paralelizando los cálculos en la manera de lo posible. Las GPUs están especializadas en realizar muchos pequeños trabajos en paralelo. Esto permite realizar tanto el entrenamiento como la inferencia de los modelos de manera mucho más eficiente. Tanto Tensorflow como PyTorch pueden trabajar con GPUs. Por estos motivos se suelen usar estas librerias frente a la librerias «clasicas» como Numpy
¿Quién desarrolla PyTorch?
PyTorch está desarrollado por Facebook AI Research (Fair) Son librerías que están desarrollándose especialmente en temas de lenguaje natural y visión por ordenador.
Alto, medio, bajo nivel
Haciendo un poco de historia Keras era una librería de muy alto nivel que trabajaba “encima” de otras librerías de más bajo nivel (tensorflow, Theano…) El desarrollador de Keras entró a formar parte del desarrollo de Tensorflow y Keras se integró con Tensorflow. Si trabajamos con Tensorflow tenemos la posibilidad de trabajar a muy alto nivel con Keras o a bajo nivel con Tensorflow… PyTorch podemos verlo como un término medio entre Tensorflow y Keras, y ahí es una de las características más interesantes. Trabaja a un nivel de abstracción los suficientemente bajo para ver todos los pasos necesarios en una red y lo suficientemente alto como para no entrar en definir operaciones matemáticas…