Conceptos básicos de TensorFlow: tensor, forma, tipo, gráfico, sesiones y operadores

¿Qué es un tensor?

El nombre de Tensorflow se deriva directamente de su marco principal: Tensor. En Tensorflow, todos los cálculos involucran tensores. Un tensor es un vector o matriz de n-dimensiones que representa todos los tipos de datos. Todos los valores de un tensor contienen un tipo de datos idéntico con una forma conocida (o parcialmente conocida). La forma de los datos es la dimensionalidad de la matriz o matriz.

Un tensor puede originarse a partir de los datos de entrada o del resultado de un cálculo. En TensorFlow, todas las operaciones se llevan a cabo dentro de un gráfico. El gráfico es un conjunto de cálculo que tiene lugar sucesivamente. Cada operación se llama un nodo op y están conectados entre sí.

El gráfico describe las operaciones y las conexiones entre los nodos. Sin embargo, no muestra los valores. El borde de los nodos es el tensor, es decir, una forma de llenar la operación con datos.

En Machine Learning, los modelos se alimentan con una lista de objetos llamados vectores de entidades. Un vector de entidad puede ser de cualquier tipo de datos. El vector de entidad suele ser la entrada principal para rellenar un tensor. Estos valores fluirán en un nodo op a través del tensor y el resultado de esta operación/cálculo creará un nuevo tensor que a su vez se utilizará en una nueva operación. Todas estas operaciones se pueden ver en el gráfico.

En este tutorial, usted aprenderá –

Representación de un tensor

En TensorFlow, un tensor es una colección de vectores de entidades (es decir, matriz) de n-dimensiones. Por ejemplo, si tenemos una matriz 2×3 con valores de 1 a 6, escribimos:

TensorFlow representa esta matriz como:

Si creamos una matriz tridimensional con valores de 1 a 8, tenemos:

TensorFlow representa esta matriz como:

Nota: Un tensor se puede representar con un escalar o puede tener una forma de más de tres dimensiones. Simplemente es más complicado visualizar un nivel de dimensión superior.

Tipos de tensores

En TensorFlow, todos los cálculos pasan a través de uno o más tensores. Un tensor es un objeto con tres propiedades:

  • Una etiqueta única (nombre)
  • Una cota (forma)
  • Un tipo de datos (dtype)

Cada operación que realizará con TensorFlow implica la manipulación de un tensor. Hay cuatro tensores principales que puedes crear:

  • TF.Variable
  • tf.constante
  • tf.placeholder
  • TF.Sparsetensor

En este tutorial, aprenderá a crear una tf.constant y una tf.variable.

Antes de pasar por el tutorial, asegúrese de activar el entorno conda con TensorFlow. Llamamos a este entorno hello-tf.

Para usuarios de macOS:

Para usuarios de Windows:

Después de haber hecho eso, está listo para importar tensorflow

Crear un tensor de dimensión n

Comienza con la creación de un tensor con una dimensión, es decir, un escalar.

Para crear un tensor, puede usar tf.constant ()

Para crear un tensor de dimensión 0, ejecute el siguiente código

Salida

Salida

Cada tensor se muestra con el nombre del tensor. Cada objeto tensor se define con una etiqueta única (nombre), una dimensión (forma) y un tipo de datos (dtype).

Puede definir un tensor con valores decimales o con una cadena cambiando el tipo de datos.

Salida

Se puede crear un tensor de la dimensión 1 de la siguiente manera:

Salida

Puede observar que la forma sólo está compuesta por 1 columna.

Para crear una matriz de 2 dimensiones, debe cerrar los corchetes después de cada fila. Echa un vistazo a los ejemplos siguientes

Salida

La matriz tiene 2 filas y 2 columnas llenas con valores 1, 2, 3, 4.

Una matriz con 3 dimensiones se construye añadiendo otro nivel con los soportes.

Salida

La matriz se parece a la imagen dos.

Forma del tensor

Cuando imprime el tensor, TensorFlow adivina la forma. Sin embargo, puede obtener la forma del tensor con la propiedad shape.

A continuación, se construye una matriz llena con un número del 10 al 15 y se comprueba la forma de m_shape

Salida

La matriz tiene 3 filas y 2 columnas.

TensorFlow tiene comandos útiles para crear un vector o una matriz llena con 0 o 1. Por ejemplo, si desea crear un tensor 1-D con una forma específica de 10, rellenado con 0, puede ejecutar el siguiente código:

Salida

La propiedad también funciona para matriz. Aquí, crea una matriz 10×10 llena de 1

Salida

Puede usar la forma de una matriz dada para hacer un vector de unos. La matriz m_shape es una dimensión 3×2. Puede crear un tensor con 3 filas rellenadas por uno con el siguiente código:

Salida

Si pasa el valor 1 en el corchete, puede construir un vector de unos igual al número de columnas en la matriz m_shape.

Salida

Finalmente, puede crear una matriz 3×2 con solo una

Salida

Tipo de datos

La segunda propiedad de un tensor es el tipo de datos. Un tensor solo puede tener un tipo de datos a la vez. Un tensor solo puede tener un tipo de datos. Puede devolver el tipo con la propiedad dtype.

Salida

En algunas ocasiones, desea cambiar el tipo de datos. En TensorFlow, es posible con el método tf.cast.

Ejemplo

A continuación, un tensor flotante se convierte en entero utilizando el método de conversión.

Salida

TensorFlow elige automáticamente el tipo de datos cuando el argumento no se especifica durante la creación del tensor. TensorFlow adivinará cuáles son los tipos de datos más probables. Por ejemplo, si pasa un texto, adivinará que es una cadena y la convertirá en cadena.

Creando operador

Algunos operadores TensorFlow útiles

Sabes cómo crear un tensor con TensorFlow. Es hora de aprender a realizar operaciones matemáticas.

TensorFlow contiene todas las operaciones básicas. Puedes comenzar con uno simple. Va a utilizar el método TensorFlow para calcular el cuadrado de un número. Esta operación es sencilla porque solo se requiere un argumento para construir el tensor.

El cuadrado de un número se construye con tf.sqrt (x) con x como un número flotante.

Salida

Nota: La salida devolvió un objeto tensor y no el resultado del cuadrado de 2. En el ejemplo, se imprime la definición del tensor y no la evaluación real de la operación. En la siguiente sección, aprenderá cómo funciona TensorFlow para ejecutar las operaciones.

A continuación se presenta una lista de operaciones de uso común. La idea es la misma. Cada operación requiere uno o más argumentos.

  • tf.add (a, b)
  • tf.substracto (a, b)
  • tf.multiplicar (a, b)
  • tf.div (a, b)
  • tf.pow (a, b)
  • tf.exp (a)
  • tf.sqrt (a)

Ejemplo

Salida

Explicación de código

Cree dos tensores:

  • un tensor con 1 y 2
  • un tensor con 3 y 4

Suma ambos tensores.

Aviso: que ambos tensores deben tener la misma forma. Puede ejecutar una multiplicación sobre los dos tensores.

Salida

Variables

Hasta ahora, solo has creado tensores constantes. No es de gran utilidad. Los datos siempre llegan con diferentes valores, para capturar esto, puede usar la clase Variable. Representará un nodo donde los valores siempre cambian.

Para crear una variable, puede utilizar el método tf.get_variable ()

Por ejemplo, el siguiente código crea una variable bidimensional con dos valores aleatorios. De forma predeterminada, TensorFlow devuelve un valor aleatorio. Asignar nombre a la variable var

Salida

En el segundo ejemplo, se crea una variable con una fila y dos columnas. Debe usar [1,2] para crear la dimensión de la variable

Los valores iniciales de este tensor son cero. Por ejemplo, cuando entrena un modelo, necesita tener valores iniciales para calcular el peso de las entidades. A continuación, establece estos valores iniciales en cero.

Salida

Puede pasar los valores de un tensor constante en una variable. Se crea un tensor constante con el método tf.constant (). Utilice este tensor para inicializar la variable.

Los primeros valores de la variable son 10, 20, 30 y 40. El nuevo tensor tendrá una forma de 2×2.

Salida

Marcador de posición

Un marcador de posición tiene el propósito de alimentar el tensor. Marcador de posición se utiliza para inicializar los datos para fluir dentro de los tensores. Para proporcionar un marcador de posición, debe usar el método feed_dict. El marcador de posición se alimentará sólo dentro de una sesión.

En el siguiente ejemplo, verá cómo crear un marcador de posición con el método tf.placeholder. En la siguiente sesión, aprenderá a alimentar un marcador de posición con valor real.

La sintaxis es:

Salida

Sesión

TensorFlow funciona alrededor de 3 componentes principales:

• Gráfico
• Tensor
• Sesión

Componentes Descritción
Gráfico El gráfico es fundamental en TensorFlow. Todas las operaciones matemáticas (operaciones) se realizan dentro de un gráfico. Se puede imaginar un gráfico como un proyecto donde se realizan todas las operaciones. Los nodos representan estas operaciones, pueden absorber o crear nuevos tensores.
Tensor Un tensor representa los datos que progresan entre las operaciones. Ya viste cómo inicializar un tensor. La diferencia entre una constante y una variable es que los valores iniciales de una variable cambiarán con el tiempo.
Sesión Una sesión ejecutará la operación desde el gráfico. Para alimentar el gráfico con los valores de un tensor, debe abrir una sesión. Dentro de una sesión, debe ejecutar un operador para crear una salida.

Los gráficos y las sesiones son independientes. Puede ejecutar una sesión y obtener los valores que se utilizarán más adelante para futuros cálculos.

En el siguiente ejemplo, usted:

  • Crear dos tensores
  • Crear una operación
  • Abrir una sesión
  • Imprimir el resultado

Paso 1) Crear dos tensores x e y

Paso 2) Crear el operador multiplicando x e y

Paso 3) Abrir una sesión. Todos los cálculos ocurrirán dentro de la sesión. Cuando haya terminado, debe cerrar la sesión.

Salida

Explicación del código

  • TF.session (): Abra una sesión. Todas las operaciones fluirán dentro de las sesiones
  • ejecutar (multiplicar): ejecutar la operación creada en el paso 2.
  • print (result_1): Finalmente, puede imprimir el resultado
  • close (): Cerrar la sesión

El resultado muestra 8, que es la multiplicación de x e y.

Otra forma de crear una sesión es dentro de un bloque. La ventaja es que cierra automáticamente la sesión.

Salida

En un contexto de la sesión, puede utilizar el método eval () para ejecutar la operación. Es equivalente a run (). Hace que el código sea más legible.

Puede crear una sesión y ver los valores dentro de los tensores que ha creado hasta ahora.

Salida

Las variables están vacías de forma predeterminada, incluso después de crear un tensor. Debe inicializar la variable si desea usar la variable. El objeto tf.global_variables_initializer () necesita ser llamado para inicializar los valores de una variable. Este objeto inicializará explícitamente todas las variables. Esto es útil antes de entrenar a un modelo.

Puede comprobar los valores de las variables que creó antes. Tenga en cuenta que debe usar run para evaluar el tensor

Salida

Puede usar el marcador de posición que creó antes y alimentarlo con valor real. Debe pasar los datos al método feed_dict.

Por ejemplo, tomará la potencia de 2 del marcador de posición data_placeholder_a.

Explicación de código

  • import numpy como np: Importar biblioteca numpy para crear los datos
  • tf.pow (data_placeholder_a, 2): Crear las operaciones
  • np.random.rand (1, 10): Crear una matriz aleatoria de datos
  • feed_dict= {data_placeholder_a: data}: Alimentar el marcador de posición con datos

Salida

Gráfico

TensorFlow depende de un enfoque genial para renderizar la operación. Todos los cálculos se representan con un esquema de flujo de datos. El gráfico de flujo de datos se ha desarrollado para ver las dependencias de datos entre la operación individual. Fórmula matemática o algoritmo se hacen de una serie de operaciones sucesivas. Un gráfico es una forma conveniente de visualizar cómo se coordinan los cálculos.

El gráfico muestra un nodo y un borde. El nodo es la representación de una operación, es decir, la unidad de cálculo. El borde es el tensor, puede producir un nuevo tensor o consumir los datos de entrada. Depende de las dependencias entre la operación individual.

La estructura del gráfico conecta entre sí las operaciones (es decir, los nodos) y cómo se alimentan esas operaciones. Tenga en cuenta que el gráfico no muestra la salida de las operaciones, solo ayuda a visualizar la conexión entre operaciones individuales.

Veamos un ejemplo.

Imagine que desea evaluar la siguiente función:

TensorFlow creará un gráfico para ejecutar la función. El gráfico se ve así:

Puede ver fácilmente el camino que los tensores tomarán para llegar al destino final.

Por ejemplo, puede ver que la operación agregar no se puede hacer antes y. El gráfico explica que:

1. calcular y:
2. añadir 1) juntos
3. añadir a 2)
4. añadir 3) a

Explicación de código

  • x: Inicializar una variable llamada x con un valor constante de 5
  • z: Inicializar una variable llamada z con un valor constante de 6
  • c: Inicializar un tensor constante llamado c con un valor constante de 5
  • cuadrado: Inicializar un tensor constante llamado cuadrado con un valor constante de 2
  • f: Construir el operador

En este ejemplo, elegimos mantener los valores de las variables fijos. También creamos un tensor constante llamado c que es el parámetro constante en la función f. Toma un valor fijo de 5. En el gráfico, puede ver este parámetro en el tensor llamado constante.

También construimos un tensor constante para la potencia en el operador tf.pow (). No es necesario. Lo hicimos para que pueda ver el nombre del tensor en el gráfico. Es el círculo llamado cuadrado.

Desde el gráfico, puede entender lo que sucederá de los tensores y cómo puede devolver una salida de 66.

El siguiente código evalúa la función en una sesión.

Salida

Resumen

TensorFlow funciona alrededor de:

• Gráfico: Entorno computacional que contiene las operaciones y los tensores
• Tensores: representa los datos (o valor) que fluirán en el gráfico. Es el borde en el gráfico
• Sesiones: Permitir la ejecución de las operaciones

Crear un tensor constante

constante objeto
D0 tf.constant (1, tf.int16)
D1 tf.constant([1,3,5], tf.int16)
D2 tf.constant([ [1, 2], [3, 4] ],tf.int16)
D3 tf.constant([ [[1, 2],[3, 4], [5, 6]] ], tf.int16)

Crear un operador

Crear un operador Objeto
a+b tf.add(a, b)
a*b tf.multiplicar (a, b))

Crear un tensor variable

Crear una variable objeto
valor aleatorizado tf.get_variable(“var”, [1, 2])
primer valor inicializado tf.get_variable(“var_init_2”, dtype=tf.int32, initializer=[ [1, 2], [3, 4] ])

Abrir una sesión

Sesión objeto
Crear una sesión tf.Session()
Ejecutar una sesión tf.Session.run()
Evaluar un tensor variable_name.eval()
Cerrar una sesión sess.close()
Sesión por bloque with tf.Session() as sess:
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *