我正在使用一种非常幼稚的方法基于喀拉拉邦的预训练模型进行预测。但是后来变得慢得多。有人知道为什么吗?我对tensorflow非常陌生。
count = 0
first = True
for nm in image_names:
img = image.load_img(TEST_PATH + nm, target_size=(299, 299))
img = image.img_to_array(img)
image_batch = np.expand_dims(img, axis=0)
processed_image = inception_v3.preprocess_input(image_batch.copy())
prob = inception_model.predict(processed_image)
df1 = pd.DataFrame({'photo_id': [nm]})
df2 = pd.DataFrame(prob, columns=['feat' + str(j + 1) for j in range(prob.shape[1])])
df = pd.concat([df1, df2], axis=1)
header = first
mode = 'w' if first else 'a'
df.to_csv(outfile, index=False, header=header, mode=mode)
first = False
count += 1
if count % 100 == 0:
print('%d processed' % count)
答案 0 :(得分:0)
我怀疑TF正在放慢速度。但是,还有另一个堆栈溢出问题,表明to_csv在添加时会变慢。
Performance: Python pandas DataFrame.to_csv append becomes gradually slower
如果将图像批量处理,则可以从批量生产中受益,而不是一次预测一张图像。
您还可以浏览tf.data以获得更好的数据流水线化。