¿Cuándo es PyTorch más útil en comparación con TensorFlow y viceversa?

Me gustaría ampliar la respuesta que Roman proporcionó.

Hay dos grandes diferencias técnicas entre PyTorch y TensorFlow.

Primero, PyTorch se siente más nativo de Python que TF. Hay menos código repetitivo y se lee mucho mejor. Por otro lado, todas estas facultades TF adicionales proporcionan una experiencia de desarrollador mucho más completa que PyTorch.

En segundo lugar, TF se basa en gráficos computacionales estáticos, mientras que PyTorch usa CG dinámicos. (A veces llamado “definir y ejecutar” frente a “definir por ejecución”). Lo que significa es que con CG dinámico, puede cambiar la arquitectura de la red en función de los datos que fluyen a través de la red. Hay una manera de hacer algo similar en TF, pero su CG estático debe contener todas las ramas posibles de antemano, lo que limitará el rendimiento.

En resumen, si desea “hacer su trabajo”, use TF. Si desea investigar e intentar cualquier idea que se le ocurra, vaya a PyTorch.

Comencé a usar tensorflow para un proyecto de investigación pero terminé con pytorch.

Para fines de investigación, encontré que el tensorflow es un poco demasiado “estático”, ya que la mayoría está configurado para ejecutarse distribuido (local o entre nodos) desde el primer momento y también “obliga” a su propio ecosistema, lo que dificulta su uso con bibliotecas existentes

También me gusta que pytorch sea menos mágico que el tensorflow ya que enfatiza soluciones simples. Mi ejemplo favorito es la forma en que se manejan los conjuntos de datos: en tensorflow probablemente procesará previamente sus datos en formato tfrecord y luego usará una cola de entrada para cargarlos, mientras que solo necesita extender una clase de python en pytorch que le da un poco más de libertad (aunque, por supuesto, el enfoque de flujo de tensor mientras probablemente escala mejor) Esto también significa que pytorch ofrece menos funcionalidad (en este momento) que el tensorflow, pero debería poder encontrar soluciones alternativas.

Otra cosa buena sobre pytorch es que puede, debido a la autogrado, puede, por ejemplo, alimentar imágenes de varios tamaños (por supuesto, solo si su red también lo admite) en su red neuronal.

Sin embargo, si desea preparar una producción de cómputo, probablemente tenga mucho más sentido hacerlo en tensorflow, ya que tiene soporte distribuido, registro integrado (con visualización), soporte de optimización XLA para múltiples elementos (python, go, java, …).

Finalmente estoy feliz de que ambos marcos existan. Trabajaré con pytorch para investigación y tensorflow para producción.

En una versión actual, TensorFlow tiene soporte completo de entrenamiento distribuido. En Pytorch todavía está en desarrollo.

Aparte de eso…

Si su equipo escribe todo en Pytorch, tienen una base de código considerable y prácticas refinadas, entonces Pytorch es más útil. Si trabajan con TensorFlow, es al revés.

La competencia y la experiencia importan, las herramientas, una vez que están lo suficientemente avanzadas, no lo hacen.

“El lobo que elijas alimentar ganará”.

Personalmente, para la mayoría de las tareas, prefiero Pytorch que Tensorflow. En comparación con Tensorflow, Pytorch tiene dos ventajas principales, en referencia a mi experiencia:

  • La lógica ‘Definir y ejecutar’ es más flexible y generalmente causa menos errores;
  • La carga de trabajo para realizar la misma tarea con pytorch siempre es menor que con Tensorflow.

Sin embargo, como sé, en algunas aplicaciones industriales, la mayoría de las empresas que conozco en Shanghai parecen preferir Tensorflow. Creo que la razón principal es la comunidad activa de tensorflow y es más fácil emplear a un ingeniero que domine el tensorflow en el mercado laboral.