[英]How does batch size impact time execution in neural networks?
我正在使用CNN(卷積神經網絡)模型來訓練cifar10。 我嘗試在每次執行時更改批處理大小,以查看其對時間的影響
我的結論是:批量越大,執行模型所需的時間越多。
這看起來是否合乎邏輯,因為在每批處理結束時,我們都應用反向傳播算法,這意味着在批處理較大的情況下,我們將應用較少的梯度下降,因此從邏輯上講,我們應該有更少的執行時間。
我發現相反。 你們覺得怎么樣 ! 謝謝
這是我的會話代碼:
with tf.Session() as sess:
sess.run(init)
summary_writer =tf.summary.FileWriter(logs_path,graph=tf.get_default_graph())
start_time = time.time()
for i in range(iteration_number):
j = (i - epoch) * batch_size % number_of_examples
k= (i - epoch + 1) * batch_size % number_of_examples
if (k < j): # THE END OF DATA SET ------------------------
k = number_of_examples
batch_x = train_images[j:number_of_examples, :]
batch_y = train_labels[j:number_of_examples, :]
print("Iter " + str(i) + ", epoch Loss= " + \
"{:.6f}".format(loss) + ", Training Accuracy= " + \
"{:.5f}".format(acc))
data = numpy.concatenate((train_images, train_labels), axis=1)
numpy.random.shuffle(data)
train_images = data[:, :3072]
train_labels = data[:, 3072:3082]
epoch = i + 1
else:
batch_x = train_images[j:k, :]
batch_y = train_labels[j:k, :]
loss, acc, summary = sess.run([cost, accuracy, merged_summary_op], feed_dict={x: batch_x,
y: batch_y,
keep_prob: 0.3})
summary_writer.add_summary(summary)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y,
keep_prob: dropout})
批次大小基本上表示您要多長時間調整一次神經網絡的權重。 批次大小為1意味着您將給NN 1輸入和輸出對,使用輸入傳播網絡,計算誤差並調整權重。 如果批次大小與數據集大小相同,則NN將傳播所有輸入輸出對,並加總誤差並最終調整權重。 使用大的批次大小通常會給您帶來不太准確的結果,但它們更適合平均值,您可以說輸出會變得模糊不清,以避免某些數據出現極大的誤差,而對其他數據產生非常小的誤差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.