深度学习中的batch,epoch,iteration

本文深入探讨了深度学习训练过程中的关键概念,如Epoch、Batch和Iteration,解释了它们在训练大规模数据集时的作用和相互关系,以及如何在PyTorch中实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度学习训练网络的时候数据往往是十分庞大的.有一组数据,一次性的将数据输入给计算机几乎是不可能的(小样本可采用full batch learning),常常需要把数据分成小块,一块一块的传递给计算机,在每一块执行前向反向,末尾更新一次神经网络的权重,拟合给定的数据.

Epoch:

当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。

epoch size:

一般在pytorch里为train_loader的大小,即数据集分batch之后的number of batches

Batch

batch是批。在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个 batch,每个batch作为一组进行一次训练(迭代)。

batch size:

一个 batch 中的样本总数(一次迭代使用的样本数目)。记住:batch size 和 number of batches 是不同的。

iteration

迭代是按照batch最终完成一个 epoch 需要的次数(或者说需要的batch个数),一个batch训练一次称为一次迭代,每次迭代更新1次网络结构的参数。记住:在一个 epoch 中,batch 数和迭代数是相等的。

在一个epoch下,number of batches==iteration==epoch_sizenumber\ of\ batches==iteration==epoch\_sizenumber of batches==iteration==epoch_sizeiteration×batch size=len(data)iteration×batch\ size=len(data )iteration×batch size=len(data)
代码上:

def SGD(self, training_data, epochs, mini_batch_size, eta,): 
	n = len(training_data) # 数据集总大小
	# 进行epochs次主循环来计算weights和biases 
	for j in xrange(epochs): 
		# 每个主循环走一遍所有训练数据,并shuffle一下提供好的随机性 
		random.shuffle(training_data) 
		# 对于每个计算随机梯度的具体事件,设置一个mini_batch,用这mini_batch_size个样本来计算随机梯度 
		mini_batches = [ 
			training_data[k:k+mini_batch_size]
			for k in xrange(0, n, mini_batch_size)]#[0,n)步长为batch_size,k的个数即为一个epoch内iteration数
			# 计算随机梯度,更新weights和biases,eta是学习率 
		for mini_batch in mini_batches: 
			self.update_mini_batch(mini_batch, eta)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值