2017-09-23 1 views
0

J'ai un code qui utilise la fonction d'activation sigmoïde pour la classification qui sort [0,1]. Mais je besoin d'une fonction d'activation qui génère des valeurs binaires 0 ou 1.Fonction d'activation de seuil binaire dans tensorflow

 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 

Pouvez-vous s'il vous plaît me dire comment remplacer la fonction sigmoïde à l'étape binaire un.

Répondre

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

qui vous donnera 0 ou 1 sortie.

0

Vous n'avez pas besoin de sigmoïde dans ce cas. Essayez relu (signe (x))

+0

Si vous n'utilisez pas de sigmoïde, seriez-vous capable de l'interpréter comme une probabilité? – elgehelge

+0

également utilisé dans BinaryNet https://github.com/itayhubara/BinaryNet.tf/blob/master/nnUtils.py – gizzmole