Está en la página 1de 20

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Universidad del Perú, Decana de América


FACULTAD DE INGENIERÍA ELECTRICA Y
ELECTRÓNICA

TENSOR FLOW

CURSO : Tecnología de la información


PROFESOR : Carlos Chiri
INTEGRANTES :
Jorge Huarcaya Gabriel 15190090
Miranda Velita Pedro 17190076
Montañez Montañez Aldo 17190082
Moreno Acosta, Olenka 15190279

15 de Noviembre, 2018
INTRODUCCIÓN

En los últimos años el crecimiento y aplicación de la inteligencia artificial


(IA) en áreas como BigData, Cloud, IoT, etc. Han dado lugar a una verdadera
revolución industrial.
Las empresas se están posicionando en un nuevo escenario donde Google es
uno de los referentes en Inteligencia Artificial desde sus orígenes
TensorFLow, es el software de computación
numérica creado por Google para desarrollar
algoritmos inteligentes, y está disponible a la
comunidad en general.
El origen de TensorFlow está en años de
experiencia de Google en el campo de la IA.
TensorFlow nace del trabajo de Google
dedicado a investigar en el área de la IA que
desarrollaron en 2011 DistBelief, el predecesor cerrado de TensorFlow.
El impacto que ha logrado Google liberando esta tecnología es significativo
y la comunidad ha respondido. Hasta mayo del 2017 existen más de 11000
repositorios de código donde se referencia Tensor Flow.
Google lleva usando esta tecnología desde hace varios a{os aplicándola a
muchos de sus productos y servicios, como es el caso de Gmail, donde se
usa en el componente Smart Reply para generación de respuestas
automáticas, o como el caso de Google Translate donde es usado para
realizar millones de traducciones todos los días entre cientos de idiomas.
TÉRMINOS USADOS
Para comenzar a hablar de TensorFlow, necesitamos de términos que nos
ayudará a entender mejor el tema.
Tensores: El tensor es el principal bloque de datos que usa TensorFlow, cada
tensor tiene una dimensión y un tipo.

La dimensión son las filas y columnas del tensor.

Usando tensores representaremos la información de nuestro problema, y


sobre estas estructuras de datos aplicaremos algoritmos que harán “fluir”
estos datos aplicando diferentes operaciones y transformaciones
sucesivamente.

El tipo, es el tipo de datos para los elementos del tensor.

Entonces decimos que 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
humanos.
Inteligencia artificial: La inteligencia artificial (IA) es una rama de la
ciencia informática en la que las máquinas realizan tareas como una mente
humana, tales como aprender o razonar.
En tal sentido se dice que es la simulación de procesos de inteligencia
humana por parte de máquinas, especialmente sistemas informáticos. Estos
procesos incluyen el aprendizaje (la adquisición de información y reglas para
el uso de la información), el razonamiento (usando las reglas para llegar a
conclusiones aproximadas o definitivas) y la autocorrección

Redes neuronales: Son un modelo computacional que intenta imitar el


comportamiento de las neuronas de cerebros biológicos. En este modelo se
crean varias capas de neuronas interconectadas con las neuronas de las capas
anteriores y siguientes con unos pesos en los enlaces.

A la unión de una neurona con sus enlaces de entrada y sus pesos asignados
se le llama perceptrón. Así la salida del perceptrón tiene un mecanismo para
calcular si está activo en función de los valores dados por la salida de la
anterior
capa multiplicados por el peso del enlace de unión.

La función de activación de la neurona es la que define la conversión


de las entradas ponderadas en su activación de salida. Algunas de las
funciones
usadas normalmente son: lineal, sigmoidea, escalón, TanH, ReLu
Las redes neuronales se pueden clasificar según su tipología/arquitectura.
Algunas
de estas clasificaciones pueden ser las siguientes.

 DNN (Deep Neural Net) la cual tiene más de una capa oculta.
 CNN (Convolutional Neural Net) son especialmente importantes
en
el procesamiento de imágenes y la categorización. Se caracterizan
por tener capas de filtros convolucionales
que, de manera similar a la corteza visual del cerebro, transforman
la entrada
aplicando máscaras para extraer información de distintos tipos.
 RNN (Recurrent Neural Net) se caracterizan por tener
conexiones recurrentes
con ellas mismas o neuronas de la misma capa. Especialmente
interesantes para detección
de patrones, pues permiten “recordar” los valores de la anterior
predicción.

Las redes neuronales pueden tener distintos tipos de aprendizaje:

 Aprendizaje supervisado a la red se le proporcionan un conjunto


de ejemplos
con sus valores de salida deseados. Así la red se entrena aplicando
algoritmos para
ir corrigiendo y propagando los pesos más adecuados para lograr la
salida indicada.
 Aprendizaje no supervisado solo se le indican entradas a la red
sin proporcionarle
los valores de salida correctos/deseados. La red aprende a
clasificarlos buscando las
similitudes entre conjuntos de datos
 Aprendizaje por refuerzo se enseña al sistema con recompensas
o castigos.
Así indicándole el grado de desempeño irá ajustando sus valores
para alcanzar el máximo posible

Para ejecutar predicciones y entrenamientos de redes neuronales la mayoría


de
operaciones que se realizan son cálculos con matrices. Para el procesamiento
de gráficos una de las tareas más importantes es ésta, por ello el uso de GPUs
en este campo es muy adecuado y puede reducir mucho los tiempos. Google
ha dado un paso más introduciendo unos chips llamados TPUs que están más
optimizados y centrados en los cálculos necesarios para ejecutar algoritmos
de aprendizaje automático.

API: TensorFlow tiene APIs disponibles en varios idiomas, tanto para la


construcción como para la ejecución de un gráfico en TensorFlow. La API
de Python es en la actualidad la más completa y la más fácil de usar, pero
la C++ API puede ofrecer algunas ventajas de rendimiento en ejecución de
gráficos, y soporta el despliegue en pequeños dispositivos como Android.

Deep Learning
El Deep Learning lleva a cabo el proceso de Machine Learning usando una
red neuronal artificial que se compone de un número de niveles
jerárquicos. En el nivel inicial de la jerarquía la red aprende algo simple y
luego envía esta información al siguiente nivel. El siguiente nivel toma
esta información sencilla, la combina, compone una información algo un
poco más compleja, y se lo pasa al tercer nivel, y así sucesivamente.

Machine learning
Es la habilidad de las computadoras de aprender sin ser explícitamente
programadas.
Si esta definición resultó muy simple, pongámoslo de esta forma: es la idea
de que existen algoritmos que pueden darte hallazgos o conclusiones
relevantes obtenidas de un conjunto de datos, sin que el ser humano tenga
que escribir instrucciones o códigos para esto.
¿CÓMO EMPEZÓ EL TENSORFLOW?
Tensor Flow es un software de computación numérica, creado por Google,
orientado a problemas de Deep Learning. Deep Learning es un área
específica de Machine Learning que está tomando gran relevancia dentro del
mundo de la Inteligencia Artificial y que está detrás de algunos de las
novedades tecnológicas más sorprendentes de los últimos años.
El origen de TensorFlow está en años de experiencia de Google en el campo
de la Inteligencia Artificial. TensorFlow nace del trabajo de Google Brain,
un grupo de investigadores e ingenieros de Google dedicado a investigar en
el área de la IA, que desarrollaron en 2011 DistBelief, el predecesor cerrado
de TensorFlow.

Ya en 2014, decidieron empezar a construir TensorFlow como sucesor de


DistBelief.

TensorFlow se convirtió entonces 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.

A principios de 2015, un equipo de investigación en inteligencia artificial


(IA) de Google creó un extraño programa de software llamado TensorFlow.

TensorFlow facilita mucho la labor de los ingenieros de la empresa al


traducir nuevos enfoques de inteligencia artificial en paquetes de código
prácticos. Esto mejora la precisión de servicios como las búsquedas y el
reconocimiento de voz. Pero pocos meses después de
que TensorFlow llegara a las manos del ejército de codificadores de Google,
la compañía también empezó a ofrecerlo al mundo de forma gratuita.

Aunque esta decisión podría parecer altruista y hasta irracional, casi dos años
después de hacerlo, en febrero de 2017, Google liberó la versión 1.0, que
incorpora multitud de mejoras. Algunas de las más reseñables son mejoras
de rendimiento que permiten acelerar hasta 58 veces los tiempos de
ejecución de algunos algoritmos y aprovechar las ventajas de ejecutar sobre
GPUs. Además, se han mejorado y facilitado las integraciones con otras
bibliotecas del ecosistema como Keras.
El impacto que ha logrado Google liberando esta tecnología es espectacular
y la comunidad ha respondido.
Los productos creados con TensorFlow se pueden ejecutar desde cualquier
lugar, pero además es muy fácil enviarlos a plataforma de computación en la
nube de Google. Y su popularidad está ayudando a Google a hacerse con una
parte más grande del mercado de infraestructuras alojadas en la nube, que
actualmente ya está valorado en 35.000 millones de euros y subiendo.
Google ocupa el tercer puesto de la clasificación en este sector, bastante por
detrás de los líderes, Amazon Microsoft.
VENTAJAS DE USAR TENSORFLOW

 TensorFlow es un gran framework de DL. Tiene el soporte de Google


y eso es siempre motivo de confianza. Además, su popularidad se
traduce en toneladas de código abierto con multitud de arquitecturas
ya implementadas y modelos pre-entrenados que facilitan
enormemente la tarea de los programadores e ingenieros, aumentando
su productividad.

 Si procesamos en CPU, TensorFlow tiene la ventaja de ser súper


escalable. Mientras otros frameworks empeoran su desempeño cuando
aumentamos el paralelismo del procesador, TensorFlow sigue
mejorando tiempos incluso con 32 hilos corriendo en paralelo.

 TensorFlow es rápido, es pythónico, es de Google y tiene un nombre


con mucho marketing.

 TensorFlow es general, flexible, portable, fácil de usar, y


completamente de código abierto. En las pruebas ha conseguido ser el
doble de rápido que DistBelief, y podemos hacer cualquier cosa que
se nos ocurra a través de una interfaz Python.

DESVENTAJAS DE USAR TENSORFLOW


 El problema de este enfoque es que el entrenamiento en CPU no es (o
no debería ser) la opción cuando tenemos nuestro modelo en
producción. En general todos los frameworks mejoran el desempeño
entre 10 y 15 veces si entrenamos sobre la tarjeta gráfica (GPU). Aquí
es donde TensorFlow no da la talla. De las 7 arquitecturas analizadas,
TensorFlow queda último o penúltimo en 6 de ellas en única tarjeta
gráfica. Acaso pueda argumentarse que TensorFlow será escalable
sobre la GPU del mismo modo que lo es sobre CPU, pero no.

 Para una arquitectura simple (fully connected) CNTK (Microsoft) y


Apache MXNet mejoran un 35% sobre 2 GPUs, TensorFlow apenas
logra una mejora del 10%. Parece ser que el problema es que
TensorFlow actualiza los parámetros en la CPU, resultando un coste
mayor al tener que traspasar el gradiente de la GPU a la CPU.

 TensorFlow ofrece una solución basada en un clúster con una


arquitectura parameter server ↔ worker . El principal problema es que
al ser un producto independiente hay que integrarlo a nuestro clúster
de Big Data como una herramienta aparte.

 Otra opción es usar TensorflowOnSpark, una librería que está


desarrollando Yahoo! que integra TensorFlow en nuestro clúster
Apache Spark o Apache Hadoop. Al ser una librería muy nueva es
complicado saber el estado actual de la misma. En una conferencia de
2016 se advierte de que sólo debe ser utilizada en caso de que tu
problema no quepa en una sola máquina, ya que sufre severas
penalizaciones en el rendimiento.

¿PARA QUÉ SIRVE TENSORFLOW?


Google afirma que TensorFlow sirve tanto para investigación como para
usarlo en productos reales, y lo mejor de todo es que TensorFlow es
completamente nuestro: todo el código de TensorFlow, las herramientas
asociadas, los ejemplos y los tutoriales son de código abierto y están
licenciados con una licencia Apache 2.0. En otras palabras, no tendremos
problema alguno en aprovechar todo el potencial de TensorFlow.
Sirve para construir y entrenar redes neuronales, que permiten detectar y
descifrar patrones y correlaciones, análogos al aprendizaje y razonamiento
usados por los humanos.
TensorFlow es una biblioteca de código abierto que se basa en un sistema de
redes neuronales. Esto significa que puede relacionar varios datos en red
simultáneamente, de la misma forma que lo hace el cerebro humano. Por
ejemplo, puede reconocer varias palabras del alfabeto porque relaciona las
letras y fonemas. Otro caso es el de imágenes y textos que se pueden
relacionar entre sí rápidamente gracias a la capacidad de asociación del
sistema de redes neuronales. En el programa, se almacenan todas las pruebas
y experimentos que se realizaron para el desarrollo de programas y
aplicaciones.
APLICACIONES DE TENSORFLOW
Los directivos de Google consideran que TensorFlow puede ser muy útil
para las empresas sanitarias, de seguros y automovilísticas. Desde que liberó
el código, varias empresas utilizan el software o se han basado en el mismo
para desarrollar aplicaciones. El gigante de los seguros AXA ya utiliza el
software para predecir (con un 78% de acierto) las posibilidades de que un
asegurado cause un grave accidente de coche. Otra aplicación popular
derivada del uso de los datos de TensorFlow es el motor de reconocimiento
de imágenes DeepDream. Miles de startups e investigadores universitarios
apuestan por TensorFlow como base para desarrollar sus propios sistemas de
inteligencia artificial.
Enumeramos algunos ejemplos de sus aplicaciones:
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.
USO BÁSICO DEL TENSOR FLOW
Para usar TensorFlow es necesario entender como TensorFlow:

 Representa cálculos en forma de grafos.


 Ejecuta grafos en el contexto de sesiones.
 Representa los datos en forma de tensors.
 Mantiene el estado con Variables.
 Usa operaciones de alimentación y recuperación para obtener datos dentro
y fuera de operaciones arbitrarias.

El cómputo basado en grafos


Los programas de TensorFlow son usualmente estructurados dentro de una
fase de construcción, y una fase de ejecución que utiliza una sesión para
ejecutar ops en el grafo.
Por ejemplo, es común crear un grafo para representar y entrenar una red
neuronal en la fase de construcción, y entonces ejecutar repetidamente un
conjunto de ops entrenadas en la fase de ejecución.
TensorFlow puede ser utilizado en programas como: C, C++ y Python. Esto
representa una manera mucho más sencilla de utilizar las librerias de Python
para unir grafos, como tambien se prevee de un gran conjunto de funciones
útiles que no estan disponibles en C y C++.
Las librerías de sesión tienen funcionalidades equivalente paralos tres
lenguajes.
Construyendo el grafo
Para construir un grafo comienza con los ops que no necesitan ninguna
entrada (ops fuente), como una constante, y pasa su salida a otro ops para
realizar el cálculo cómputacional.
El constructor de ops en la librería de Python regresa objetos que se
mantienen para la salida de las ops construidas. Usted puede pasarles a otras
ops construidas para usarlas como entradas.
La librería de Python para TensorFlow tiene un grafo por default el cual
agrega nodos a los ops constructores. El grafo por defecto es suficiente para
muchas aplicaciones. Vea la documentación de la clase Graph para como
manejar explícitamente múltiples grafos.

El grafo por defecto ahora tiene tres nodos: dos constant() ops y uno
matmul() op. Para multiplicar las matrices, y obtener el resultado de la
multiplicación, usted debe lanzar el grafo firmado en su sesión personal.

Lanzando el Grafo en una sesión


El lanzamiento requiere la siguiente construcción. Para lanzar el Grafo,
cree un objeto Session. Sin argumentos, el constructor de la sesión lanza
el grafo por default.
La sesión debe cerrarse para liberar recursos. Tambien puede ingresar a la
sesión con un bloque "with". La sessión es cerrada automáticamente al
final del bloque "with".

La implementación de TensorFlow traduce la definición de un grafo en


operaciones distribuidas ejecutables a lo largo de recursos de cómputo
disponibles, como CPU o una de las tarjetas GPU en su computadora. En
general no necesita especificar los CPUs o GPUs explícitamente.
TensorFlow utiliza el primer GPU, si usted cuenta con uno, para la mayoría
de las operaciones como sea posible.
Si usted cuenta con más de un GPU dispinible en su computadora, para
usar un GPU más allá del primero usted debe asignarle ops explícitamente.
Use la instrucción with...Device para específicar cual CPU o GPU usar
para la operación:
Los dispositivos con especificados como strings. Los dispositivos
actualmente soportados son:

 "/cpu:0": The CPU of your machine.


 "/gpu:0": The GPU of your machine, if you have one.
 "/gpu:1": The second GPU of your machine, etc.

Lanzando el Grafo en una sesión distribuida


Para crear un cluster de TensorFlow, lance un server de TensorFlow en
cada una de las máquinas en el clúster. Cuando usted inicia una sesión en
su cliente, usted debe enviar la localización en la red de una de las
máquinas en el clúster:

Esta máquina se convierte en el maestro de la sesión. El maestro distribuye


el Grafo a través de otras máquinas en el cluster(workesrs), parecido en la
manera en la que la implementación local distribuye el Grafo através de
recursos de cómputo dentro de una máquina.
Usted puede usar "with tf.device():" para especificar directamente los
workers para partes espcíficas del Grafo:

Uso interactivo
Los ejemplos de Python en la documentación lanzan el Grafo con
una Session y usa Session.run()
Para facilitar el uso de ambientes interactivos de Python,
como IPython usted puede utilizar la clase InteractiveSession, y
el Tensor.eval() y los métodos Operation.run(). Esto permitirá mantener
una variable para la sesión:

Tensors
Los programas de TensorFlow usan una estructura de datos tensor para
representar todos los datos -- sólo los tensors pasan por las operaciones del
Grafo computacional. Usted puede pensar en un tensor TensorFlow como
un arreglo de n-dimensiones o una lista. Un tensor tiene un tipos estático,
un rango y una forma.

Variables
Las variables mantienen su estado durante la ejecución del Grafo. Los
siguientes ejemplos muestran una variable sirviendo como un simple
contador.
La operación assing() en este código es una parte de la expresión del Grafo
como la operación add(), pero esto no realiza la asignación hasta que se
ejecuta la expresión run()
Típicamente usted puede representar los parámetros de un modelo
estadístico como un conjunto de Variables. Por ejemplo, usted quisiera
almacenar los pesos de una red nueronal como un tensor en una variable.
Duante el entrenamiento usted actualiza este tensor corriendo un Grafo de
entrenamiento repetidamente.
Fetches
Para extraer las salidas de las operaciones, ejecute el Grafo con una llamda
run() sobre el objeto Session y pasar en el tensor para recuperarlo. En el
ejemplo anterior, nosotros extrajimos el nodo sencillo state, pero también
podemos extraer múltiples tensors:

Todas las ops necesarios para producir los valores de los tensores
requeridos son corridos una vez (no una vez para cada ocasión que son
requeridos).

Feeds
Los ejemplos anteriores introduce a los tensors en un Grafo computacional
almacenándole en Constantes y Variables. TensorFlow tambien provee un
mecanismo de alimentación para ajustar un tensor directamente en una
operación en el Grafo.
Un feed temporalmente reemplaza una salida de una operación con un
valor del tensor. Usted aliemnta los datos del feed como un argumento de
la llamada a run(). El feed es solamente utilizado para ejecutar call en el
que es enviado. El caso más común envuelve operaciones especialmente
diseñadas para ser operaciones "feed" usando: tf.placeholder() para
crearlos:
La operación placeholer() genera un error si usted no puede soportar un
feed para esto.

CONCLUSIÓN
Google ha sido pionero desde su nacimiento en el mundo de la Inteligencia
Artificial, impulsando la investigación y el desarrollo en este campo. Con
TensorFlow han dado sin duda un pasito más, impulsando como siempre la
innovación y abriendo el conocimiento a multitud de empresas,
universidades, ingenieros y científicos que basándose en tecnologías abiertas
como TensorFlow conseguirán logros fascinantes en los próximos años.

En resumen, Tensorflow es una herramienta increíble que nos ofrece un


marco de trabajo muy potente, pero que nos simplifica enormemente la
complejidad interna que supone el manejo de algoritmos de aprendizaje
profundo.

También podría gustarte