Является ли тензор нулевых потерь также обратным распространением? - PullRequest
0 голосов
/ 23 января 2019

Я читал статью. Обучение детекторов объектов на основе регионов с использованием интерактивного интеллектуального анализа , и одним из способов реализации интерактивного интеллектуального анализа на примере будет стирание (умножение на ноль) некоторых элементов тензора потерь. Тем не менее, в этой статье авторы утверждают, что это было бы неэффективно, поскольку современные структуры глубокого обучения распределяют память и выполняют backprop даже для тензоров с 0 потерями. К сожалению, авторы не упоминают, какие фреймворки делают это, и я хотел бы знать о Tensorflow и PyTorch в этом отношении.

Кроме того, если бы вместо умножения потери на ноль я собрал только интересующий меня срез, можно ли избежать обратного распространения через неинтересные РИ? Например:

active_rois = tf.where(tf.not_equal(rois, 0)) # get the rois I care about
truth = tf.gather(truth, active_rois) # filter gt tensor
pred = tf.gather(pred, active_rois) # filter pred tensor
loss = compute_loss(truth, pred)

Отрывок из статьи, о которой я упоминал ранее:

Слой потерь может вычислять потери для всех РИ, сортируя их на основе этого потеря, чтобы выбрать жесткие RoIs, и, наконец, установить потерю всех несложных Роис до 0. Хотя эта реализация проста, неэффективно, так как сеть RoI по-прежнему выделяет память и выполняет проход назад для всех РИ, хотя большинство РИ имеют 0 потерь и следовательно, нет градиентных обновлений (ограничение текущего глубокого обучения Инструментарии).

...