2017-11-30 7 views
0

を収束していない、私はtensorflowを使用して使用してコスト関数を定義しましたTensorflow勾配は1つがMNISTデータセットでこれを実現するために、コスト関数 <a href="https://i.stack.imgur.com/ALWYG.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ALWYG.gif" alt="enter image description here"></a></p> <p>で通常のオートエンコーダを使用して、収縮オートエンコーダを構築するため

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を下回らず、これは特有のものです。私のコスト関数の実装は間違っていますか?

編集: tf.gradientsdocumentationを読んだ後、上記の実装ではなく enter image description hereを計算しているだろう。ですから、私の質問は、テンソルフローでどのように微分コンポーネントを賢明にするのですか?

答えて

1

編集後の質問に対処する:TensorFlowには、ヤコビアンを計算する関数はありません。 Github discussionから取られた以下の引用は、あなたがヤコビアンを自分で計算する方法をスケッチ:

現在、あなたは(複数回勾配を呼び出すことにより、すべてのスカラーコンポーネントのための1つを、ベクター、たとえば、のヤコビアンを計算することができますスライスして得られた)を元に戻し、その結果を再構成する。

関連する問題

 関連する問題