Función Tensorflow.js tf.einsum()

Tensorflow.js es una biblioteca de código abierto que está desarrollando Google para ejecutar modelos de aprendizaje automático, así como redes neuronales de aprendizaje profundo en el entorno del navegador o del Node.

Los . La función einsum() se usa para la contracción del tensor sobre índices específicos y el producto externo.

Sintaxis: 

tf.einsum (equation, tensors)

Parámetros:

  • ecuación: es un primer elemento tensor de entrada que es una string que describe la contracción, en el mismo formato que numpy.einsum.
  • . . . tensores: Es un segundo elemento tensor de entrada en el que la(s) entrada(s) se usa(n) para contraer (cada uno un tensor), cuyas formas deben ser consistentes con la ecuación.

Limitaciones:

  • No admite 2 tensores de entrada.
  • No admite ejes duplicados para ningún tensor de entrada dado. Por ejemplo, no se admite la ecuación ‘ii→’.
  • La notación … no es compatible.

Valor devuelto: Devuelve tf.tensor.

Ejemplo 1: En este ejemplo, estamos hablando de casos especiales como la multiplicación de arrays.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining the first tensor input elements
const a = tf.tensor2d([[1, 1, 3], [4, 3, 6]]);
  
// Defining the second input tensor elements
const b = tf.tensor2d([[1, 1], [2, 3], [4, 5]]);
  
// Calling the einsum() function and printing outputs 
tf.einsum('ij,jk->ik', a, b).print();

Producción:

Tensor
    [[14, 19],
     [30, 43]]

Ejemplo 2: En este ejemplo, estamos hablando de casos especiales como el producto de punto.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining the first input elements
const x = tf.tensor1d([1, 1, 3]);
  
// Defining the second input elements
const y = tf.tensor1d([1, 1, 2]);
  
// Calling the einsum() function
// and printing outputs 
tf.einsum('i,i->', x, y).print();

Producción:

Tensor
    8

Ejemplo 3: en este ejemplo, estamos hablando de casos especiales como el producto de puntos por lotes.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining the first tensor input elements
const x = tf.tensor2d([[1, 3, 3], [4, 5, 4]]);
  
// Defining the second tensor input elements 
const y = tf.tensor2d([[2, 1, 2], [2, 4, 5]]);
  
// Calling the einsum() function and printing output
tf.einsum('bi,bi->b', x, y).print();

Producción:

Tensor
    [11, 48]

Ejemplo 4: En este ejemplo, estamos hablando de casos especiales como el producto exterior.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining the first tensor input elements
const x = tf.tensor1d([2, 3, 5]);
  
// Defining the second tensor input elements 
const y = tf.tensor1d([2, 5, 6]);
  
// Calling the einsum() function and printing outputs 
tf.einsum('i,j->ij', x, y).print();

Producción:

Tensor
    [[4 , 10, 12],
     [6 , 15, 18],
     [10, 25, 30]]

Ejemplo 5: En este ejemplo, estamos hablando de casos especiales como Matrix transpose.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining tensor input elements
const x = tf.tensor2d([[1, 4], [3, 4]]);
  
// Calling the einsum() function and 
// printing output
tf.einsum('ij->ji', x).print();

Producción:

Tensor
    [[1, 3],
     [4, 4]]

Ejemplo 6: En este ejemplo, estamos hablando de casos especiales como la transposición de array por lotes.

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining tensor input elements
const x = tf.tensor3d([[[1, 2], [3, 5]], [[-1, -2], [-3, -4]]]);
  
// Calling the einsum() function and printing output 
tf.einsum('bij->bji', x).print();

Producción:

Tensor
    [[[1 , 3 ],
      [2 , 5 ]],

     [[-1, -3],
      [-2, -4]]]

Referencia: https://js.tensorflow.org/api/latest/#einsum

Publicación traducida automáticamente

Artículo escrito por sweetyty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *