0
我使用CNN(卷积神经网络)模型来训练cifar10。 我试图在每次执行时更改批量大小以查看其对时间的影响批处理大小如何影响神经网络中的时间执行?
我的结论是:批量越大,模型执行的时间就越多。
这个问题似乎符合逻辑,因为在我们应用BP算法每一批的结束,具有较大批量大小意味着我们施加较小梯度下降所以逻辑上,我们应该有较少的执行时间。
我发现相反。你们觉得怎么样 ! 感谢
这里是我的会话代码:
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})
忽略复杂汇聚东西(用不同的收敛行为time_per_epoch是不是一个有效的度量来思考它需要多长时间来培养我的模型):大批量=更多的并行化,因此更短的时间每时期(如果有足够的内存)。 – sascha
向我们显示代码。我的第一个猜测是,你正在调用一个运行固定数量批处理的函数是一个时代,而不是一个固定数量的样本。 –
@LukaszTracewski感谢您的评论,我不很明白你的意思,但在这里我将自己的代码 – Geek