Если вы конвертируете из softmax в сигмовидную функцию, это обычно означает, что вы конвертируете из задачи множественной классификации в задачу двоичной классификации.
Пример мульти-классификации: ешьте лапшу, ешьте рыбу, ешьте мясо, не ешьте
Пример бинарной классификации: есть, не есть
В случае мультиклассификации ваш код использует функцию tf.multinomial для выбора 1 действия с учетом вероятностей журнала вашими логитами. Когда вы преобразовали его в двоичный регистр, это значительно упростило проблему. Но это также полностью меняет структуру вашей проблемы.
Вы можете просто использовать для вывода сигмоида:
if outputs < 0.5:
action = 0
else:
action = 1
где действие no, если выходное значение не равно 0.5, и yes, если выходное значение больше 0,5.
То, что ранее делал ваш код, заключалось в том, что для двоичной классификации он будет выводить вектор из 2 элементов вместо одного скаляра. И вектор будет иметь вероятность действия «да» и «нет», например:
выход = [P (нет), P (да)]
и ваш tf.one_hot преобразует действие, выбранное с помощью tf.multinomial, в один горячий вектор. Поэтому, если выбрано yes, это будет выглядеть так:
y = [0, 1]
Когда вы меняете его на сигмовидную, вы получаете скаляр 0 или 1, говоря, что действие - да или нет.