如何在张量流中预测上传的图像时解释expand_dims



这些天我越来越熟悉CNN和tensorflow(通过猫/狗分类问题(,在编写预测函数时,我意识到代码使用了expand_dims,我无法解释[1]。

当我能够获得所需的(150,150,3(上传图像数组时,为什么我不能将其馈送到预测函数? 我训练/验证的图像也具有相同的大小(150,150,3(。添加这个额外的(1, 150, 150, 3(到底有什么帮助???

提前非常感谢,

[1]

import numpy as np
from google.colab import files
from keras.preprocessing import image
uploaded=files.upload()
for fn in uploaded.keys():

# predicting images
path='/content/' + fn
img=image.load_img(path, target_size=(150, 150))

x=image.img_to_array(img)
x=np.expand_dims(x, axis=0)
images = np.vstack([x])

classes = model.predict(images, batch_size=10)

print(classes[0])

if classes[0]>0.5:
print(fn + " is a dog")

else:
print(fn + " is a cat")

图像开头的额外维度通常适用于批量大小。批量大小表示您一次捆绑多少图像以馈送 CNN。批处理也可以是单个图像,但它仍然需要额外的维度 1 来显示批处理的大小。例如,如果批大小为 5,则输入数组的形状为(5, 150, 150, 3)

该函数将维度添加到 numpy 数组。你加载图像并得到一个形状(150, 150, 3)数组,在第 0 轴调用expand_dims后,你得到形状(1, 150, 150, 3)

最新更新