Course
PyTorch vs Tensorflow vs Keras
Los profesionales del aprendizaje automático y los ingenieros de software suelen recurrir a marcos de trabajo para aliviar parte del trabajo pesado que conlleva la programación.
Por ejemplo, los marcos de aprendizaje automático permiten a los profesionales aplicar modelos sin necesidad de profundizar en los fundamentos matemáticos de los algoritmos.
Esto agiliza el proceso de desarrollo para los programadores, ya que no tienen que reescribir constantemente el código para crear sus aplicaciones.
Estos conceptos también se aplican al aprendizaje profundo, un subconjunto del aprendizaje automático. TensorFlow, Keras y PyTorch son tres de los marcos de aprendizaje profundo más populares.
En este tutorial, exploraremos cada una de ellas y desarrollaremos una solución aproximada para ayudarte a decidir cuál es la que te conviene utilizar en tu proyecto.
¿Qué es TensorFlow?
TensorFlow es un marco de aprendizaje profundo integral. Fue desarrollado por el equipo de Google Brain, inicialmente para uso interno en Google para investigación y producción; sin embargo, se hizo de código abierto en 2015 bajo la Licencia Apache. En septiembre de 2019, Google publicó una nueva versión actualizada de TensorFlow con el nombre de TensorFlow 2.0. Puedes explorar el marco con más detalle en nuestro tutorial de TensorFlow.
Algunas de las características clave de TensorFlow son:
- TensorBoard. Un conjunto de herramientas de visualización para TensorFlow que ayuda a comprender, depurar y optimizar los programas TensorFlow.
- Columnas destacadas. Abstracciones de alto nivel que transforman los datos brutos en formatos adecuados para los modelos de aprendizaje automático, simplificando el manejo de diversos tipos de datos.
- Fácilmente entrenable en CPU y GPU. TensorFlow puede entrenar modelos en varios tipos de hardware, incluidas CPU y GPU, lo que permite cálculos flexibles y eficientes.
- Entrenamiento paralelo. TensorFlow admite la computación distribuida, lo que permite el procesamiento simultáneo de datos y modelos en varias CPU o GPU, acelerando significativamente los tiempos de entrenamiento.
Ventajas de Tensorflow
Código abierto
TensorFlow es un marco de código abierto, lo que significa que es gratuito y que cualquiera puede utilizarlo sin tener que firmar previamente un contrato con un proveedor.
Depurando
Una de las características clave de TensorFlow es TensorBoard. TensorBoard es lo que proporciona la visualización y las herramientas necesarias para la experimentación en
TensorBoard proporciona la visualización y las herramientas necesarias para la experimentación en aprendizaje profundo, lo que facilita enormemente la depuración de tu código TensorFlow.
Compatibilidad con Keras
Cuando Google anunció el lanzamiento de TensorFlow 2.0, también declaró que Keras era la API oficial de alto nivel de TensorFlow. Esto permite a los usuarios añadir funcionalidad de alto nivel a su código y aprovechar las ventajas de la simplicidad de Keras.
Escalabilidad
TensorFlow no se limita a un único dispositivo. Los usuarios pueden desarrollar sistemas utilizando el marco y esperar que funcione con la misma eficacia en los dispositivos edge que en cualquier otra máquina compleja.
Compatibilidad
El marco es compatible con varios lenguajes de programación; así, los usuarios pueden trabajar en el lenguaje de programación con el que se sientan más cómodos.
TensorFlow ofrece una API fiable para Python, junto con API para Javascript, C++ y Java que no garantizan la compatibilidad con versiones anteriores. Además, hay paquetes de terceros que proporcionan enlaces de lenguaje para C#, Haskell, Julia, MATLAB, Object Pascal, R, Scala, Rust, OCaml y Crystal.
Paralelismo
TensorFlow se considera una biblioteca de aceleración de hardware. El marco utiliza diferentes estrategias de distribución en sistemas de GPU y CPU. Esto significa que un usuario es libre de utilizar la arquitectura que desee. Ten en cuenta que el sistema utiliza por defecto la GPU si no se menciona explícitamente; este proceso reduce en cierta medida el uso de memoria.
Desventajas de Tensorflow
Actualizaciones frecuentes
La sobrecarga que supone para un usuario instalar y vincular TensorFlow a su sistema existente aumenta debido a las frecuentes actualizaciones
Homónimos incoherentes
TensorFlow ofrece homónimos, que son difíciles de comprender y utilizar, ya que tienen nombres idénticos pero implementaciones diferentes. Por ejemplo, tf.nn.conv2d y tf.layers.Conv2d tienen el mismo nombre, pero tienen ajustes ligeramente distintos, que pueden alterar tus resultados.
Faltan bucles simbólicos
Se dice que TensorFlow es una API de bajo nivel, y con razón. El marco no gestiona automáticamente las iteraciones que dan lugar a bucles simbólicos. Sin embargo, tiene uso para secuencias definidas, por lo que es un sistema utilizable.
Compatibilidad limitada con GPU
El marco sólo es compatible con NVIDIA y Python para la programación en la GPU. No hay ninguna ayuda adicional.
Baja velocidad de ejecución
En todas las configuraciones de hardware, TensorFlow requiere sistemáticamente el mayor tiempo para entrenar varios tipos de redes neuronales en comparación con sus competidores.
¿Qué es Keras?
Keras es una popular API de redes neuronales de alto nivel de código abierto desarrollada por François Chollet y lanzada en 2015. La documentación se refiere a ella como "una API diseñada para seres humanos, no para máquinas".
A mediados de 2017, el marco fue adoptado e integrado en TensorFlow, haciéndolo accesible a los usuarios de TensorFlow a través del módulo tf.keras. Sin embargo, aún es posible utilizar Keras independientemente de TensorFlow: consulta esta hoja de trucos sobre Keras o nuestro tutorial completo sobre Keras.
Aquí tienes más información de la documentación:
"Keras se centra en la velocidad de depuración, la elegancia y concisión del código, la mantenibilidad y la desplegabilidad. Cuando eliges Keras, tu código base es más pequeño, más legible, más fácil de iterar. Tus modelos se ejecutan más rápido gracias a la compilación XLA y a las optimizaciones de Autograph, y son más fáciles de desplegar en todas las superficies (servidor, móvil, navegador, incrustado) gracias a TF Serving, TF Lite y TF.js".
Ventajas de Keras
Simplicidad
Keras tiene una API extremadamente sencilla y fácil de usar, lo que contribuye a que sea fácil de aprender e iniciarse en el aprendizaje profundo.
Soporte de backend
Keras no utiliza cálculos de bajo nivel para funcionar: el marco está construido sobre Microsoft CNTK, Theano y TensorFlow. Por tanto, fomenta el empleo de backends.
Modelos preentrenados
Un modelo preentrenado es un modelo que se ha guardado tras ser entrenado previamente en un gran conjunto de datos. Keras proporciona varios modelos preentrenados.
Experimentación rápida
Keras es una API de alto nivel; esto significa que está bastante abstraída y es más genérica. Por tanto, los usuarios pueden construir modelos rápidamente con unas pocas líneas de código.
Apoyo comunitario
Keras es una plataforma de código abierto y cuenta con una gran comunidad de investigadores y desarrolladores activos que contribuyen a apoyarse mutuamente.
Documentación clara
La documentación de Keras está repleta de ejemplos codificados, lo que facilita que los usuarios comprendan rápidamente los conceptos del marco.
Contras de Keras
Algunas deaturas mejorables
Varios profesionales están de acuerdo en que a Keras le falta un poco en el departamento de características, y hay mucho espacio para mejorar. Un ejemplo de ello es que el marco no admite la creación de gráficos dinámicos.
Errores ineficaces
Los mensajes de error de la biblioteca Keras son ineficaces. Se exige que los fallos sean claramente visibles. Encontrar la causa principal del error no es tan útil ni provechoso. Keras requiere mucha depuración.
API de alto nivel
Keras es una API de alto nivel. Por tanto, tienes mucho menos control sobre la manipulación de las funciones.
¿Qué es PyTorch?
PyTorch es el marco de aprendizaje profundo más reciente del grupo. Desarrollado por el grupo de investigación en IA de Facebook (ahora Meta) y de código abierto en 2016, PyTorch forma parte ahora del paraguas de la Fundación Linux.
A lo largo de los años, PyTorch se ha forjado una reputación como marco de simplicidad, flexibilidad y eficacia. Permite a los desarrolladores construir rápidamente redes neuronales complejas para aplicaciones como la visión por ordenador y el procesamiento del lenguaje natural.
Algunas de sus principales características son:
- Cálculo tensorial. PyTorch proporciona un array multidimensional llamado Tensor, similar al ndarray de NumPy, pero puede ejecutarse en GPUs para un cálculo más rápido.
- TorchScript. Una forma de serializar modelos PyTorch, permitiéndoles ejecutarse en otros entornos como C++, asegurando la preparación para la producción.
- Cálculo dinámico de grafos. PyTorch utiliza grafos computacionales dinámicos, lo que permite flexibilidad en la construcción y modificación de modelos sobre la marcha, lo que es beneficioso para arquitecturas complejas.
- Diferenciación automática. La diferenciación automática y el cálculo del gradiente ayudan a simplificar la retropropagación y el entrenamiento de las redes neuronales.
- Compatible con Python. PyTorch se integra perfectamente en el ecosistema Python, facilitando su uso con bibliotecas Python y proporcionando una interfaz más pitónica y fácil de usar.
Pros de PyTorch
Pitónico
PyTorch es de naturaleza pitónica, lo que hace que su adopción sea bastante sencilla para los desarrolladores de Python. Esta característica es una ventaja porque una gran parte del trabajo de aprendizaje profundo se realiza en Python.
Fácil de aprender
La sintaxis de PyTorch es extremadamente sencilla e intuitiva. Los profesionales suelen atribuir a PyTorch una curva de aprendizaje sencilla: algunos dicen que es uno de los paquetes de aprendizaje profundo más fáciles de aprender.
Fácil de depurar
PyTorch es capaz de utilizar las herramientas de depuración pdb e ipdb de Python. Los programadores también pueden utilizar PyCharm, el IDE de Python, para depurar, ya que PyTorch crea un gráfico computacional en tiempo real.
Comunidad fuerte
A pesar de ser uno de los marcos de aprendizaje profundo más recientes, PyTorch ha sido capaz de desarrollar una comunidad dedicada de desarrolladores con bastante rapidez. Estas personas trabajan muy duro para garantizar que la documentación esté bien estructurada y sea útil para otros desarrolladores.
Paralelismo de datos
El paralelismo de datos de PyTorch es extremadamente eficaz, ya que permite a los usuarios dividir los datos en lotes y enviarlos a varias GPU para su procesamiento. Empleando este método, PyTorch es capaz de transferir una parte considerable de la carga de trabajo de la CPU a la GPU.
Contras de PyTorch
No hay visualización de datos
TensorBoard de TensorFlow permite a los profesionales visualizar el proceso de entrenamiento, pero no hay nada parecido en PyTorch: los usuarios tienen que utilizar una herramienta de terceros.
Se necesita un servidor API para producción
No existe un marco de trabajo para proporcionar modelos directamente en la web; por lo tanto, se requiere que utilices un servidor backend de terceros como Flask o Django.
¿Cuál elegir? Un análisis comparativo de PyTorch vs Keras vs TensorFlow
TensorFlow |
PyTorch |
Keras |
|
Nivel API |
Ambos (Alta y Baja) |
Baja |
Alta |
Arquitectura |
No es fácil de usar |
Complejo, menos legible |
Sencillo, conciso, legible |
Conjuntos de datos |
Grandes conjuntos de datos, alto rendimiento |
Grandes conjuntos de datos, alto rendimiento |
Conjuntos de datos más pequeños |
Depurando |
Dificultad para llevar a cabo la depuración |
Buenas capacidades de depuración |
Red sencilla, por lo que la depuración no suele ser necesaria |
¿Modelos preentrenados? |
Sí |
Sí |
Sí |
Popularidad |
El segundo más popular de los tres |
El tercero más popular de los tres |
El más popular de los tres |
Velocidad |
Rápido y de alto rendimiento |
Rápido y de alto rendimiento |
Lento, bajo rendimiento |
Escrito en |
C++, CUDA, Python |
Lua |
Python |
Elegir el marco adecuado
La respuesta a "¿qué framework es mejor?" siempre va a ser subjetiva, ya que cada framework tiene pros y contras, como hemos visto. Sin embargo, aquí tienes una lista de cosas que debes tener en cuenta al decidirte por un marco.
Pytorch vs TensorFlow
- Código fuente. Tanto PyTorch como TensorFlow simplifican la construcción de modelos eliminando gran parte del código repetitivo.
- Pythónica y OOP. PyTorch es más "pitónico" y se adhiere a los principios de la programación orientada a objetos, lo que lo hace intuitivo para los desarrolladores de Python.
- Popularidad. TensorFlow, al ser más antiguo y estar respaldado por Google, tiene una mayor base de usuarios y apoyo de la comunidad.
- Flexibilidad. PyTorch ofrece más flexibilidad gracias al uso de gráficos de cálculo dinámicos, que permiten cambios sobre la marcha.
- Depuración y seguimiento. El TensorBoard de TensorFlow proporciona potentes herramientas de visualización para depurar y seguir el proceso de entrenamiento.
- Marco de servicio. TensorFlow tiene un sistema de servicio más maduro para desplegar modelos, por lo que es más fluido que el proceso de despliegue de PyTorch.
PyTorch vs Keras
- Curva de aprendizaje. Tanto PyTorch como Keras son fáciles de usar, lo que facilita su aprendizaje y utilización.
- Investigación frente a desarrollo. Los investigadores suelen preferir PyTorch por su flexibilidad y control, mientras que los desarrolladores prefieren Keras por su sencillez y sus cualidades plug-and-play.
- Velocidad y depuración. PyTorch es generalmente más rápido y proporciona capacidades de depuración superiores en comparación con Keras.
- Tutoriales y pequeños conjuntos de datos. Keras brilla por sus extensos tutoriales de código reutilizable y es especialmente eficaz cuando se trabaja con conjuntos de datos pequeños.
TensorFlow vs Keras
- API de alto nivel. Tanto TensorFlow como Keras proporcionan API de alto nivel para construir y entrenar modelos.
- Naturaleza pitónica. Keras, al estar construido en Python, es más fácil de usar e intuitivo.
- Grandes conjuntos de datos. A menudo se prefiere TensorFlow para manejar grandes conjuntos de datos debido a su robustez y escalabilidad.
- Envoltorio. Keras actúa como una envoltura de las funciones de TensorFlow, simplificando la interfaz de TensorFlow para facilitar su uso.
Conclusión
TensorFlow, PyTorch y Keras son tres de los marcos de aprendizaje profundo más populares. Cada una tiene sus propias cualidades, lo que las convierte en grandes herramientas para determinados ámbitos. El que procedas a aprender y utilizar depende específicamente de tu caso de uso y de otros factores, como tu capacidad técnica y el tiempo que tengas para aprender.
Independientemente del marco por el que optes, hay una serie de cursos útiles en DataCamp que te ayudarán a empezar:
Aprende los temas mencionados en este tutorial
Course