¿TensorFlow está sobrevalorado? ¿Merece ser mucho más popular que otros marcos?

Lo interesante de la popularidad es que si no entiendes por qué algo es tan popular, probablemente sea porque no tienes conocimiento sobre el producto, la audiencia, el mercado o los tres. Entre los buenos ejemplos se encuentran The Beatles, “50 tonos de gris” y Oracle Database.

Un producto exitoso no tiene que ser perfecto para que todos tengan éxito. No es necesario que sea increíblemente rápido, diseñado en exceso, tener la mejor interfaz de usuario, documentación y todo, aunque estas cosas ciertamente ayudan. Todo lo que necesita es tener la capacidad de resolver algún problema importante mejor [la mayor parte del tiempo] que su competencia.

TensorFlow es el “Java” de los marcos de redes neuronales. Está diseñado para escalar sin causar enredos horrendos de los componentes. Si bien es totalmente posible (y simple) escribir un código terrible al usarlo, también es muy fácil escribir un buen código y luego invitar a algunas personas a escribir más código con usted desde el punto donde se detuvo.

Fue diseñado desde el principio, para permitir la construcción de modelos enormes, usarlo con múltiples dispositivos o incluso múltiples instancias es sencillo, y realmente no puedo señalar otro marco que lo haga con tanta facilidad.

Los documentos y tutoriales son abundantes. Nuevas características de conveniencia (como los RNN orientados a humanos) se lanzan todo el tiempo.

La visualización y el monitoreo es algo que casi siempre tiene que hacer usted mismo. TensorFlow se integra con TensorBoard, ¿adivina cuántas líneas de código necesita para agregar otra métrica? Uno. Y no necesita escribir visualizaciones complejas usando, por ejemplo, pyplot, porque se realiza en un servidor web, automáticamente. Con características interactivas como suavizado ajustable en tiempo real para métricas escalares (funciones de pérdida). Es una característica simple, pero hace que su proceso sea increíblemente más fácil. Me imagino que el trabajo realizado fue impresionante.

Eso es sobre el producto y un poco sobre el mercado. ¿La audiencia? Bueno, muchos de ellos tienen una formación en ingeniería muy decente, pero la mayoría de ellos son investigadores que generalmente no disfrutan pasar mucho tiempo desarrollando sus propias herramientas para poder hacer su trabajo.

La falta de algunos puntos en los puntos de referencia de rendimiento no hace que un marco se sobrevalore automáticamente. Se necesita un poco de aprendizaje (juego de palabras profundo) para poder sacar tales conclusiones.

La característica número uno que juzgo un proyecto de software es su comunidad.

Mire javascript, vs. dart, R vs. Julia. No tiene que ser el lenguaje mejor diseñado para tener éxito. La comunidad es el rey. Caffe tiene muchos puntos dolorosos, pero sigue siendo el marco de elección para la detección de objetos POR SU COMUNIDAD.

Tensorflow no es actualmente el más rápido. Heck, actualmente se encuentra entre los más lentos … (EDITAR: para el caso de una SOLA GPU, se pone a la par con los demás cuando se realiza un entrenamiento distribuido). Pero Tensorflow tiene la mayor base de código y comunidad en crecimiento. Keras también lo ha elegido como su marco de backend predeterminado.

En el aprendizaje profundo, ser popular significa modelos más entrenados y documentos y códigos más recientes. Esto no puede ser subestimado.

Y sí, creo que eventualmente será más rápido. Si pudiera arreglar una cosa, escribiría más partes en GO para hacer que el entrenamiento de múltiples GPU sea más concurrente 🙂

Me estaba preguntando lo mismo. Lo intenté. Ahora estoy seguro: definitivamente no está sobrevalorado.


¿Qué hace que algo sea sobrevalorado?

Debo decir que hay mucha expectación en torno a TensorFlow, lo que todos, incluido usted, quieren saber si la exageración está justificada o no.

Por lo tanto, la pregunta es sobre el equilibrio de sus expectativas (bombo) con su experiencia ( realidad *). (Aquí la realidad significa tu realidad, tu opinión )

Expectativas> Realidad => Decepcionado .
Realidad> Expectativas => Impresionado

Lo que lleva a mi “criterio de sobrevaloración” que es simplemente: “¿estás decepcionado o impresionado?”. (Sí, fue una introducción bastante detallada para obtenerlo :).

Comparar expectativas con la realidad

Lo que puedes esperar:

  • Biblioteca de aprendizaje automático : definitivamente buena. Todo lo que tiene que hacer es conectar los componentes juntos. Es super fácil.
  • Cálculos de GPU : es perfecto. Ejecutar en CPU o GPU no requiere ningún cambio de su parte. No hay problemas con CUDA, Cu *** libs, etc.
  • Código claro : me gusta Python por su claridad de código. Además, la API de TensorFlow de alguna manera deja todo bastante claro. No necesitas muchas líneas para hacer grandes cosas, y lo que haces permanece super claro.
  • Comunidad, documentación y tutoriales : ESTO no se debe ignorar. Encuentro los documentos de TF realmente buenos, fáciles de navegar e informativos. Los tutoriales oficiales son realmente geniales tanto para comprender los conceptos como para la implementación. Bien documentado, incluidos artículos externos y documentos fuente.
  • Velocidad de computación : en realidad, aquí es donde no me impresionó. Puede leer todo sobre este tema, para mí estuvo bien, ya que estaba haciendo un trabajo experimental, el rendimiento no es tan importante como en el entorno de producción.

No estoy trabajando con / para Google / TensorFlow de ninguna manera. Estaba buscando una herramienta para experimentar e investigar. TensorFlow me dio una satisfacción total incluso teniendo altas expectativas iniciales. Los puntos clave para mí son la abstracción de GPU: ejecutar con GPU sin ningún esfuerzo ni consideración, y la velocidad de desarrollo / aprendizaje. Lo aprendí rápido y me resulta muy fácil trabajar con él.

No voy a compararlo con otro marco, ya que parece estar fuera de alcance.

Si se pregunta si debería intentarlo, definitivamente vale la pena al menos construir su opinión. No hay posibilidad de perder el tiempo.

TensorFlow es realmente sorprendente, antes sin TensorFlow, me costaría mucho hacer una buena red neuronal, pero ahora con TensorFlow se ha vuelto muy fácil e intuitivo. Creo que TensorFlow merece mucha popularidad. Por ejemplo, hablemos sobre el aprendizaje automático, la regresión lineal es como 3 líneas de código, ahora no necesitamos ir alrededor de las matemáticas para obtener predicciones de los datos. Para ver lo fácil que ha sido TensorFlow, consulte Introducción a la regresión lineal. Es realmente asombroso y muy genial.

Cuando se lanzó, era infinitamente superior al resto de la competencia por una sola razón: documentación y tutoriales.

Theano, su competidor directo, era increíblemente complejo de instalar. Luego, escribir un programa básico requería horas y horas. Y cuando comenzaste a cavar más, la documentación era un desastre enorme. El sitio web de Theano estaba lleno de pelusa y fue difícil encontrar cosas útiles para la salud.

Y Tensorflow tenía Tensorboard, algo increíble y fácil de usar en comparación con la competencia.

Tensorflow también era una biblioteca integrada, mientras que Theano generalmente requería instalar módulos o bibliotecas adicionales basados ​​en Theano.

Entonces sí, Tensorflow era infinitamente superior, especialmente en un mundo con muchos principiantes.

Yo diría que sí, porque por ahora hay muchas bibliotecas de aprendizaje automático de código abierto que son de código abierto y están disponibles para el público, pero mucho mejor que tensorFlow. Una biblioteca de aprendizaje automático que sé que es mucho mejor que el flujo de tensor es RLM por useAIble ™. Tensorflow es popular porque se usa en muchas aplicaciones y motores de Google, pero esto no significa que sea el más poderoso y que no hay nada en comparación con TensorFlow. De hecho, el flujo del tensor se enfrentó cara a cara con otro motor de IA y perdió en la mayoría de los juegos.

Para concluir, si desea una biblioteca de aprendizaje automático bien documentada, entonces TensorFlow es la adecuada para usted, pero recuerde siempre que todavía hay muchas bibliotecas de aprendizaje automático que son más poderosas que el flujo de tensor.

Yo diría que sí. Mi ambiente de trabajo es de consultoría y noté que hay mucha publicidad sobre el flujo de tensor, la mayoría de las personas no entienden qué es el flujo de tensor. Sí, el flujo de tensor es una gran herramienta si está dispuesto a volver a implementar o diseñar un nuevo algoritmo de aprendizaje automático basado en redes neuronales, obviamente, esta no es una tarea trivial, ya que enfrentará restricciones de concurrencia, numéricas, algorítmicas, de eficiencia y de código. .

Por otro lado, si espera utilizar una implementación bien probada de algún algoritmo de ML, le recomendaría usar scikit-learn o Keras. El beneficio de usar las bibliotecas anteriores es que hay una comunidad completa detrás de ellas, por lo tanto, la implementación del algoritmo es correcta y evitará enfrentar problemas de implementación.

Yo diría que sí, definitivamente, al menos en el contexto de la investigación. La cosa está tan envuelta en tantas capas de mierda que es imposible modificarla realmente de manera confiable y hacer una investigación original. Si solo quieres jugar bloques de lego con estructuras NN, supongo que está bien, pero si solo quieres aprender por gradiente, por ejemplo, es un marco terrible para usar.

La única ventaja que tiene es que tiene una gran comunidad y Google le está tirando toneladas de dinero. Tal vez para el despliegue está bien, pero para la investigación, creo, pytorch tiene mucho más potencial.

Además, el hecho de que las cosas estén estáticamente definidas significa que también es muy difícil depurarlo.

Es molesto porque solo porque dice “Google”, entonces significa que debe ser bueno. Es más importante pensar críticamente y evaluar si es realmente bueno por ti mismo.

Entonces sí, está sobrevalorado.

Creo que sí, si lo comparas con pytorch.