akh*_*tos 5 python machine-learning conv-neural-network keras
我正在使用 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
Run Code Online (Sandbox Code Playgroud)
在 AI 使用 64 的批量大小的情况下,我需要每个 epoch 20 秒。批量大小为 15 的情况 B 我需要每个 epoch 60 秒。批量大小为 256 的情况 C 每个 epoch 需要 345 秒。
我的理解:
-批量大小 =用于权重更新的图像数量。如果我有 100 张图像,批量大小为 10,则权重将在每个时期更新 10 次。我对吗?
Steps_per_epoch是Keras DataAugmenteur生成的图像数量。由于我分配了值 length(Train_X)/batch_size,这应该意味着,在权重更新之前使用batch_size数据。我对吗?
如果我的两个肯定是真的,那应该意味着减少批量大小会增加 1 个时代的时间,因为会有更多的权重更新。
为什么当我使用批量大小为 64 时,较低的纪元时间是?为什么在使用批量大小 = 256 时我得到了一个很大的纪元时间?
如果您知道更多信息或重新配方,请告诉我
编辑:我不明白为什么但是当我设置批量大小 = 256 时,我每个 epoch 的总步数(样本批次)为 256,而它应该是 len(Train_X)/256 (=58)