Я проектирую свои условия тензорного потока, чтобы получить желаемую функцию потерь / вознаграждений.Выходные данные logits
являются ненулевыми значениями между [-1,1], и есть еще один тензор con
, который содержит значения в [1,0, -1, nan] (которые могут быть изменены в этой схеме) иимеет ту же форму, что и logits
.Я хочу построить тензор reward
на основе следующих поэлементных правил:
- , если
con
> 0, то, если logits
> 0, вознаграждение = logits
, иначе 0 - если
con
<0, то если <code>logits <0, вознаграждение = <code>logits, иначе 0 - , если
con
= 0, то вознаграждение = логитирует всевремя - , если
con
равно nan
, тогда вознаграждение = 0
Моя текущая попытка:
reward = tf.greater_equal(tf.multiply(logits, con), logits, tf.zeros_like(logits))
Мои вопросы:
- Достигнет ли указанное выше мое желаемое вознаграждение?Есть ли какие-то угловые случаи, которые приведут к сбоям или ошибкам?Будет ли использование NaN разрушать систему?
- Сохранят ли градиенты (по крайней мере, для ненулевых наград), если я получу вознаграждение за логиты?
- Есть ли лучший дизайн для этой проблемы?
Любая помощь приветствуется.