¿Por qué debería usar TensorFlow sobre NumPy o scikit-learn para construir redes neuronales (excepto para CPU o GPU)?

Las siguientes son las ventajas de usar TensorFlow sobre numpy y scikit-learn para construir redes neuronales artificiales aparte de la ejecución de GPU-CPU.

  • Muchas funciones de activación y optimizadores están disponibles. Puede aplicar la normalización por lotes, diversas técnicas de regularización, diversas técnicas de inicialización de peso, incluida la inicialización de peso de Xavier, etc. y mucho más.
  • Supongamos que desea crear una red neuronal convolucional (CNN) para la tarea de reconocimiento de imágenes o una red neuronal recurrente (RNN) para datos de secuencia como para PNL; scikit-learn no proporciona estos. TensorFlow tampoco proporciona estos modelos tal como están, pero proporciona bloques de construcción para construir un CNN o RNN.
  • Existen otros modelos de redes neuronales, como codificadores automáticos, GAN, etc., que se pueden construir con TensorFlow.
  • TensorFlow viene con TensorBoard, que es una gran herramienta para la visualización del modelo.
  • TensorFlow es una biblioteca para realizar cálculos representados como nodos en gráficos. Esto también se puede usar para resolver varios otros problemas además del uso de la red neuronal.
  • TensorFlow también se puede utilizar para la capacitación en un grupo de múltiples máquinas (servidores).
  1. Inicialización de peso para redes profundas – deeplearning.ai | Coursera
  2. Red neuronal convolucional – Wikipedia
  3. Red neuronal recurrente – Wikipedia
  4. Autoencoder – Wikipedia
  5. Red de confrontación generativa – Wikipedia
  6. TensorBoard: Visualizando el aprendizaje | TensorFlow
  7. Conjunto Mandelbrot | TensorFlow
  8. TensorFlow distribuido | TensorFlow

Editar:

  • Una característica más importante es que se puede utilizar Transfer Learning en TensorFlow. Cargue un modelo previamente entrenado con los pesos que está disponible para su propia aplicación. Entrena solo al resto de la red.
  1. Uso de Transfer Learning para clasificar imágenes con TensorFlow
  2. Página de inicio de Visual Geometry Group: esta es una red famosa, VGG-16 se ha utilizado en muchas otras aplicaciones, por ejemplo, Multinet utiliza VGG-16. MarvinTeichmann / MultiNet

La naturaleza de los dos es muy diferente.

  1. sklearn y Numpy son sistemas en memoria. Implementarlos en clústeres es un problema, ya que tienes que volver a escribir tu código usando algo como Dask. El punto es que para escalarlos necesita reescribir algoritmos centrales en otra cosa. Con Tensorflow puede mantener el mismo código y ejecutarlo en un clúster / GPU / CPU, etc.
  2. Existe la ventaja de tener un gráfico de cálculo. Esto le permite hacer cosas como el cálculo automático de gradiente que no es posible con numpy sin formato sin reescribir el código / usar otra biblioteca.

Estos puntos son válidos para cualquier biblioteca de cálculo gráfico (Theano / Torch, etc.). Tener un gráfico de cálculo le permite al sistema decidir increíbles optimizaciones para usted.

Tensorflow tiene las siguientes ventajas sobre Scikit-learn / Numpy, además del tiempo de ejecución de CPU / GPU

  1. Construir redes neuronales es bastante fácil, es decir, puede construir o ajustar fácilmente
  1. Recuento de capas ocultas
  2. Tamaño de la capa oculta
  3. Puede elegir entre varias funciones de activación (ReLU, sigmoide, lineal …)
  4. Agregar funciones adicionales como la normalización de lotes es fácil
  5. Puede aplicar varias técnicas de regularización fácilmente
  6. Lo que es más importante, obtendrá la propagación inversa, de forma gratuita (no es necesario escribir ningún código, el tensorflow tiene autodifusión inversa)
  • Incluso en la CPU, puede ajustar el código de grano fino en comparación con el ajuste de grano grueso de Scikit, como puede sintonizar AVX2, FMA, SSE4.2, MKL …
  • Puede configurar para optimizar con OpenCL y la plataforma móvil
  • Es portátil en varios lenguajes como Python, Java, Go, C ++. Puede usar la serialización de tensorflow que es más segura que la “serialización de scikit pickle”. Por supuesto, es más eficiente y portátil en todos los idiomas.
  • Tiene una interfaz de usuario de ruta de cálculo, que es fácil de depurar y visualizar fácilmente.
  • Dado que está construyendo el gráfico internamente, puede distribuirlo entre varias máquinas / CPU fácilmente.
  • La respuesta saldrá por sí misma si ha implementado y entrenado un modelo CNN en Numpy y Tensorflow (o algún otro marco de aprendizaje profundo) respectivamente.

    Puedes seguir el tutorial aquí: redes neuronales y aprendizaje profundo

    More Interesting

    ¿Cuál es la diferencia entre un vector de pensamiento y un vector de omisión de pensamiento?

    ¿Cuál es una explicación simple de un espacio de características multidimensionales?

    Además de las universidades mejor clasificadas (# 1-20), ¿qué otra universidad ofrece un buen programa de maestría en informática con especialización en IA / ML en EE. UU.?

    ¿Son las redes de tipo neuronal el único juego real en la ciudad o podemos desarrollar máquinas sofisticadas de IA que no piensen como los humanos?

    ¿Qué es un modelo generativo profundo?

    ¿Cómo revolucionaría el mundo la PNL perfecta por computadoras?

    ¿Hay alguna diferencia entre el algoritmo de retropropagación utilizado en la etapa de ajuste fino del autoencoder y el algoritmo típico de retropropagación?

    ¿Cuál es la relación entre softmax y sigmoide ya que sus derivados son similares?

    Con referencia a AdaBoost, ¿qué se entiende exactamente por 'ponderado' cuando se dice que entrena a un clasificador débil dada una distribución ponderada?

    ¿Cuándo se deben usar modelos generativos y no modelos discriminativos?

    Cómo dar un peso diferente a los conjuntos de características mientras se entrena un clasificador con Scikit

    ¿En qué se diferencia exactamente la generación del lenguaje natural de la comprensión del lenguaje natural?

    ¿Cuáles son algunos buenos métodos para explorar datos de alta dimensión?

    ¿Necesito tener grupos similares en una regresión de diferencia en diferencia?

    ¿Qué son los datos no paramétricos?