2017-09-23 10 views
0

[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でシグモイド関数を置換する方法を教えてくださいすることができます。

答えて

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

出力が0または1になります。

0

この場合、シグモイドは必要ありません。 relu(sign(x))

+0

シグモイドを使用しないと、それを確率として解釈できますか? – elgehelge

+0

もBinaryNetで使用されています。https://github.com/itayhubara/BinaryNet.tf/blob/master/nnUtils.py – gizzmole

関連する問題