我一直試圖在TensorFlow中的MNIST示例後面實現Logistic迴歸,但是使用CSV中的數據。每行是一個樣本,有12個維度。我的代碼如下:TensorFlow返回nan當實施Logistic迴歸
batch_size = 5
learning_rate = .001
x = tf.placeholder(tf.float32,[None,12])
y = tf.placeholder(tf.float32,[None,2])
W = tf.Variable(tf.zeros([12,2]))
b = tf.Variable(tf.zeros([2]))
mult = tf.matmul(x,W)
pred = tf.nn.softmax(mult+b)
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_indices=1))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
sess = tf.Session()
sess.run(tf.initialize_all_variables())
avg_cost = 0
total_batch = int(len(Xtrain)/batch_size)
for i in range(total_batch):
batch_xs = Xtrain[i*batch_size:batch_size*i+batch_size]
batch_ys = ytrain[i*batch_size:batch_size*i+batch_size]
_, c = sess.run([optimizer, cost], feed_dict={x: batch_xs,y: batch_ys})
print(c)
Xtrain是252x10 numpy的陣列,並且ytrain是252X2一個熱numpy的陣列。
問題:成本C計算爲第一次迭代(值爲0.6931 ...),但對於每次迭代後,它返回'南。
我試過的東西:我確信模型的每個組件方面都起作用。這個問題完全發生在第一次迭代之後。我已經學會了學習速度,但是這沒有任何作用。我嘗試將權重初始化爲truncated_normal(我不應該爲邏輯迴歸做任何工作),但這也沒有幫助。
那麼,有什麼想法?我花了大約3個小時試圖修復它,並且已經用完了想法。當TensorFlow去優化成本函數時,看起來似乎沒有什麼作用。
謝謝你,立即奏效。如果你不介意解釋,tf.maximum(pred,1e-15)是做什麼的,爲什麼它能解決我遇到的問題? – Alex
很高興工作。見下文! –