我正在嘗試在TensorFlow中實現輟學,以獲得簡單的3層神經網絡進行分類並遇到問題。更具體地說,我試圖在訓練vs.測試時應用不同的丟失參數pkeep
值。TensorFlow丟失:如何應用不同的值來訓練VS測試?
我採用的方法如下:
1)DEF create_placeholders(n_x,n_y):
X = tf.placeholder("float", [n_x, None])
Y = tf.placeholder("float", [n_y, None])
pkeep = tf.placeholder(tf.float32)
return X,Y,pkeep
2)在功能forward_propagation(X,參數,pkeep),I執行以下內容:
Z1 = tf.add(tf.matmul(W1, X), b1)
A1 = tf.nn.relu(Z1)
A1d = tf.nn.dropout(A1, pkeep)
Z2 = tf.add(tf.matmul(W2, A1d),b2)
A2 = tf.nn.relu(Z2)
A2d = tf.nn.dropout(A2, pkeep)
Z3 = tf.add(tf.matmul(W3, A2d),b3)
return Z3
3)以後,當tensorflow會話被調用(在爲清楚起見省略代碼線)之間:
X, Y, pkeep = create_placeholders(n_x, n_y)
Z3 = forward_propagation(X, parameters, pkeep)
sess.run([optimizer,cost], feed_dict={X:minibatch_X, Y:minibatch_Y, pkeep: 0.75})
上面的代碼運行時不會出現任何錯誤。但是,我認爲上述設置將pkeep
值設置爲0.75,以進行培訓和測試。小火車只在列車數據集上完成,但我沒有在其他地方設置pkeep
值。
我想設置培訓和pkeep = 1.0
進行測試。
4)它,當我做這樣的事情給出一個錯誤:
x_train_eval = Z3.eval(feed_dict={X: X_train, Y: Y_train, pkeep: 0.75})
x_test_eval = Z3.eval(feed_dict={X: X_test, Y: Y_test, pkeep: 1.0})
我得到的錯誤信息是:
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder_2' with dtype float
[[Node: Placeholder_2 = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
什麼是通過不同pkeep
的最佳方式訓練和測試的價值?你的意見將不勝感激。
謝謝Engineero。這非常有幫助。我得到它的工作。 – BrightOrange
@BrightOrange太棒了!如果有任何答案有幫助,請將其標記爲正確,以便將來有同樣問題的人知道您的工作是什麼。 – Engineero
如果將其標記爲「正確」,意味着將「答案標爲有用」,我被告知我需要至少15個聲望點才能做到這一點。一旦我累積了15分,我就會回來並且這樣做。我剛剛加入昨天=)非常感謝。 – BrightOrange