在 MLP 模型中,第 l 层的输入可以通过以下公式计算:z = Wa + b W 是层l-1
和层之间的权重矩阵l
,a 是层神经元的输出信号l-1
,b 是层的偏置l
。例如:
我想使用 TensorFlow Eager Execution API 来获取衍生物:
我定义了一个函数来计算 z 的值:
def f002(W, a, b):
return tf.matmul(W, a) + b
我的主要程序:
def test001(args={}):
tf.enable_eager_execution()
tfe = tf.contrib.eager
a = tf.reshape(tf.constant([1.0, 2.0, 3.0]), [3, 1])
W = tf.constant([[4.0, 5.0, 6.0],[7.0, 8.0, 9.0]])
b = tf.reshape(tf.constant([1001.0, 1002.0]), [2, 1])
z = f002(W, a, b)
print(z)
grad_f1 = tfe.gradients_function(f002)
dv = grad_f1(W, a, b)
print(dv)
我可以在正向模式下得到正确的 z 值。但是当打印导数结果时,它会显示如下内容:
[<tf.Tensor: id=17, shape=(2, 3), dtype=float32, numpy=
array([[1., 2., 3.],
[1., 2., 3.]], dtype=float32)>, <tf.Tensor: id=18, shape=(3, 1),
dtype=float32, numpy=
array([[11.],
[13.],
[15.]], dtype=float32)>, <tf.Tensor: id=16, shape=(2, 1),
dtype=float32, numpy=
array([[1.],
[1.]], dtype=float32)>]
这不是我想要的。如何逐个向量得到雅可比矩阵导数结果?