我创建了一个简单的猫狗图像分类(卷积神经网络)。每个班级有7,000个培训数据,每个班级有5,500个验证数据。
我的问题是我的系统没有完成所有纪元。如果有人能够解释选择 nb_epoch,samples_per_epoch和nb_val_samples 值的比例或标准,以获得最大限度的训练和验证数据,我将非常感激。
以下是我的代码:
showDialog
答案 0 :(得分:7)
samples_per_epoch 通常设置为:
samples_per_epoch=train_generator.nb_samples
通过这种方式,您可以确保每个时代都能看到一些等于训练集大小的样本。这意味着您将在每个时代看到所有的训练样本。
nb_epoch 非常适合您。它确定您对samples_per_epoch
定义的数字进行迭代的次数。
举个例子,在你的代码中,你的模型正在“看到”(nb_epoch * samples_per_epoch)
图像,在这种情况下是65000张图像。
nb_val_samples 确定在完成每个纪元后评估模型的验证样本数量。这取决于你。通常的事情是设置:
nb_val_samples=validation_generator.nb_samples
为了在完整的验证集上评估您的模型。
batch_size 确定您的gpu(或cpu)同时多少图片。哑巴规则是设置你的gpu的memmory允许的最大batch_size
。理想的batch_size是现在研究的活跃领域,但通常更大的batch_size将更好地工作。