gpt4 book ai didi

python - 更大的批量大小减少训练时间

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:48 26 4
gpt4 key购买 nike

我正在使用 CNN 进行图像分类;我使用 keras ImageDataGenerator 进行数据扩充

我想我错过了什么。

A ///  train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=64),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/64)  # 1 epoch =20 secondes

B /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=15),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/15) # 1 epoch = 60 secondes

C /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=256),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/256) # 1 epoch =345secondes



在情况 A 中,我使用的批量大小为 64,每个时期需要 20 秒。批量大小为 15 的情况 B 我需要每个纪元 60 秒。批量大小为 256 的情况 C 每个时期需要 345 秒。

我的理解:

-batch size = image number 用于权重更新。如果我有 100 张图像,批量大小为 10,权重将在每个时期更新 10 次。我说得对吗?

Steps_per_epoch 是 Keras DataAugmenteur 生成的图像数量。由于我分配了值 length(Train_X)/batch_size,这应该意味着,batch_size 数据在权重更新之前使用。我说得对吗?

如果我的两个肯定是正确的,那应该意味着减少批量大小会增加 1 个纪元的时间,因为会有更多的权重更新。

为什么当我使用 64 的批量大小时我的下纪元时间是?为什么我在使用 batch size=256 时得到了一个大纪元?

如果您知道更多信息或重新制定,请告诉我

编辑:我不明白为什么,但是当我设置批量大小 =256 时,我每个时期的总步数(样本批处理)为 256,而它应该是 len(Train_X)/256 (=58)

最佳答案

更新权重的时间在这种情况下几乎不算数

你可以检查计算是否需要在内存和磁盘之间传输东西

使用256尺寸时

如果您想使用添加批量大小来减少时间,您可以设置并发任务!

关于python - 更大的批量大小减少训练时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253717/

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