¿Cómo debo empezar a aprender el flujo tensorial?

Pruebe este curso. ¡Este curso lo guiará a través de cómo usar el marco TensorFlow de Google para crear redes neuronales artificiales para un aprendizaje profundo y también los conceptos básicos del aprendizaje automático! El objetivo de este curso es ofrecerle una guía fácil de entender sobre las complejidades del marco TensorFlow de Google de una manera que sea fácil de entender y su aplicación.

Course Link: aprenda Aprendizaje automático y Aprendizaje profundo utilizando Tensor Flow y Keras

¿Qué aprenderás de este curso?

  • Entender la intuición detrás de las redes neuronales artificiales.
  • Aplicar redes neuronales artificiales en la práctica.
  • Comprender la intuición detrás de las redes neuronales convolucionales.
  • Comprender la intuición detrás de las redes neuronales convolucionales.
  • Comprender la intuición detrás de las redes neuronales recurrentes
  • Aplicar redes neuronales recurrentes en la práctica.
  • Comprender la intuición detrás de Machine Learning y sus aplicaciones.
  • Comprender los marcos de aprendizaje profundo y la comparación de rendimiento.
  • Entender las redes neuronales Algoritmos
  • Entender neuronas artificiales
  • Comprender los conceptos básicos de Tensor Flow.
  • Comprenda toneladas de otros conceptos relacionados con el aprendizaje profundo, el aprendizaje automático, las redes neuronales convolucionales y el flujo tensorial.

Este curso cubre una variedad de temas, incluyendo

  • Conceptos básicos de redes neuronales
  • TensorFlow detallado, Keras, Sonnet etc.
  • Redes neuronales artificiales
  • Tipos de red neuronal
  • Red de alimentación hacia adelante
  • Red de base radial.
  • Mapas autoorganizados de Kohonen
  • Red neuronal recurrente
  • Redes neuronales modulares
  • Redes densamente conectadas
  • Redes neuronales convolucionales
  • Redes neuronales recurrentes
  • Aprendizaje automático
  • Comparaciones del Marco de Aprendizaje Profundo

¿Quién es el público objetivo?

  • Cualquier persona interesada en Aprendizaje Automático, Aprendizaje Profundo
  • Los estudiantes que tienen al menos conocimientos de secundaria en matemáticas y que desean comenzar a aprender Aprendizaje automático.
  • Cualquier persona de nivel intermedio que conozca los conceptos básicos de Aprendizaje automático o Aprendizaje profundo, incluidos los algoritmos clásicos como la regresión lineal o la regresión logística y temas más avanzados como las redes neuronales artificiales, pero que quieran aprender más sobre él y explorar todos los diferentes campos de Deep Aprendizaje
  • Cualquier persona que no esté tan cómoda con la codificación pero que esté interesada en el Aprendizaje Profundo y quiera aplicarlo fácilmente en los conjuntos de datos
  • Cualquier estudiante en la universidad que quiera comenzar una carrera en Data Science
  • Cualquier analista de datos que quiera subir de nivel en Deep Learning.
  • Cualquier persona que desee crear un valor agregado a su negocio mediante el uso de potentes herramientas de aprendizaje profundo.
  • Cualquier propietario de negocio que quiera entender cómo aprovechar la tecnología exponencial de Deep Learning en su negocio.
  • Cualquier empresario que quiera crear una interrupción en una industria utilizando los algoritmos de aprendizaje profundo más avanzados.

Descripción del curso por autor-

¡Este curso lo guiará a través de cómo utilizar el marco TensorFlow de Google para crear redes neuronales artificiales para el aprendizaje profundo y también los conceptos básicos del aprendizaje automático! El objetivo de este curso es ofrecerle una guía fácil de entender sobre las complejidades del marco TensorFlow de Google de una manera que sea fácil de entender y su aplicación.

Los científicos de datos disfrutan de uno de los trabajos mejor pagados, con un salario promedio de $ 120,000 según Glassdoor y Indeed. ¡Eso es sólo el promedio! Y no se trata solo de dinero, ¡también es un trabajo interesante!

Si tiene experiencia en programación o secuencias de comandos, este curso le enseñará las técnicas utilizadas por científicos de datos reales y profesionales del aprendizaje automático en la industria de la tecnología, y lo preparará para ingresar en esta carrera profesional. Este es un curso completo con una intención muy clara y directa.

Hay muchos marcos de aprendizaje profundo por ahí, ¿por qué usar TensorFlow?

TensorFlow es una biblioteca de software de código abierto para cálculos numéricos que utilizan gráficos de flujo de datos. Los nodos en el gráfico representan operaciones matemáticas, mientras que los bordes del gráfico representan las matrices de datos multidimensionales (tensores) comunicadas entre ellos. La arquitectura flexible le permite implementar la computación en una o más CPU o GPU en una computadora de escritorio, servidor o dispositivo móvil con una sola API. TensorFlow fue desarrollado originalmente por investigadores e ingenieros que trabajan en Google Brain Team dentro de la organización de investigación Machine Intelligence de Google con el propósito de llevar a cabo el aprendizaje automático y la investigación en redes neuronales profundas, pero el sistema es lo suficientemente general como para ser aplicable en una amplia variedad de otros dominios como bien.

Es utilizado por las principales empresas de todo el mundo, incluidos Airbnb, Ebay, Dropbox, Snapchat, Twitter, Uber, IBM, Intel y, por supuesto, Google.

¡Conviértete en un gurú de aprendizaje automático hoy! ¡Nos vemos dentro del curso!

Eche un vistazo a esto … Lo hará a través de los conceptos básicos, después de lo cual podrá aprenderlo con facilidad …

Conociendo TensorFlow

Antes de saltar a los algoritmos de aprendizaje automático, primero debe familiarizarse con el uso de las herramientas. Este artículo cubre algunas ventajas esenciales de TensorFlow, para convencerlo de que es la biblioteca de aprendizaje automático de su elección.

Como un experimento mental, imaginemos lo que sucede cuando escribimos el código de Python sin una biblioteca de computación útil. Será como usar un nuevo teléfono inteligente sin instalar aplicaciones adicionales. El teléfono aún funciona, pero sería más productivo si tuviera las aplicaciones correctas.

Considere lo siguiente … Usted es el propietario de un negocio que sigue el flujo de ventas. Quiere calcular sus ingresos por la venta de sus productos. Su inventario consta de 100 productos diferentes y usted representa cada precio en un vector llamado precios. Otro vector de cantidades llamadas de tamaño 100 representa el recuento de inventario de cada artículo. Puede escribir el siguiente fragmento de código de Python que se muestra en el listado 1 para calcular los ingresos de la venta de todos los productos. Tenga en cuenta que este código no importa ninguna biblioteca.

Listado 1. Cálculo del producto interno de dos vectores sin usar ninguna biblioteca

Eso es un montón de código solo para calcular el producto interno de dos vectores (también conocido como producto punto). Imagine cuánto código se requeriría para algo más complicado, como resolver ecuaciones lineales o calcular la distancia entre dos vectores.

Al instalar la biblioteca TensorFlow, también instala una biblioteca de Python conocida y robusta llamada NumPy, que facilita la manipulación matemática en Python. Usar Python sin sus bibliotecas (por ejemplo, NumPy y TensorFlow) es como usar una cámara sin enfoque automático: usted gana más flexibilidad, pero puede cometer fácilmente errores por descuido. Ya es bastante fácil cometer errores en el aprendizaje automático, así que mantengamos nuestra cámara en enfoque automático y utilicemos TensorFlow para ayudar a automatizar algunos desarrollos de software tediosos.

El Listado 2 muestra cómo escribir concisamente el mismo producto interno usando NumPy.

Listado 2. Cálculo del producto interno usando NumPy

Python es un lenguaje sucinto. Afortunadamente para ti, eso significa que no verás páginas y códigos de código críptico. Por otro lado, la brevedad del lenguaje Python implica que detrás de cada línea de código suceden muchas cosas, con las que debe familiarizarse cuidadosamente mientras trabaja.

Por cierto … La documentación detallada sobre varias funciones para las API de Python y C ++ para TensorFlow está disponible en https://www.tensorflow.org/api_docs/index.html .

Este artículo está orientado hacia el uso de TensorFlow para cálculos, porque el aprendizaje automático se basa en formulaciones matemáticas. Después de revisar los ejemplos y las listas de códigos, podrá usar TensorFlow para algunas tareas arbitrarias, como el cálculo de estadísticas en big data. El enfoque aquí será totalmente acerca de cómo usar TensorFlow, en lugar del aprendizaje automático en general.

Los algoritmos de aprendizaje automático requieren una gran cantidad de operaciones matemáticas. A menudo, un algoritmo se reduce a una composición de funciones simples iteradas hasta la convergencia. Claro, puede usar cualquier lenguaje de programación estándar para realizar estos cálculos, pero el secreto de un código manejable y de ejecución es el uso de una biblioteca bien escrita.

Eso suena como un comienzo suave, ¿verdad? Sin más preámbulos, ¡escribamos nuestro primer código TensorFlow!

Asegurando que TensorFlow funcione

F

En primer lugar, debemos asegurarnos de que todo funcione correctamente. Verifique el nivel de aceite en su automóvil, repare el fusible fundido en su sótano y asegúrese de que su saldo de crédito sea cero.

Solo bromeo, estoy hablando de TensorFlow.

Continúe y cree un nuevo archivo llamado http://test.py para nuestro primer código. Importe TensorFlow ejecutando el siguiente script:

importar tensorflow como tf

Esta importación única prepara TensorFlow para su oferta. Si el intérprete de Python no se queja, ¡entonces estamos listos para comenzar a usar TensorFlow!

¿Tiene dificultades técnicas? Una causa común de error en este paso es si instaló la versión de GPU y la biblioteca no puede buscar los controladores CUDA. Recuerde, si compiló la biblioteca con CUDA, necesita actualizar sus variables de entorno con la ruta a CUDA. Verifique las instrucciones de CUDA en TensorFlow. (Consulte https://www.tensorflow.org/versions/master/get_started/os_setup.html#optional-linux-enable-gpu-support para obtener más información).

Apegándose a las convenciones de TensorFlow

La biblioteca TensorFlow generalmente se importa con el nombre calificado tf. En general, calificar TensorFlow con tf es una buena idea para mantener la coherencia con otros desarrolladores y proyectos de código abierto TensorFlow. Puede elegir no calificarlo o cambiar el nombre de calificación, pero luego reutilizar con éxito los fragmentos de código de TensorFlow de otras personas en sus propios proyectos será un proceso involucrado.

Representando tensores

Ahora que sabemos cómo importar TensorFlow en un archivo fuente de Python, ¡comencemos a usarlo! Una forma conveniente de describir un objeto en el mundo real es enumerar sus propiedades o características. Por ejemplo, puede describir un automóvil por su color, modelo, tipo de motor y kilometraje. Una lista ordenada de algunas características se denomina vector de características, y eso es exactamente lo que representaremos en el código TensorFlow.

Los vectores de características son uno de los dispositivos más útiles en el aprendizaje automático debido a su simplicidad (son listas de números). Cada elemento de datos generalmente consta de un vector de características y un buen conjunto de datos tiene miles, si no miles, de estos vectores de características. Sin duda, a menudo tratará con más de un vector a la vez. Una matriz representa de manera concisa una lista de vectores, donde cada columna de una matriz es un vector de características.

La sintaxis para representar matrices en TensorFlow es un vector de vectores, cada uno de la misma longitud. La Figura 1 es un ejemplo de una matriz con dos filas y tres columnas, como [[1, 2, 3], [4, 5, 6]]. Note, este es un vector que contiene dos elementos, y cada elemento corresponde a una fila de la matriz.

Figura 1. La matriz en la mitad inferior del diagrama es una visualización de su notación de código compacto en la mitad superior del diagrama. Esta forma de notación es un paradigma común en la mayoría de las bibliotecas informáticas científicas.

Accedemos a un elemento en una matriz especificando sus índices de fila y columna. Por ejemplo, la primera fila y la primera columna indican el primer elemento superior izquierdo. A veces es conveniente usar más de dos índices, como cuando se hace referencia a un píxel en una imagen en color, no solo por su fila y columna, sino también por su canal rojo / verde / azul. Un tensor es una generalización de una matriz que especifica un elemento mediante un número arbitrario de índices.

Ejemplo de un tensor … Supongamos que una escuela primaria impone asientos asignados a sus estudiantes. Tú eres el director, y eres terrible con los nombres. Afortunadamente, cada aula tiene una cuadrícula de asientos, donde puede apodar fácilmente a un estudiante por su índice de filas y columnas.

Hay varias aulas, por lo que no puedes decir “¡Buenos días 4,10! Mantén el buen trabajo ”. También debe especificar el aula,“ Hola 4,10 del aula 2. ”A diferencia de una matriz, que necesita solo dos índices para especificar un elemento, los estudiantes de esta escuela necesitan tres números. ¡Todos son parte de un tensor de rango tres!

La sintaxis de los tensores es aún más vectores anidados. Por ejemplo, un tensor de 2 por 3 por 2 es [[[1,2], [3,4], [5,6]], [[7,8], [9,10], [ 11,12]]], que se puede considerar como dos matrices, cada una de tamaño 3 por 2. En consecuencia, decimos que este tensor tiene un rango de 3. En general, el rango de un tensor es el número de índices necesarios para especificar un elemento. Los algoritmos de aprendizaje automático en TensorFlow actúan sobre Tensors, y es importante entender cómo usarlos.

Figura 2. Este tensor se puede considerar como matrices múltiples apiladas una encima de la otra. Para especificar un elemento, debe indicar la fila y la columna, así como a qué matriz se está accediendo. Por lo tanto, el rango de este tensor es tres.

Es fácil perderse en las muchas formas de representar un tensor. Intuitivamente, cada una de las siguientes tres líneas de código en el Listado 3 está tratando de representar la misma matriz de 2 por 2. Esta matriz representa dos vectores de características de dos dimensiones cada uno. Podría, por ejemplo, representar las calificaciones de dos personas de dos películas. Cada persona, indexada por la fila de la matriz, asigna un número para describir su revisión de la película, indexada por la columna. Ejecute el código para ver cómo generar una matriz en TensorFlow.

Listado 3. Diferentes formas de representar los tensores.

La primera variable (m1) es una lista, la segunda variable (m2) es una ndarray de la biblioteca NumPy, y la última variable (m3) es el objeto TensorFlow’s Tensor. Todos los operadores en TensorFlow, como neg, están diseñados para operar en objetos tensoriales. Una función conveniente que podemos esparcir en cualquier lugar para asegurarnos de que estamos tratando con tensores, a diferencia de los otros tipos, es tf.convert_to_tensor (…). La mayoría de las funciones en la biblioteca TensorFlow ya realizan esta función (de manera redundante), incluso si se olvida de hacerlo. El uso de tf.convert_to_tensor (…) es opcional, pero lo muestro aquí porque ayuda a desmitificar el sistema de tipo implícito que se maneja en la biblioteca. El listado 3 mencionado anteriormente produce el siguiente resultado tres veces:

Echemos otro vistazo a la definición de tensores en el código. Después de importar la biblioteca TensorFlow, podemos usar el operador constante de la siguiente manera en el Listado 4.

Listado 4. Creando tensores

El listado de ejecución 4 produce el siguiente resultado:

Tensor (“Const: 0”,
forma = TensorShape ([Dimensión (1),
Dimensión (2)]),
dtype = float32)

Tensor (“Const_1: 0”,
forma = TensorShape ([Dimensión (2),
Dimensión (1)]),
dtype = int32)

Tensor (“Const_2: 0”,
forma = TensorShape ([Dimensión (2),
Dimensión (3),
Dimensión (2)]),
dtype = int32)

Como puede ver en la salida, cada tensor está representado por el objeto Tensor con un nombre adecuado. Cada objeto Tensor tiene una etiqueta única (nombre), una dimensión (forma) para definir su estructura y el tipo de datos (dtype) para especificar el tipo de valores que manipularemos. Debido a que no proporcionamos un nombre explícitamente, la biblioteca los generó automáticamente: “Const: 0”, “Const_1: 0” y “Const_2: 0”.

Tipos de tensor

Observe que cada uno de los elementos de matrix1 termina con un punto decimal. El punto decimal le dice a Python que el tipo de datos de los elementos no es un entero, sino un flotador. Podemos pasar valores de dtype explícitos. Al igual que las matrices NumPy, los tensores adoptan un tipo de datos que especifica el tipo de valores que manipularemos en ese tensor.

TensorFlow también viene con algunos constructores convenientes para algunos tensores simples. Por ejemplo, tf.zeros (forma) crea un tensor con todos los valores inicializados en cero de una forma específica. De manera similar, tf.ones (forma) crea un tensor de una forma específica con todos los valores inicializados en uno. El argumento de forma es un tensor unidimensional (1D) de tipo int32 (una lista de enteros) que describe las dimensiones del tensor.

Creación de operadores

norte

Como tenemos algunos tensores de arranque listos para usar, podemos aplicar operadores más interesantes, como la suma o la multiplicación. Considere cada fila de una matriz que representa la transacción de dinero a (valor positivo) y de (valor negativo) a otra persona. Negar la matriz es una forma de representar el historial de transacciones del flujo de dinero de la otra persona. Comencemos de manera simple y ejecutemos la operación de negación (abreviatura de operación) en nuestro tensor de matriz1 del listado 4. Negar una matriz convierte los números positivos en números negativos de la misma magnitud, y viceversa.

La negación es una de las operaciones más simples. Como se muestra en el listado 5, la negación toma solo un tensor como entrada y produce un tensor con cada elemento negado; ahora, intente ejecutar el código usted mismo. Si dominas cómo definir la negación, te proporcionará un escalón para generalizar esa habilidad a todas las demás operaciones de TensorFlow.

Aparte … Definir una operación, como la negación, es diferente de ejecutarla.

Listado 5 Usando el operador de negación

El Listado 5 genera el siguiente resultado:

Tensor (“Neg: 0”, forma = (1, 2), dtype = int32)

Operadores útiles de TensorFlow

La documentación oficial establece cuidadosamente todas las operaciones matemáticas disponibles: https://www.tensorflow.org/api_docs/Python/math_ops.html .

Algunos ejemplos específicos de operadores comúnmente usados ​​incluyen:

tf.add (x, y)
Suma dos tensores del mismo tipo, x + y

tf.sub (x, y)
Resta tensores del mismo tipo, x – y

tf.mul (x, y)
Multiplica dos tensores de forma elemental.

tf.pow (x, y)
Toma el poder de los elementos de x a y

tf.exp (x)
Equivalente a pow (e, x), donde e es el número de Euler (2.718…)

tf.sqrt (x)
Equivalente a pow (x, 0.5)

tf.div (x, y)
Toma la división de x y y de elementos

tf.truediv (x, y)
Igual que tf.div, excepto que convierte los argumentos como un flotador

tf.floordiv (x, y)
Igual que truediv, excepto que redondea la respuesta final en un entero

tf.mod (x, y)
Toma el resto del elemento de la división

Ejercicio … Use los operadores TensorFlow que hemos aprendido para producir la Distribución Gaussiana (también conocida como Distribución Normal). Vea la Figura 3 para una pista. Para referencia, puede encontrar la densidad de probabilidad de la distribución normal en línea: https://en.wikipedia.org/wiki/Normal_distribution .

La mayoría de las expresiones matemáticas como “*”, “-“, “+”, etc. son accesos directos para su equivalente de TensorFlow, en aras de la brevedad. La función gaussiana incluye muchas operaciones, y es más limpio usar algunas anotaciones cortas como las siguientes:

desde matemáticas import pi

media = 1.0
sigma = 0.0

(tf.exp (tf.neg (tf.pow (x – media, 2.0) /
(2.0 * tf.pow (sigma, 2.0)))) *
(1.0 / (sigma * tf.sqrt (2.0 * pi))))

Figura 3. El gráfico representa las operaciones necesarias para producir una distribución gaussiana. Los enlaces entre los nodos representan cómo los datos fluyen de una operación a la siguiente. Las operaciones en sí mismas son simples, pero la complejidad surge de cómo se entrelazan.

Como puede ver, los algoritmos de TensorFlow son fáciles de visualizar. Pueden ser descritos por diagramas de flujo. El término técnico (y más correcto) para el diagrama de flujo es un gráfico. Cada flecha en un diagrama de flujo se llama el borde del gráfico. Además, cada estado del diagrama de flujo se denomina nodo.

Ejecutando operadores con sesiones.

UNA

sesión es un entorno de un sistema de software que describe cómo deben ejecutarse las líneas de código. En TensorFlow, una sesión configura cómo los dispositivos de hardware (como la CPU y la GPU) se comunican entre sí. De esa manera, puede diseñar su algoritmo de aprendizaje automático sin preocuparse por la microgestión del hardware en el que se ejecuta. Por supuesto, más tarde puede configurar la sesión para cambiar su comportamiento sin cambiar una línea del código de aprendizaje automático.

Para ejecutar una operación y recuperar su valor calculado, TensorFlow requiere una sesión. Solo una sesión registrada puede llenar los valores de un objeto Tensor. Para hacerlo, debe crear una clase de sesión utilizando tf.Session () y decirle que ejecute un operador (listado 6). El resultado será un valor que puede usar más adelante para otros cálculos.

Listado 6. Usando una sesión

¡Felicidades! Acaba de escribir su primer código completo de TensorFlow. Aunque todo lo que hace es negar una matriz para producir [[-1, -2]], la sobrecarga y el marco del núcleo son exactamente iguales a todo lo demás en TensorFlow.

Configuraciones de sesión

También puede pasar opciones a tf.Session. Por ejemplo, TensorFlow determina automáticamente la mejor manera de asignar una GPU o un dispositivo de CPU a una operación, dependiendo de lo que esté disponible. Podemos pasar una opción adicional, log_device_placements = True, al crear una sesión, como se muestra en el listado 7.

Listado 7. Registrando una sesión

Esto genera información sobre qué dispositivos de CPU / GPU se utilizan en la sesión para cada operación. Por ejemplo, la ejecución del listado 6 da como resultado rastros de resultados como los siguientes para mostrar qué dispositivo se usó para ejecutar la operación de negación:

Neg: / job: localhost / replica: 0 / task: 0 / cpu: 0

Las sesiones son esenciales en el código TensorFlow. Necesitas llamar a una sesión para realmente “ejecutar” las matemáticas. La Figura 4 muestra cómo los diferentes componentes de TensorFlow interactúan con la línea de aprendizaje automático. Una sesión no solo ejecuta una operación gráfica, sino que también puede tomar marcadores de posición, variables y constantes como entrada. Hemos usado constantes hasta ahora, pero en secciones posteriores comenzaremos a usar variables y marcadores de posición. Aquí hay una visión general rápida de estos tres tipos de valores.

Marcador de posición: un valor que no está asignado, pero que la sesión inicializará donde sea que se ejecute.

Variable: un valor que puede cambiar, como un parámetro de un modelo de aprendizaje automático.

Constante: un valor que no cambia, como los hiper-parámetros o la configuración.

Figura 4. La sesión determina cómo se utilizará el hardware para procesar de manera más eficiente el gráfico. Cuando se inicia la sesión, asigna los dispositivos de CPU y GPU a cada uno de los nodos. Después del procesamiento, la sesión genera datos en un formato utilizable, como una matriz NumPy. Opcionalmente, una sesión puede incluir marcadores de posición, variables y constantes.

¿Hambriento de más?

Eso es todo por ahora, espero que se haya familiarizado con éxito con algunos de los mecanismos básicos de TensorFlow.