關於神經網絡批量訓練我有幾個問題。批量培訓使用更新總數?或平均更新?
首先,當我們使用批量訓練來更新權重時,更改量是批量大小的累積梯度。在這種情況下,變化量是漸變的總和?或平均的梯度?
如果答案是梯度的總和,則變化量將比在線培訓大得多,因爲數量是累積的。在這種情況下,我認爲權重可以很好地優化。
否則,如果答案是梯度的平均值,那麼對權重進行優化似乎是非常合理的。但是,在這種情況下,我們必須培訓比在線培訓多得多的時間,因爲它更新批量數據的權重只有一次。其次,無論第一個問題的答案是什麼,當我使用CNN的Tensorflow示例代碼作爲MNIST時,它可以如此快速地優化權重,因此即使在第二步中訓練精度也會超過90%。
============================================== =========================
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy) accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) for i in range(1000): batch = mnist.train.next_batch(100) if i%100 == 0: train_accuracy = sess.run(accuracy, feed_dict={x:batch[0], y_:batch[1], keep_prob: 1.0}) sess.run(train_step, feed_dict={x: batch[0], y_:batch[1], keep_prob:1.0})
================ ================================================== ======
請解釋Tensorflow如何非常快地優化重量。