Keras: API agradable y bien diseñada, además de Tensorflow o Theano, y potencialmente extensible como una cuña sobre otros motores de aprendizaje profundo también. La documentación es de alta calidad y fácil de entender. El hecho de que Keras sea nominalmente independiente del motor significa que es teóricamente posible reutilizar el código de Keras incluso si tiene que cambiar el motor por rendimiento u otras razones. Su inconveniente es que siempre que desee implementar arquitecturas relativamente nuevas o esotéricas, generalmente tiene que descender por debajo de la capa de Keras y usar Tensorflow o Theano. Para mí, esto ocurre principalmente cuando necesito usar una indexación avanzada al estilo NumPy, que se traduce en la recopilación / dispersión de Tensorflow y el set / inc_subtensor de Theano . Además, Keras está comprometido conceptualmente con el gráfico de cálculo optimizado automáticamente que fue pionero en Theano y continuó en Tensorflow. Aún así, recomiendo Keras como una capa de interfaz de alto nivel si se va a utilizar Theano o Tensorflow.
Theano: Theano tiene el beneficio y el inconveniente de ser el más antiguo y mejor establecido de los tres. Como es más antiguo, se han implementado la mayoría de las funciones solicitadas por los usuarios. Sin embargo, debido a que no había un ejemplo previo a seguir, algunas de estas implementaciones son demasiado complicadas y difíciles de usar (consulte la documentación de la función de escaneo para ver un buen ejemplo de lo que quiero decir). La documentación es bastante buena, pero sigue siendo confusa. Puede ser muy difícil lograr que un proyecto complejo funcione correctamente en Theano, ya que no existe una manera simple de inspeccionar los cálculos intermedios. La depuración generalmente se realiza mediante la inspección de gráficos de cálculo o el uso de depuradores. Además, Theano va a la zaga de Tensorflow en cuanto a rendimiento y ritmo de desarrollo, ya que el equipo detrás de Theano no tiene acceso ni a la influencia del mercado ni a la escala de recursos de ingeniería que el equipo de Tensorflow tiene a través de Google. En su mayor parte, no creo que se estén realizando nuevos proyectos en Theano en este momento.
Tensorflow: Tensorflow es básicamente un refinamiento optimizado y respaldado por la industria de Theano. Es más eficiente y tiene cierto soporte para el procesamiento distribuido. Los nombres de las funciones y la terminología utilizada en Tensorflow difieren un poco de Theano, lo que puede dificultar el cambio de Theano de lo que debería ser. Aún así, los gráficos de cálculo subyacentes en Tensorflow funcionan más o menos igual que en Theano con la mayoría de los mismos beneficios e inconvenientes. Tensorflow hace que sea un poco más fácil inspeccionar el estado intermedio gracias a la función eval , pero la optimización del gráfico de cálculo sigue siendo bastante opaca, a pesar de que las optimizaciones tienen un efecto grave en el rendimiento. Tensorflow ha asumido esencialmente el papel que Theano y Caffe tenían hace un par de años y ahora es la herramienta de referencia para el aprendizaje profundo, tal vez con marcos como Keras por encima. Recientemente, Pytorch le ha dado a Tensorflow una carrera seria por su dinero, obligando al equipo de Google a adaptarse. Escuché que hay una versión simplificada de Tensorflow en las obras que depende menos del paso de compilación del gráfico.
- ¿Cuáles son los conceptos básicos de los campos aleatorios condicionales?
- ¿Cuáles son las mejores fuentes para aprender el aprendizaje automático y el procesamiento del lenguaje natural?
- ¿Cuáles son los nuevos modelos de aprendizaje profundo que aparecen en los últimos años?
- ¿Aprendizaje automático para predecir valores para t + 1?
- ¿Puedo usar el aprendizaje automático para pronosticar datos de series temporales para puntos de datos discretos dispersos?
Pytorch: Pytorch es un puerto Python de Torch, respaldado por Facebook. Como competidor de las tecnologías anteriores, ofrece una compilación de gráficos justo a tiempo, lo que significa que el código Pytorch encaja mejor con el Python circundante, ya que no trata los gráficos como objetos separados y opacos. En cambio, puede ensamblar cálculos de tensor ad hoc de maneras muy flexibles. También es bastante eficiente. Al igual que Tensorflow, ofrece un sólido soporte multi-GPU, aunque Tensorflow aún gana para sistemas distribuidos más grandes. La API de Pytorch está bien documentada pero menos refinada que Tensorflow o Keras. No obstante, Pytorch gana en flexibilidad y facilidad de uso sin sacrificar el rendimiento, y definitivamente está obligando a Tensorflow a reducirse y adaptarse.