2017-09-23 36 views
0

我有一段代碼,它使用sigmoid激活函數進行輸出[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 

你能告訴我如何與二值化處理更換乙狀結腸功能的激活功能。

回答

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

那會給你0或1的輸出。

0

在這種情況下,您不需要sigmoid。 嘗試relu(sign(x))

+0

如果您不使用sigmoid,那麼您仍然可以將其解釋爲概率? – elgehelge

+0

也用於BinaryNet https://github.com/itayhubara/BinaryNet.tf/blob/master/nnUtils.py – gizzmole

相關問題