我想用tensorflow預測二進制輸出。訓練數據大約有69%的輸出爲零。輸入特徵是實值,我通過減去平均值和除以標準偏差對它們進行歸一化。每次我運行網絡時,無論我嘗試過什麼技術,我都無法獲得精度高達69%的模型,而且看起來我的Yhat正在趨於全零。Tensorflow趨於平均值
我已經嘗試了很多像不同的優化器,損失函數,批量大小等等的東西。但不管我做什麼,它收斂到69%,永遠不會超過。我猜,我正在做的事情上有一個更有趣的問題,但我似乎無法找到它。
這裏是我的代碼
X = tf.placeholder(tf.float32,shape=[None,14],name='X')
Y = tf.placeholder(tf.float32,shape=[None,1],name='Y')
W1 = tf.Variable(tf.truncated_normal(shape=[14,20],stddev=0.5))
b1 = tf.Variable(tf.zeros([20]))
l1 = tf.nn.relu(tf.matmul(X,W1) + b1)
l1 = tf.nn.dropout(l1,0.5)
W2 = tf.Variable(tf.truncated_normal(shape=[20,20],stddev=0.5))
b2 = tf.Variable(tf.zeros([20]))
l2 = tf.nn.relu(tf.matmul(l1,W2) + b2)
l2 = tf.nn.dropout(l2,0.5)
W3 = tf.Variable(tf.truncated_normal(shape=[20,15],stddev=0.5))
b3 = tf.Variable(tf.zeros([15]))
l3 = tf.nn.relu(tf.matmul(l2,W3) + b3)
l3 = tf.nn.dropout(l3,0.5)
W5 = tf.Variable(tf.truncated_normal(shape=[15,1],stddev=0.5))
b5 = tf.Variable(tf.zeros([1]))
Yhat = tf.matmul(l3,W5) + b5
loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=Yhat, labels=Y))
learning_rate = 0.005
l2_weight = 0.001
learner = tf.train.AdamOptimizer(learning_rate).minimize(loss)
correct_prediction = tf.equal(tf.greater(Y,0.5), tf.greater(Yhat,0.5))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
感謝您的建議。它沒有解決問題,但我確信一旦我超過這個問題,它會有所幫助。 – Iinferno1