【发布时间】:2020-12-20 22:17:45
【问题描述】:
我正在使用预训练的 VGG16 模型在 Google Colab 的 TPU 上对约 100 000 张图像进行分类。我不确定为不同的参数选择什么值来优化 Keras 的 model.predict_generator 和 flow_from_dataframe 的运行时间。似乎没有很多文档。我尝试在“仅”约 10 000 张图像的情况下改变队列大小和测试运行的工作人员数量,但我没有观察到运行时有任何显着变化。
下面提供了一个代码 sn-p。 pandas 数据框包含已安装驱动器上所有图像的文件位置和地面实况标签。该模型是一个现有的 VGG16 预训练网络。 (稍后我想将此网络的性能与我自己的网络进行比较。)非常欢迎您提供一些关于何时使用什么设置的最佳实践见解 (batch size, queue size, workers)!
trdata= ImageDataGenerator()
data = trdata.flow_from_dataframe(dataframe = df, directory= None,
x_col="Photo", y_col="Class", class_mode='categorical', color_mode="rgb",
batch_size=32, target_size=(224,224), shuffle=False)
predictions= model.predict_generator(data, max_queue_size=64, workers = 32, verbose=1)
【问题讨论】:
-
您到底想达到什么目的?您不确定哪些参数?
-
我正在使用神经网络对图像进行分类。 predictions 是一个矩阵,其中包含每个类的概率。 (我后来用它来计算基于真实标签的 topk 准确度。)现在代码可以运行,但速度很慢。我知道这仍然是一项繁重的计算任务,但我想充分利用硬件并最大限度地减少运行时间。为此,可能有一些聪明的方法来选择 batch_size、max_queue_size 和工人数量。 (也许还有其他我没有考虑过的参数?)我想要一些关于如何选择这些的建议。
标签: python tensorflow keras deep-learning image-recognition