Вы находитесь на странице: 1из 11

Marco teorico:

Antecedentes:

TensorFlow es el sistema de aprendizaje automático de segunda generación


de Google Brain, liberado como software de código abierto en 9 de
noviembre del 2015.

TensorFlow, que ya es la plataforma de código abierto para Machine


Learning de Google, es la herramienta más utilizada en el mundo del Deep
Learning. Parte del éxito es la cultura de Google: “código primero, código
siempre”. Hay muchos más ingenieros de software que expertos en Machine
Learning (ML), por lo que TensorFlow (TF) ayuda a los desarrolladores a
acercarse al ML a través del código.

En 2011, el equipo de Google Brain Team trabajó en la primera plataforma


de Deep Learbing, que llamaron DistBelief. Dedicaban como un 20% de su
tiempo a este provecto. El equipo fue creciendo y la plataforma tomó una
buena forma. Ya en 2014, decidieron empezar a construir TensorFlow como
sucesor de DistBelief.

Introduccion:

En los tres años que han pasado desde su lanzamiento, TensorFlow ha


sentando las bases de un ecosistema de Machine Learning end-to-end,
ayudando a potenciar la revolución del Deep Learning. Cada vez hay más
desarrolladores que hacen uso de algoritmos para implementar nuevas
funcionalidades a los usuarios o acelerar tareas hasta ahora tediosas como la
clasificación de imágenes, la captura y reconocimiento de documentos o el
reconocimiento de voz y la síntesis del lenguaje natural en los asistentes
virtuales (Google Assistant o Alexa)

No es extraño que TensorFlow sea el proyecto con mayor número de


contribuciones en Github año tras años, con más de 1.800 contribuciones.
Acumulando más de 41 millones de descargas en tres años de historia y
decenas de ejemplos de uso en distintas plataformas.

TensorFlow es la apuesta clave de Google para construir el ecosistema del


futuro del Machine Learning que pueda ser ejecutado en la nube, en
aplicaciones o en dispositivos hardware de todo tipo.
Precisamente, los esfuerzos en su última TensorFlow Dev Summit 2019 han
ido enfocados en facilitar y simplificar el uso del framework, incorporando
más API tanto para los programadores principiantes como para los más
expertos. De este modo, todos podremos aprovecharnos de las nuevas
mejoras para crear modelos de aprendizaje más fácilmente para la mayor
número de casos de uso y desplegarlos en cualquier dispositivos.

Han impulsado el despliegue de los algoritmos de forma local en dispositivos


hardware con la release final de TensorFlow Lite 1.0 sin necesidad de recurrir
a la nube u otro sistema centralizado para ser procesados. Un claro ejemplo
de que el Edge Computing forma parte de la estrategia clave de Google para
dotar a cualquier dispositivo, ya sea IoT o móvil, de todas las ventajas del
aprendizaje automático.

Definición:

TensorFlow es una biblioteca de software de código abierto para


computación numérica, que utiliza gráficos de flujo de datos. Los nodos en
las gráficas representan operaciones matemáticas, mientras que los bordes
de las gráficas representan las matrices de datos multidimensionales
(tensores) comunicadas entre ellos.

TensorFlow es una gran plataforma para construir y entrenar redes


neuronales, que permiten detectar y descifrar patrones y correlaciones,
análogos al aprendizaje y razonamiento usados por los humano

La arquitectura flexible de TensorFlow le permite implementar el cálculo a


una o más CPU o GPU en equipos de escritorio, servidores o dispositivos
móviles con una sola API. TensorFlow fue desarrollado originalmente por
investigadores e ingenieros que trabajaban en el equipo de Google Brain
Team, dentro del departamento de investigación de Machine Intelligence,
con el propósito de llevar a cabo el aprendizaje automático y la investigación
de redes neuronales profundas.

Sin embargo, el sistema es lo suficientemente general como para ser


aplicable a una amplia variedad de otros dominios igualmente.

En mayo de 2016 Google anunció TPU (Tensor Processing Unit). Se trata de


una construcción ASIC específica para el aprendizaje automático y
adaptada para TensorFlow.
El TPU es un acelerador de Inteligencia Artificial programable, orientado
para utilizar o correr modelos más que para entrenarlos. Google anunció que
habían usado TPUs en sus centros de datos durante más de un año,
descubriendo que su rendimiento era 10 veces mayor (energéticamente) en
tareas de aprendizaje automático que los sistemas tradicionales.

Unidad de procesamiento del tensor (TPU)

En mayo de 2016 Google anunció su unidad de procesamiento del tensor


(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 alto throughput
de aritmética de precisión baja (p. ej., 8-bits), y orientado para utilizar o
correr modelos más que para entrenarles. Google anunció que habían usado
TPUs en sus centros de datos por más de un año, descubriendo que para
aprendizaje automático su rendimiento por Watt 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.

PROGRAMACION PHYTON

Python es un lenguaje de programación multiparadigma. Esto significa que


más que forzar a los programadores a adoptar un estilo particular de
programación, permite varios estilos: programación orientada a objetos,
programación imperativa y programación funcional. Otros paradigmas están
soportados mediante el uso de extensiones.

Python usa tipado dinámico y conteo de referencias para la administración


de memoria.

Una característica importante de Python es la resolución dinámica de


nombres; es decir, lo que enlaza un método y un nombre de variable durante
la ejecución del programa (también llamado enlace dinámico de métodos).

Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se


pueden escribir nuevos módulos fácilmente en C o C++. Python puede
incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en algunas
situaciones hostil a la programación funcional tradicional del Lisp, existen
bastantes analogías entre Python y los lenguajes minimalistas de la familia
Lisp como puede ser Scheme.

PROGRAMACION C++

C++ es un lenguaje de programación diseñado en 1979 por Bjarne


Stroustrup. La intención de su creación fue extender al lenguaje de
programación C mecanismos que permiten la manipulación de objetos. En ese
sentido, desde el punto de vista de los lenguajes orientados a objetos, el
C++ es un lenguaje híbrido.

Posteriormente se añadieron facilidades de programación genérica, que se


sumaron a los paradigmas de programación estructurada y programación
orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de
programación multiparadigma.

Actualmente existe un estándar, denominado ISO C++, al que se han


adherido la mayoría de los fabricantes de compiladores más modernos.
Existen también algunos intérpretes, tales como ROOT.

Una particularidad del C++ es la posibilidad de redefinir los operadores, y


de poder crear nuevos tipos que se comporten como tipos fundamentales.

El nombre "C++" fue propuesto por Rick Mascitti en el año 1983, cuando el
lenguaje fue utilizado por primera vez fuera de un laboratorio científico.
Antes se había usado el nombre "C con clases". En C++, la expresión "C++"
significa "incremento de C" y se refiere a que C++ es una extensión de C.

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.
Python no está solo en TensorFlow, más lenguajes como Swift o Javascript
se unen a la plataforma:

Obviamente, Python sigue siendo una pieza fundamental en el ecosistema


Machine Learning y a la vez ha recibido un gran impulso al ser uno de los
lenguajes principales con decenas de librerías entre las más utilizadas, a
parte de su gran madurez. No sólo en TensorFlow, sino en otras plataformas
como PyTorch.

Pero el ecosistema de TensorFlow ha abierto sus puertas incorporando


librerías como TensorFlow.js, que finalmente alcanza la versión 1.0 Con más
de 300.000 descargas y 100 contribuciones. Permite ejecutar proyectos ML
en el navegador o el en backend con Node.js, tanto modelos ya pre
entrenados como construir entrenamientos.

Empresas como Uber o Airbnb ya lo están utilizando en entornos de


producción. Hay una amplia galería de ejemplos y casos de uso utilizando
JavaScript junto a TensorFlow

Otra de las grandes novedades es el avance en la implementación de


TensorFlow en Swift con su versión 0.2. De esta forma incorporan un nuevo
lenguaje de propósito general como Swift al paradigma ML con todas las
funcionalidades para que los desarrolladores puedan acceder a todos los
operadores de TensorFlow. Todo ello construido sobre las bases de Jupyter
y LLDB.

Algunos ejemplos de aplicación de TensorFlow

1. Para mejorar la fotografía de los smartphones

Una de las aplicaciones más interesantes está en los teléfonos. Por ejemplo,
el Pixel 2 que se lanzó este año, incluye efecto bokeh con una sola cámara.
Se crea un modo retrato que separa a la persona del fondo, cuando esto era
algo reservado para dispositivos con doble cámara. Y esto se consigue con el
TensorFlow de Machine Learning, entrenando un modelo de TensorFlow en el
backend, pero también ejecutándolo en el propio teléfono. No es tarea
sencilla.

Se trata un área muy interesante. Otras empresas necesitan múltiples


cámaras para lograr básicamente el mismo resultado. La rapidez de la
solución y el fantástico resultado que tiene es todo un hito tecnológico.
Google ha sido capaz de imitar un efecto propio de la física óptica con sólo
software y aprendizaje profundo.

2. Para ayudar al diagnóstico médico

El sector de la salud es uno de los campos que más se están revolucionando y


que mayor impacto tendrá para todos nosotros como sociedad en los
próximos años.

TensorFlow ya está mejorando las herramientas que utilizan los médicos,


por ejemplo ayudándoles a analizar radiografías. El Deep Learning va a
permitir a los facultativos médicos pasar más tiempo con los pacientes,
además de permitirles hacer actividades más interesantes y emocionantes.
El Deep Learning podría estar en los dispositivos que llevan los médicos con
ellos, por lo que definitivamente hay necesidad de que TensorFlow funcione
en gran variedad de dispositivos.

3. Procesamiento de imágenes

Una de las aplicaciones más conocidas de TensorFlow es el software


automatizado de procesamiento de imágenes, DeepDream. Se trata de un
programa de visión artificial creado por el ingeniero de Google Alexander
Mordvintsev, que utiliza una red neuronal convolucional para encontrar y
mejorar patrones en imágenes mediante pareidolia algorítmica, creando así
una apariencia alucinógena, similar a un sueño, creando imágenes
deliberadamente sobreprocesadas.

Google popularizó el término Deep Dreaming, simulando la idea de “sueño


profundo”. Curiosamente, también se ha demostrado que el modelo
DeepDream tiene aplicación en el campo de la historia del arte; algo de lo
que hablaremos próximamente en otro artículo.
Flexibilidad y software libre

TensorFlow se construyó pensando en el código abierto y en la facilidad de


ejecución y escalabilidad. Permite ser ejecutado en la nube, pero también en
local. La idea es que cualquiera pueda ejecutarlo. Se puede ver a personas
que lo ejecutan en una sola máquina, un único dispositivo, una sola CPU (o
GPU) o en grandes clústeres. La disparidad es muy alta.

Y si realmente se desea escalar, la nube es un gran lugar para hacerlo. Se


puede obtener mucha automatización. Google quiere asegurarse de que todo
el mundo utilice TensorFlow, no necesariamente empujarlos hacia una u otra
dirección.

El futuro de TensorFlow en el IoT

El Internet of Things (IoT) empieza a crecer y despegar. Hay un


importante número de startups que están intentando crear lugares para la
recolección de datos y que realmente están llevando el aprendizaje
automático al límite. El IoT es un área muy interesante, pues desembocará
en el Edge Computing.

Por un lado, cuantos más datos y más heterogéneos e indefinidos, más


interesante para el futuro del Deep Learning. Por otro lado, TensorFlow va
enfocado a ejecutarse en distintos dispositivos y arquitecturas. Empresas
como IBM o Atos tienen esta integración en el punto de mira.

TensorFlow seguirá dando que hablar. La comunidad de desarrolladores


sigue aumentando y las librerías no paran de crecer y mejorar. Si quieres
adentrarte de verdad en el mundo de la Inteligencia Artificial, TensorFlow
es una plataforma básica para seguir avanzando.
El camino hacia TensorFlow 2.0

TensorFlow 2.0 Alpha se ha fijado el objetivo de simplificar su uso,


ampliando las posibilidades para ser una plataforma de ML más abierta que
puede ser utilizada tanto por investigadores que quieran realizar
experimentos y estudios, desarrolladores dispuestos a automatizar
cualquier clase tarea o empresas que quieran facilitar la experiencia de uso
de sus usuarios a través del inteligencia artificial.

Uno de los pilares de TensorFlow 2.0 es la integración más estrecha con


Keras como la API de alto nivel para construir y entrenar modelos de Deep
Learning. Keras tiene diversas ventajas:

Enfocada en el usuario. Keras tiene una interfaz más simple y consistente,


adaptada a los casos de uso más comunes. Facilitando un feedback más claro
para entender los errores de implementación.

Ser más modular y reutilizable. De este modo los modelos de Keras puede
componer estructuras más complejas a través de capas y optimizadores sin
necesidad de un modelo específico para entrenar.

Pensado tanto para principiantes como para expertos. Aprovechando como


idea fundamental el background de los diversos tipos de programadores que
se están involucrando desde el principio en el desarrollo de Deep Learning.
Keras provee una API mucho más clara sin necesidad de ser un experto con
años de experiencia.

También se han incorporado una amplia colección de datasets públicos


preparados para ser utilizados con TensorFlow. Cualquier desarrollador que
se haya aventurado a trabajar en Machine Learning sabe, esto representa el
ingrediente principal para crear modelos y entrenar los algoritmos que
después emplearemos. Tener esa ingente cantidad de datos ayuda bastante.
Para la migración de TensorFlow 1.x a 2.0 se han creado diversas
herramientas para convertir y migrar los modelos. Ya que se han realizado
actualizaciones necesarias para que sean más óptimos y pueden ser
desplegados en más plataformas.

El ecosistema sigue creciendo con numerosas librerías para crear un


entorno de trabajo más seguro y privado. Como el lanzamiento de la librería
TensorFlow Federated, cuya intención es descentralizar el proceso de
entrenamiento para compartirlo con múltiples participantes que puedan
ejecutarlo localmente y envíen los resultados sin exponer necesariamente
los datos capturados, sólo compartiendo el aprendizaje obtenido para la
generación de los algoritmos. Un claro ejemplo de esto es el aprendizaje
automático de los teclados virtuales, como el de GBoard de Google, que no
expone datos sensibles, ya que va a aprendiendo localmente en el propio
dispositivo.

}}}

Al hilo de esto, el equilibrio entre Machine Learning y la privacidad es una


tarea compleja, por ello se ha lanzado la librería de TensorFlow Privacy que
permite definir distintos escenarios y grados para salvaguardar los datos
más sensible y anonimizar la información de entrenamiento de los modelos.

Aprender sobre TensorFlow y Machine Learning cada vez más fácil con
estos cursos

En 2016, Udacity lanzó el primer curso sobre TensorFlow en colaboración


con Google. Desde entonces, más de 400.000 estudiantes se han apuntado al
curso. Aprovechando el lanzamiento de Tensor Flow 2.0 Alpha, se ha
renovado el curso por completo para hacerlo más accesible a cualquier
desarrollador sin requerir un profundo conocimiento en matemáticas. Tal
como ellos afirman: “Si puedes programar, puedes construir aplicaciones AI
con Tensor Flow”

El curso de Udacity está guiado por el equipo de desarrollo de Google, a día


de hoy está disponible la formación de los primeros 2 meses de la
planificación, pero irán añadiendo más contenido a lo largo de las semanas.
En la primera parte podrás aprender los conceptos fundamentales detrás
del machine learning y cómo construir tu primera red neuronal usando
TensorFlow. Disponen de numerosos ejercicios y codelabs escritos por el
propio equipo de Tensor Flow.

También se ha incorporado nuevo material en deeplearning.ai con un curso


de introducción a AI, ML y DL, parte del career path de Tensor Flow: from
Basics to Mastery series de Coursera. Entre los instructores se encuentra
Andrew Ng, uno de los más importantes impulsores del Machine Learning
desde sus inicios.

Y otra de las plataformas orientadas a la formación en AI, Fast.ai ha


incorporado dos cursos sobre el uso de TensorFlow Lite para
desarrolladores móviles y otro sobre el uso de Swift en TensorFlow.

Definitivamente, tenemos muchas oportunidades para empezar a aprender


más sobre la revolución del Machine Learning junto a TensorFlow, una de las
plataformas end-to-end más completas para este fin.

Оценить