# TensorFlow

TensorFlow es una biblioteca de código abierto para aprendizaje automático a través de un rango de tareas, y desarrollado por Google para satisfacer sus necesidades de sistemas capaces de construir y entrenar redes neuronales para detectar y descifrar patrones y correlaciones, análogos al aprendizaje y razonamiento usados por los humanos. Actualmente es utilizado tanto en la investigación como en los productos de Google$^{:min0:15/2:17}$ $^{:p.2}$ $^{:0:26/2:17}$ frecuentemente reemplazando el rol de su predecesor de código cerrado, DistBelief. TensorFlow fue originalmente desarrollado por el equipo de Google Brain para uso interno en Google antes de ser publicado bajo la licencia de código abierto Apache 2.0 el 9 de noviembre de 2015.

## Historia
### DistBelief

Empezando en 2011, Google Brain construyó DistBelief como un sistema propietario de aprendizaje automático, basado en redes neuronales de aprendizaje profundo. Su uso creció rápidamente a través de diversas compañías de Alphabet tanto en investigación como en aplicaciones comerciales. Google asignó múltiples científicos computacionales, incluyendo Jeff Dean, para simplificar y reconstruir el código base de DistBelief en una biblioteca de grado aplicación más rápida y más robusta, cuyo resultado es TensorFlow. En 2009, el equipo, dirigido por Geoffrey Hinton, había implementado propagación hacia atrás generalizada y otras mejoras que permitieron generar redes neuronales con exactitud sustancialmente más alta, por ejemplo una reducción de 25% de errores en reconocimiento del habla.

### TensorFlow

TensorFlow es el sistema de aprendizaje automático de segunda generación de Google Brain, liberado como software de código abierto el 9 de noviembre de 2015. Mientras la implementación de referencia se ejecuta en dispositivos aislados, TensorFlow puede correr en múltiples CPUs y GPUs (con extensiones opcionales de CUDA para informática de propósito general en unidades de procesamiento gráfico). TensorFlow está disponible para Windows, Linux, macOS, y plataformas móviles que incluyen Android e iOS.
El nombre TensorFlow deriva de las operaciones que tales redes neuronales realizan sobre arrays multidimensionales de datos. Estos arrays multidimensionales son referidos como "tensores". En una primera versión los cálculos de TensorFlow se expresaban como gráficos de flujo de datos con estado, sin embargo, con la evolución de la biblioteca la forma de codificar estas redes se ha vuelto más imperativa. En junio de 2016, Jeff Dean de Google declaró que 1,500 repositorios en GitHub mencionaron TensorFlow, de los cuales solo 5 eran de Google.
En el TensorFlow Dev Summit del 6 de marzo de 2019 se anunció la versión alfa de TensorFlow 2.0. TensorFlow 2.0 se centra en la simplicidad y la facilidad de uso, con actualizaciones importantes como (1) el modelo de ejecución (modo eager), consolidar el uso de una API intuitivas de alto nivel (basada en Keras) y el despliegue flexible de modelos en cualquier plataforma.

### Unidad de procesamiento del tensor (TPU)

En mayo de 2016 Google anunció su unidad de procesamiento tensorial (TPU), una construcción ASIC personalizada específicamente para aprendizaje automático y adaptada para TensorFlow. El TPU es un acelerador de IA programable diseñado para proporcionar un alto rendimiento ejecutando operaciones aritméticas de baja precisión (p. ej., 8-bits), y orientado más para ejecutar modelos que para entrenarlos. Google anunció que habían usado TPUs en sus centros de datos durante más de un año, descubriendo que para aprendizaje automático su rendimiento por vatio es un orden de magnitud mayor que los sistemas tradicionales.

## Características

TensorFlow proporciona una API de Python, así como APIs de C++, Haskell, Java, Go y Rust. También hay bibliotecas de terceros para C#, Julia, R, Scala y OCaml.

## Aplicaciones

Entre las aplicaciones para las cuales TensorFlow es la base, está el software automatizado de procesamiento de imágenes DeepDream. Google oficialmente implementó RankBrain el 26 de octubre de 2015, respaldado por TensorFlow. RankBrain ahora maneja un número sustancial de consultas de búsqueda, reemplazando y sustituyendo el algoritmo estático tradicional basado en resultados de búsqueda.

## Bibliotecas relacionadas

* PyTorch
* Caffe Computer Vision Library.
* Deeplearning4j
* Neuroph
* OpenNN, una biblioteca de código abierto de redes neuronales escrita en C++ para aprendizaje profundo.
* Theano, una biblioteca de código abierto de aprendizaje profundo para Python.
* Torch, un marco de código abierto escrito en Lua con soporte amplio para algoritmos de aprendizaje automático.
* MXNet