我使用tensorflow 2.1.0和Keras。我使用随机梯度下降(SGD(来训练我的神经网络(NN(模型。我想在训练过程中的每个样本上,得到关于NN的可训练参数(权重和偏差(的<strong]输出>的Jacobian矩阵。我该怎么做?
例如,我有2个输出,4个输入,2个隐藏层,1个输出层。两个隐藏层都有3个神经元,输出层有2个神经元。雅可比矩阵a2-by-35矩阵(2个输出和35个可训练参数(。
谢谢。
可以为标量计算雅可比矩阵,如下所示:
x = tf.linspace(-10.0, 10.0, 200+1)
delta = tf.Variable(0.0)
with tf.GradientTape() as tape:
y = tf.nn.sigmoid(x+delta)
dy_dx = tape.jacobian(y, delta)
有关更多信息,请参阅本Tensorflow文档。