TensorFlow是Google設計的開源Python庫,用於開發機器學習模型和深度學習神經網絡。
batch_jacobian()用於計算和堆疊每個示例jacobian。
用法:batch_jacobian( target, source, unconnected_gradients, parallel_iterations, experimental_use_pfor )
參數:
- target:它是最低等級為2的張量。
- source:它是最低等級為2的張量。
- unconnected_gradients(可選):它的值可以為零或無。默認值為“無”。
- parallel_iterations(可選):它用於控製並行迭代和內存使用。
- experimental_use_pfor(可選):它是一個布爾值,默認值為True。設置為true時,它將使用pfor來計算jacobian,否則將使用tf.while_loop。
返回值:它返回張量。
範例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)
輸出:
res: tf.Tensor( [[[48. 0.] [ 0. 12.]] [[ 3. 0.] [ 0. 27.]]], shape=(2, 2, 2), dtype=float32)
範例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)
輸出:
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)
相關用法
注:本文由純淨天空篩選整理自aman neekhara大神的英文原創作品 Python – tensorflow.GradientTape.batch_jacobian()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。