Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导致收缩型自动编码器成本的张量流梯度不';t收敛_Python_Tensorflow_Mnist_Autoencoder - Fatal编程技术网

Python 导致收缩型自动编码器成本的张量流梯度不';t收敛

Python 导致收缩型自动编码器成本的张量流梯度不';t收敛,python,tensorflow,mnist,autoencoder,Python,Tensorflow,Mnist,Autoencoder,为了构造一个压缩式自动编码器,我们使用一个具有成本函数的普通自动编码器 为了使用MNIST数据集实现这一点,我使用tensorflow定义了成本函数 def cost(X, X_prime): grad = tf.gradients(ys=X_prime, xs=X) cost = tf.reduce_mean(tf.square(X_prime - X)) + tf.reduce_mean(tf.square(grad)) return cost 并使用AdamOp

为了构造一个压缩式自动编码器,我们使用一个具有成本函数的普通自动编码器

为了使用MNIST数据集实现这一点,我使用tensorflow定义了成本函数

def cost(X, X_prime):
    grad = tf.gradients(ys=X_prime, xs=X)
    cost = tf.reduce_mean(tf.square(X_prime - X)) + tf.reduce_mean(tf.square(grad))
    return cost
并使用AdamOptimizer进行反向传播。然而,成本不会低于0.067,这是很奇怪的。我对成本函数的实现是否不正确

编辑: 在读取了on
tf.gradients
之后,上述实现将计算
相反所以我的问题是,如何在张量流中进行导数分量分析

解决编辑后的问题:TensorFlow没有计算雅可比数的函数。以下引用自a,概述了如何计算雅可比矩阵:

目前,您可以通过多次调用梯度来计算(比如)向量的雅可比矩阵,对于原始向量的每个标量分量(通过切片获得)调用一个梯度,然后重新组合结果


正如Akshay所建议的,计算雅可比矩阵的方法是对微分目标进行切片。下面是一个小例子

f的雅可比矩阵是

tensorflow中的代码

X = tf.Variable(tf.random_normal(shape=(10, 3)), dtype=tf.float32)
y = X[:, :-1]

jacobian = tf.stack([tf.gradients(y[:, i], X) for i in range(2)], axis=2)

sess = tf.Session()
j = sess.run(jacobian)
print(j[:, 0, :])

array([[1., 0., 0.],
       [0., 1., 0.]], dtype=float32)