gpt4 book ai didi

python - 如何使用 Keras 生成器选择batch_size、steps_per_epoch 和 epoch

转载 作者:行者123 更新时间:2023-11-30 09:26:42 27 4
gpt4 key购买 nike

我正在为图像分类问题训练 2 个不同的 CNN(自定义学习和迁移学习)。我对两种型号使用相同的发电机。该数据集包含 5 个类别的 5000 个样本,但不平衡。

这是我正在使用的自定义模型。

def __init__(self, transfer_learning = False, lambda_reg = 0.001, drop_out_rate = 0.1):
if(transfer_learning == False):
self.model = Sequential();
self.model.add(Conv2D(32, (3,3), input_shape = (224,224,3), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))

self.model.add(Conv2D(64, (1,1), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))

self.model.add(Conv2D(128, (3,3), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))

self.model.add(Conv2D(128, (1,1), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))

self.model.add(Flatten())

self.model.add(Dense(512))
self.model.add(Dropout(drop_out_rate))
self.model.add(Dense(256))
self.model.add(Dropout(drop_out_rate))

self.model.add(Dense(5, activation = "softmax"))

所以我无法理解steps_per_epochbatch_size之间的关系。batch_size 是生成器发送的样本数。但是,steps_per_epoch 是完成一个训练周期的 batch_size 数量吗?如果是这样,那么它应该是:steps_per_epoch=total_samples/batch_size?

无论我尝试什么值,我总是遇到相同的问题(在两个模型上),val_acc 似乎达到了局部最优值。

最佳答案

您在这里混淆了两个问题。一是如何确定batch_size与steps_per_epoch;另一个是为什么 val_acc 似乎达到了局部最优并且不会继续改进。

(1) 对于问题——batch_size 与steps_per_epoch

策略应该首先在内存允许的情况下最大化batch_size,特别是当您使用GPU(4~11GB)时。通常,batch_size=32 或 64 应该没问题,但在某些情况下,您必须减少到 8、4 甚至 1。如果没有足够的内存可分配,训练代码将抛出异常,因此您知道何时该分配停止增加batch_size。

一旦设置了batch_size,steps_per_epoch就可以通过Math.ceil(total_samples/batch_size)计算出来。但有时,当使用数据增强时,您可能希望将其设置为大几倍。

(2)第二个问题——val_acc达到局部最优,不会继续改进

这就是深度学习问题的关键,不是吗?它让深度学习既令人兴奋又困难。 batch_size、steps_per_epoch 和 epoch 数量在这里没有多大帮助。控制模型表现的是模型和超参数(例如学习率、损失函数、优化函数等)。

一些简单的技巧是尝试不同的学习率、不同的优化函数。如果您发现模型过度拟合(val_acc 随着更多时期的出现而下降),如果可能的话,增加样本大小总是有帮助的。数据增强在一定程度上有所帮助。

关于python - 如何使用 Keras 生成器选择batch_size、steps_per_epoch 和 epoch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com