Python – tensorflow.GradientTape.batch_jacobian()

TensorFlow es una biblioteca Python de código abierto diseñada por Google para desarrollar modelos de aprendizaje automático y redes neuronales de aprendizaje profundo. 

batch_jacobian() se usa para calcular y apilar el jacobian por ejemplo.

Sintaxis: lote_jacobian(objetivo, fuente, gradientes_desconectados, iteraciones_paralelas, uso_experimental_pfor)

Parámetros:

  • target: Es un Tensor de rango mínimo 2.
  • fuente: Es un Tensor de rango mínimo 2.
  • unconnected_gradients (opcional): su valor puede ser cero o ninguno. El valor predeterminado es Ninguno.
  • paralelo_iteraciones (opcional): se utiliza para controlar las iteraciones paralelas y el uso de la memoria.
  • experimental_use_pfor(opcional): Es un booleano con valor predeterminado True. Utiliza pfor para calcular jacobian cuando se establece en verdadero; de lo contrario, se utiliza tf.while_loop.

Devoluciones: Devuelve un Tensor. 

Ejemplo 1:

Python3

# Importing the library
import tensorflow as tf
  
x = tf.constant([[4, 2],[1, 3]], dtype=tf.dtypes.float32)
  
# Using GradientTape
with tf.GradientTape() as gfg:
  gfg.watch(x)
  y = x * x * x
  
# Computing jacobian
res  = gfg.batch_jacobian(y, x) 
  
# Printing result
print("res: ",res)

Producción:

res:  tf.Tensor(
[[[48.  0.]
  [ 0. 12.]]

 [[ 3.  0.]
  [ 0. 27.]]], shape=(2, 2, 2), dtype=float32)

Ejemplo 2:

Python3

# Importing the library
import tensorflow as tf
  
x = tf.constant([[4, 2],[1, 3]], dtype=tf.dtypes.float32)
  
# Using GradientTape
with tf.GradientTape() as gfg:
  gfg.watch(x)
  
  # Using nested GradientTape for calculating higher order jacobian
  with tf.GradientTape() as gg:
    gg.watch(x)
    y = x * x * x
  # Computing first order jacobian
  first_order = gg.batch_jacobian(y, x)
  
# Computing Second order jacobian
second_order  = gfg.batch_jacobian(first_order, x) 
  
# Printing result
print("first_order: ",first_order)
print("second_order: ",second_order)

Producción:

first_order:  tf.Tensor(
[[[48.  0.]
  [ 0. 12.]]

 [[ 3.  0.]
  [ 0. 27.]]], shape=(2, 2, 2), dtype=float32)
second_order:  tf.Tensor(
[[[[24.  0.]
   [ 0.  0.]]

  [[ 0.  0.]
   [ 0. 12.]]]


 [[[ 6.  0.]
   [ 0.  0.]]

  [[ 0.  0.]
   [ 0. 18.]]]], shape=(2, 2, 2, 2), dtype=float32)


Publicación traducida automáticamente

Artículo escrito por aman neekhara 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 *