Para escoger una librería para crear tus proyectos de deep learning con redes neuronales debes escoger la que más se adapte a tus necesidades y a las de esos proyectos.
Para ese momento tú ya deberías de entender conceptos como funciones de activación, neuronas, pesos, regularizadores, filtros convolucionales y saber aplicarlos con librerías como Keras con Python. Esto puedes aprenderlo en el Curso de Fundamentos de Redes Neuronales con Python y Keras y en el Curso de Redes Neuronales Convolucionales con Python y Keras.
Para llevar todo eso al siguiente nivel, en este blogpost aprenderás de los tres framework más famosos de deep learning. Conoceremos sus diferenciadores para que, de acuerdo a tus requerimientos, escojas el framework que mayor valor genere para tu proyecto.
Comencemos definiendo qué es un framework o entorno de trabajo en el desarrollo de software. Lo definimos como una estructura conceptual y tecnológica. Nos sirve de soporte o guía para la construcción de nuevas funcionalidades proporcionando una base sobre la cual podamos desarrollar un software o aplicación.
Cuando hablamos de un framework de deep Learning nos referimos a eso mismo, al marco de trabajo que te permitirá tener todas las herramientas que necesitas para crear redes neuronales con un par de importaciones y clics.
Para realizar un correcto análisis de cada uno de los frameworks tomaremos en cuenta seis puntos:
Nota: Es importante entender que estos puntos, desde mi perspectiva y la de muchos proyectos son muy valiosos. Pero según la aplicación de tus proyectos, unos puntos tendrán más peso que otros.
Microsoft Cognitive Toolkit (CNTK), como su nombre lo dice, fue creado por Microsoft. Sin embargo, es de código abierto. Ilustra redes neuronales en forma de gráficos dirigidos mediante el uso de una secuencia de pasos computacionales.
CNTK está escrito en C++, pero admite varios lenguajes como C#, Python, C++ y Java. El respaldo de Microsoft es una ventaja para CNTK, ya que Windows es el sistema operativo preferido por las empresas. CNTK también se usa mucho en el ecosistema de Microsoft. Los productos populares que usan CNTK son Xbox, Cortana y Skype.
Es necesario una curva de aprendizaje más larga.
El soporte de la comunidad es muy bajo comparado con otros framework de deep learning.
Al estar asociado con Microsoft permite realizar debugeo desde Visual Studio Code activando un comando especial.
No tiene herramientas nativas para visualizar. Es necesario utilizar herramientas terceras como Matplotlib, Seaborn, entre otras.
Buena integración con herramientas como Apache Spark o herramientas de preprocesamiento. Esto permite que el prototipado y despliegue tenga sus ventajas.
Debido a que trabaja de la mano de la nube de Microsoft tiene buena capacidad de escalamiento.
PyTorch es desarrollado en Facebook por el grupo de investigación FAIR. Pytorch es compatible con Python y C++ para crear modelos de deep learning. Algunas de las empresas que lo utilizan son Salesforce, Facebook y Twitter.
El reconocimiento de imágenes, el procesamiento del lenguaje natural y el aprendizaje por refuerzo son algunas de las muchas áreas en las que destaca PyTorch. También se utiliza en la investigación de universidades como Oxford y organizaciones como IBM.
PyTorch también es una excelente opción para crear gráficos computacionales. También es compatible con el desarrollo de software en la nube y ofrece funciones, herramientas y bibliotecas útiles. Funciona bien con plataformas en la nube como AWS y Azure.
Diseño y estructura fáciles de usar que hacen que la construcción de modelos de aprendizaje profundo sea sencilla.
Buen soporte de comunidad en temas de investigación, sin embargo en temas de producción existen otros frameworks con mayor soporte de la comunidad en esa temática. Esta conclusión se puede sacar debido a los tipos de perfiles que utilizan cada una de las librerías.
Tiene herramientas de debugeo como PyCharm.
No tiene herramientas o interfaces propias de PyTorch.
Contiene modelos pre-entrenados que permiten generar un prototipado y despliegue rápido.
No cuenta con un grupo de recursos nativos que permita desplegarlo en ambientes de producción, permite conectarse a herramientas de terceros.
TensorFlow es la herramienta de deep learning más famosa que existe. Si eres data scientist, probablemente ya has comenzado con TensorFlow.
Es una de los frameworks de código abierto más eficientes para trabajar. Google creó TensorFlow para usarlo como una herramienta interna de deep learning antes de abrirlo. TensorFlow impulsa muchas aplicaciones útiles, incluidas Uber, Dropbox y Airbnb.
Desde la versión 2.0 de TensorFlow se se volvió una herramienta muy fácil de aprender. Cuenta con integración de API Clean Up, Eager Execution, no más variables globales y el cambio de sesiones por funciones.
TensorFlow cuenta con la comunidad más grande a nivel mundial:
Con la llegada de Eager Execution aumenta la facilidad de debugear. Sin embargo, no hay una herramienta propia para realizarlo, se pueden utilizar herramientas de terceros como Pandas, scikit-learn, entre otras.
Tiene una herramienta propia de visualización llamada TensorBoard que permite visualizar grafos, métricas, resultados y mucho más. Esta herramienta es configurable según el uso.
Permite guardar y cargar modelos con una línea de código en diferentes formatos.
Cuenta con todo el stack de Google Cloud Platform para lograr desplegarlo en cuestión de segundos a la nube.
Como pudiste ver, cada framework tiene sus ventajas y desventajas. Como te mencioné al principio, dependerá de tus necesidades y de tu proyecto para elegir el indicado. Sin embargo, si ya has trabajado con proyectos elementales de redes neuronales y estás analizando qué framework aprender primero, te sugerimos seguir el camino de TensorFlow.
Esto porque TensorFlow tiene una gran cantidad de herramientas para probarlo e incluso llevar tus primeros proyectos a producción de manera directa. Esto seguramente te ayudará a conseguir el trabajo de tus sueños o incluso crear tu propia empresa.
Te invito a seguir este camino. Toma el Curso Profesional de Redes Neuronales con TensorFlow, donde tendré el gusto enorme de ser tu profesor. ¡Te doy la bienvenida al uso de redes neuronales de manera profesional! 🧠
Muy buen artículo, también se podría mencionar las Apis para trabajar como Keras.
Tal cual lo que quería escuchar!! 💚
Muy buen blog, me gusto mucho, contiene muy buena información.