бинарная пороговая функция активации в тензорном потоке

У меня есть фрагмент кода, который использует сигмовидную функцию активации для классификации, которая выводит [0,1]. Но мне нужна функция активации, которая выводит двоичные значения либо 0, либо 1.

        x = tf.placeholder("float", [None, COLUMN])
        Wh = tf.Variable(tf.random_normal([COLUMN, UNITS_OF_HIDDEN_LAYER], mean=0.0, stddev=0.05))
        h = tf.nn.sigmoid(tf.matmul(x, Wh))

        Wo = tf.Variable(tf.random_normal([UNITS_OF_HIDDEN_LAYER, COLUMN], mean=0.0, stddev=0.05))
        y = tf.nn.sigmoid(tf.matmul(h, Wo))

        # Objective functions
        y_ = tf.placeholder("float", [None, COLUMN])
        correct_prediction = tf.equal(tf.argmax(y, 1),tf.argmax(y, 1))
        cost = tf.reduce_sum(tf.cast(correct_prediction, "float"))/BATCH_SIZE

Не могли бы вы рассказать мне, как заменить сигмовидную функцию на двоичный шаг один.


person user3104352    schedule 23.09.2017    source источник


Ответы (2)


y = tf.round(tf.nn.sigmoid(tf.matmul(h,Wo))

это даст вам 0 или 1 вывод.

person Ryan Jay    schedule 23.09.2017

В этом случае сигмоид не нужен. Попробуйте relu (знак (x))

person Hongyu Sun    schedule 11.10.2017
comment
Если вы не используете сигмовидную, сможете ли вы интерпретировать ее как вероятность? - person elgehelge; 29.12.2017
comment
также используется в BinaryNet github.com/itayhubara/BinaryNet.tf/blob/ мастер/nnUtils.py - person gizzmole; 22.02.2018