¿En qué casos debo usar TensorFlow, PyTorch y Caffe2?

He respondido esta pregunta general varias veces. La respuesta básica es: depende de su caso de uso.

TL; DR: TensorFlow para producción (y probablemente también funciona, como dijo Roman Trusov), PyTorch para investigación y diversión y Caffe2 para inferencia de dispositivos de borde (por ejemplo, una aplicación que está haciendo para su amigo que reconoce perros calientes o no).

Keras para la creación rápida de prototipos si no necesita mucha flexibilidad y Theano si es un DL de barba gris 😉

Un resumen general:
TensorFlow : para casos de uso de producción, donde todavía necesita un poco de flexibilidad, TensorFlow es probablemente su mejor opción. Permite flexibilidad a través de la capacidad de especificar un gráfico computacional arbitrario (bueno, en su mayoría) y es eficiente porque ese gráfico computacional dinámico se puede analizar en busca de optimizaciones, como las optimizaciones de memoria en el lugar que pueden mejorar la eficiencia. También tiene TensorFlow Serving y una gran cantidad de otras integraciones. Además, hay mucho apoyo de la comunidad y muchos documentos implementados en TensorFlow. TF es probablemente el marco más maduro en este momento, tiene muy buenas integraciones y es probablemente el más estable para la producción. También cuenta con el soporte de Google y hay considerables recursos detrás de él, y se muestra en las características, por ejemplo, la instalación es sencilla y se paralelizará automáticamente a través de sus GPU. Tenga en cuenta que TensorFlow Fold le permite emular gráficos computacionales dinámicos y obtener muchos de los beneficios de PyTorch.

PyTorch: El principal reclamo de fama para PyTorch es que es un gráfico computacional dinámico (hay algunos otros como Chainer, pero PyTorch es el marco más frecuente), lo que significa que en lugar de “definir y ejecutar” (donde se especifica un cálculo estático gráfico y luego ejecutarlo muchas veces como TensorFlow) tiene “definir por ejecución”, lo que significa que especifica un gráfico computacional para cada iteración. Esto tiene muchos beneficios útiles para ciertos tipos de RNN, situaciones en las que necesita generar pesos (es decir, HyperNetworks) y cosas en las que cambia la estructura misma de la red (por ejemplo, NN recursivos). PyTorch también tiene una interfaz realmente agradable y tiene el soporte de Facebook. Las desventajas son que es un marco relativamente nuevo, por lo que no hay muchas integraciones con él, no hay mucha comunidad y no hay muchos documentos implementados en él. Y tenga en cuenta que los gráficos computacionales dinámicos harán que muchas cosas sean bastante ineficientes porque no se pueden realizar optimizaciones estáticas.

Caffe2: Caffe2 es un marco mucho más nuevo y parece ser el marco de implementación de inferencia de dispositivos de borde preferido para Facebook. Parece ser el sucesor de Caffe en que es muy ligero y eficiente para la implementación, pero bastante limitado en flexibilidad. Use esto básicamente para la inferencia de teléfonos inteligentes.

Keras: Keras es realmente bueno para la creación rápida de prototipos, pero se puede limitar severamente su flexibilidad. Por ejemplo, para mi último experimento, quería probar convoluciones dilatadas, y funcionó, pero las convoluciones separables dilatadas no podían funcionar, así que terminé usando Caffe para eso. Además, Caffe es sorprendentemente flexible en el sentido de que todos los parámetros son polimórficos a la convolución, por lo que múltiples tipos de parámetros que definen diferentes tipos de capas de convolución pueden usarse simultáneamente / en conjunto en la misma capa.

Theano: Básicamente, (uno de) el primer marco importante para DL. Realmente ya no veo ningún caso de uso convincente.

Utilice TensorFlow: – Si desea que su código se ejecute en diferentes plataformas, es decir, Android, Windows, Linux y desea utilizar el procesamiento distribuido. Si lo desea, no quiera usar servidores de parámetros mientras construye su modelo de red neuronal. Es importante si desea construir un modelo y usarlo para la producción.

Utilice PyTorch : – Si desea crear gráficos de cálculo dinámico (DCG). La principal utilidad de DCG es que le permite procesar entradas y salidas complejas, sin preocuparse de convertir cada lote de entrada en un gran tensor de grasa. El procesamiento distribuido sigue siendo experimental. Torch no tiene tiempo de compilación.

Use Caffe2: – Si desea un flujo de trabajo de inteligencia artificial de principio a fin. Si no desea entrometerse en el middleware, por ejemplo, configuración de configuración de GPU / CPU. Si no tiene ninguna intención de crear capas y agregarlas al marco porque tiene que escribirlas en C ++. Si desea resultados de vanguardia en las operaciones de imagen con Deep Learning.

Nota: – Los resultados variarán dependiendo del ajuste de los modelos al usar esas bibliotecas.

Actualización: –

Utilice Theano: – Theano existía antes de TensorFlow. Ambos son más que un aprendizaje profundo. Lo importante de Theano es que, junto con la creación de CNN en código de bajo nivel, la biblioteca también proporciona operaciones matemáticas. Entonces, si está investigando y probando nuevos algoritmos y experimentando con ellos, use Theano. TensorFlow está cerca de Theano con respecto a esto, pero aún es un poco inmaduro.

Use Keras: – Keras actúa como una interfaz para las bibliotecas que tienen códigos de bajo nivel. es decir: – Theano, TensorFlow. Se sienta encima de Theano y TensorFlow a partir de ahora. Si usted es un codificador perezoso o menos codificador y más investigador o un principiante en Python y las bibliotecas de aprendizaje profundo que usan Keras le ahorran el día.

Nota sobre Keras: –

  • Keras con Theano tienen mejores prestaciones en el caso de modelos que utilizan imágenes como entrada.
  • Keras con TensorFlow es lento en comparación con Theano. Sin embargo, está mejorando porque Google decidió oficialmente usar Keras como interfaz para TensorFlow. Espero que resuelva los problemas.
  • Keras es genial cuando solo estás construyendo tus capas y haciéndolo complicado.

Usan un lenguaje diferente, como Tensorflow y Pytorch usan python, mientras que Caffe2 usa C / C ++. Una compañía usa solo uno de ellos, como Google usa tensorflow mientras que Facebook y Twitter usan la antorcha.

Los conceptos utilizados en diferentes marcos son diferentes, como tensorflow utiliza una forma teórica de aprendizaje profundo de pensar sobre la red neuronal.

La principal diferencia es que PyTorch admite la creación de gráficos de cálculo dinámico (DCG), mientras que Tensorflow utiliza un gráfico de cálculo estático (SCG). Puedes ver eso en su página.

El uso principal de un gráfico de cálculo dinámico es que le permiten procesar entradas y salidas complejas, sin pensar en convertir cada lote de entrada en un gran tensor de grasa. Esto se vuelve importante cuando se ejecuta RNN en longitud variable. Mientras que en SCG puede lograr esto al agrupar entradas y salidas. Ahora, cuando tiene que realizar cálculos complejos, tiene que lidiar con parámetros adicionales para hacer el bucketing. Si se realiza el mismo cálculo en DCG, no debemos preocuparnos por eso y podemos escribir la función como queremos que se realice.

PyTorch también facilitó numpy y scipy al proporcionar soporte para la diferenciación automática. Esto le brinda la funcionalidad para escribir sus redes neuronales usando construcciones numpy like, y los gradientes se calculan automáticamente para usted.

Y no es que PyTorch sea siempre mejor que el tensorflow, la desventaja del enfoque DCG es que no admite operaciones de procesamiento por lotes para salidas de entrada complejas, tan eficientemente como el SCG y, por lo tanto, tiende a ser más lento. Además, si la red es grande, entonces el enfoque DCG requiere mucha memoria para almacenar el gráfico computacional, que generalmente se optimiza mucho en un marco SCG.

Hay muchas otras pequeñas diferencias entre dos, pero la diferencia principal es que PyTorch es DCG y el tensorflow es SCG. Y en algunos casos SCG funciona mejor y en otros DCG funciona mejor.

Puedes obtener más información sobre ellos en sus páginas
PyTorch, Tensorflow, Caffe2

Espero que esto ayude.

More Interesting

¿Qué aplicaciones iOS usan TensorFlow del lado del cliente?

¿Por qué las redes neuronales profundas no pueden extraer la estacionalidad de las series de tiempo?

¿Qué método de reducción de dimensionalidad puede mantener las relaciones de traslación entre puntos?

¿Cuál es la diferencia entre el aprendizaje de refuerzo profundo y el aprendizaje de refuerzo?

¿Qué es una máquina de vectores de soporte?

¿Qué (empíricamente) necesita más datos de entrenamiento (etiquetados): modelos discriminativos o modelos generativos?

¿Cómo usa la NASA el aprendizaje automático?

¿Cuál es el mejor método para la reducción de dimensionalidad y la selección / extracción de características en datos de espectrometría de masas?

¿Cuál es la diferencia entre la deserción y la normalización de lotes?

¿Por qué el preentrenamiento no supervisado actúa como un regularizador en arquitecturas profundas?

Cómo usar el aprendizaje automático para identificar patrones en la trama de series de tiempo

¿Es incorrecto si realizo un análisis de opinión en revisiones individuales en lugar de en todas las revisiones a la vez?

¿Qué utiliza la aspiradora robótica como recompensa si utilizan el aprendizaje por refuerzo como algoritmo?

¿Cuáles son algunos de los mejores algoritmos de aprendizaje automático, considerando la eficiencia, la facilidad de implementación, etc.?

¿Por qué es tan difícil la IA? ¿Por qué todavía no hemos construido una máquina de IA?