Tensorflow: tf.argmaxはそれを介してバックプロパゲーションを許可するべきではありません

作成日 2016年04月30日  ·  1コメント  ·  ソース: tensorflow/tensorflow

ねえTensorflow、

最近、私はargmax関数を使用していますが、使用する前に常にtf.stop_gradientを配置しています。 ただし、stop_gradientを削除しても、テンソルフローは正常に機能します。

何かを誤解しているかもしれませんが、argmaxは微分可能関数ではありません。 あなたがそれを取り除くとき、backpropはまだどのように機能していますか? stop_gradientなしでargmaxを渡したときに、エラーがスローされるべきではありませんか?

argmaxを区別することが可能であれば、これがどのように行われるかを示すリソースをいただければ幸いです。 ありがとうTF!

最も参考になるコメント

グラデーションはほとんどすべての場所で定義されているため、実際には定義できます。 ただし、あまり有用ではないため、TensorFlowでこの操作に登録されていません。

x = tf.Variable([1., 1])
z = tf.argmax(x, 0)
sess = create_session()
xgrad = tf.gradients(z, x)
sess.run(tf.initialize_all_variables())
sess.run(xgrad)

LookupError: No gradient defined for operation 'ArgMax' (op type: ArgMax)

>すべてのコメント

グラデーションはほとんどすべての場所で定義されているため、実際には定義できます。 ただし、あまり有用ではないため、TensorFlowでこの操作に登録されていません。

x = tf.Variable([1., 1])
z = tf.argmax(x, 0)
sess = create_session()
xgrad = tf.gradients(z, x)
sess.run(tf.initialize_all_variables())
sess.run(xgrad)

LookupError: No gradient defined for operation 'ArgMax' (op type: ArgMax)
このページは役に立ちましたか?
0 / 5 - 0 評価