Tensorflow: يجب ألا يسمح tf.argmax باستخدام Backprop من خلاله

تم إنشاؤها على ٣٠ أبريل ٢٠١٦  ·  1تعليق  ·  مصدر: tensorflow/tensorflow

مرحبًا Tensorflow ،

في الآونة الأخيرة ، كنت أستخدم وظيفة argmax لكنني دائمًا ما أضع tf.stop_gradient قبل استخدامها. ومع ذلك ، عندما أقوم بإزالة stop_gradient ، لا يزال tensorflow يعمل بشكل جيد.

ربما أسيء فهم شيء ما ، لكن argmax ليس وظيفة قابلة للتفاضل. كيف لا يزال backprop يعمل عند إزالته؟ ألا يجب إلقاء خطأ عند اجتياز argmax بدون أي stop_gradient؟

إذا كان من الممكن التفريق بين 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 التقييمات