Чим softmax_cross_entropy_with_logits відрізняється від softmax_cross_entropy_with_logits_v2?


41

Зокрема, я думаю, мені цікаво таке твердження:

Майбутні основні версії TensorFlow дозволять градієнтам потрапляти в мітки, що вводяться на задній панелі, за замовчуванням.

Що відображається при використанні tf.nn.softmax_cross_entropy_with_logits. У цьому ж повідомленні він закликає мене подивитися tf.nn.softmax_cross_entropy_with_logits_v2. Я переглянув документацію, але в ній вказано лише, що для tf.nn.softmax_cross_entropy_with_logits_v2:

Зворотне розповсюдження відбуватиметься як у логітах, так і в мітках. Щоб заборонити повторне розповсюдження на мітках, пропустіть тензори міток через stop_gradients перед подачею на цю функцію.

на відміну від tf.nn.softmax_cross_entropy_with_logits:

Зворотне розповсюдження відбуватиметься лише в логітах.

Будучи дуже новими в цій темі (я намагаюся пробитися через основні навчальні посібники), ці твердження не дуже зрозумілі. Я неглибоко розумію зворозне розповсюдження, але що насправді означає попереднє твердження? Як пов’язані розмноження та мітки? І як це змінюється, як я працюю, на tf.nn.softmax_cross_entropy_with_logits_v2відміну від оригіналу?

Відповіді:


56

У вас є всі підстави плутатись, оскільки при контрольованому навчанні не потрібно повторно поширюватися на мітки. Вони вважаються істинною основою істини, і лише ваги потрібно відрегулювати, щоб відповідати їм.

Але в деяких випадках самі етикетки можуть надходити з різного джерела, іншої мережі. Одним із прикладів може бути змагальне навчання . У цьому випадку обидві мережі можуть отримати користь від сигналу про помилку. Ось чому tf.nn.softmax_cross_entropy_with_logits_v2його запровадили . Зауважте, що коли мітки є заповнювачами (що також є типовим), немає різниці, градієнт через потоки чи ні, тому що немає змінних, до яких можна застосувати градієнт.


5
А я бачу, мені ще належить вийти за межі контрольованого навчання, багато чому навчитися. Просто для того, щоб я вас зрозумів правильно, в основному до тих пір, поки я не зазначу, що мої етикетки підлягають оптимізації (наприклад, зберігати їх як tf.Variable) вони не будуть торкатися і softmax_..._with_logits_v2працюватимуть як softmax_with_logits? (Або я можу використовувати tf.stop_gradient для змінної міток.)
Крістіан Еріксон

3
Так, правильно.
Максим

2
Дуже чітко та виховно, дякую вам дуже!
Хайтао Дю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.