Keras框架中的epoch、bacth、batch size、iteration

1、epoch

Keras官方文档中给出的解释是:“简单说,epochs指的就是训练过程中数据将被“轮”多少次”

(1)释义:

训练过程中当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch,网络会在每个epoch结束时报告关于模型学习进度的调试信息。

(2)为什么要训练多个epoch,即数据要被“轮”多次

在神经网络中传递完整的数据集一次是不够的,对于有限的数据集(是在批梯度下降情况下),使用一个迭代过程,更新权重一次或者说使用一个epoch是不够的,需要将完整的数据集在同样的神经网络中传递多次,随着epoch次数增加,神经网络中的权重的更新次数也增加,模型从欠拟合变得过拟合。

2、batch

(1)keras官方文档

在有30个样本的情况下,设置较大的batch size如64是不合理的,因为样本总数小于batch size,会导致在每个epoch中无法完整形成一个batch,影响模型训练效果。 一般建议选择较小的batch size,如4、8、16等,这样能保证模型在训练过程中看到更多数据的变化,有助于提高模型的泛化能力,避免陷入局部最优解。较小的batch size可以使模型在每个epoch中进行多次权重更新,每次更新的权重有所不同,有助于避免局部最优解,提高训练稳定性[^2]。 对于epoch的设置,由于样本数量较少,多次重复遍历数据可能会使模型更快地出现过拟合现象。因此,epoch不宜设置过大。可以先从较小的epoch开始,如5 - 10,然后根据训练过程中loss的下降情况和验证集的指标表现来调整。如果loss还能继续下降,验证集指标也在提升,说明模型还未充分学习,可以适当增加epoch;如果loss不再下降,甚至验证集指标开始下降,说明模型可能已经过拟合,需要停止训练。 以下是一个简单的示例代码,展示如何设置batch sizeepoch: ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 假设有30个样本,每个样本有10个特征 x_train = tf.random.normal((30, 10)) y_train = tf.random.uniform((30, 1), minval=0, maxval=2, dtype=tf.int32) # 构建一个简单的模型 model = Sequential([ Dense(16, activation='relu', input_shape=(10,)), Dense(1, activation='sigmoid') ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 设置batch sizeepoch batch_size = 8 epochs = 5 # 训练模型 model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值