tensorflow预训练模型input格式错误

在使用tensorflow的vgg16模型时进行小狗图像预测时显示输入格式不符,但使用.shape发现格式又是正确的
ValueError: Input 0 is incompatible with layer vgg19: expected shape=(None, 224, 224, 3), found shape=(32, 224, 3)
from tensorflow.python.keras.applications.vgg16 import VGG16

model = VGG16()
from tensorflow.python.keras.preprocessing.image import load_img
img_dog = load_img('C:\Users\n\Desktop\smy.jpg' ,target_size=(224,224))
from tensorflow.python.keras.preprocessing.image import img_to_array
arr_dog = img_to_array(img_dog)
from tensorflow.python.keras.applications.vgg16 import preprocess_input
arr_input=preprocess_input(arr_dog)
probs = model.predict(arr_input)
probs

img

img

尝试使用reshape解决但仍然显示一样的错误结果

后续增加numpy解决

img

在你最初报错的代码predict(arr_input)前加上对arr_input的shape打印,然后整体运行。看报错是否还是说shape是32x224x3

你的图片预处理没有处理好。模型要求你图片的长宽为224x224,但是你的长宽为32x224,你需要考虑下不够224的怎么填充完整。另外模型的输入按照你的格式是【bs,H,W,C】,其中bs为batch size。如果你是单张图片,bs应该设置为1,也就是需要对图片进行升维度,最简单的是
img=img[None]这样将图片变成[1,H,W,C]的格式,然后转成tensor。
如果已经是tensor,使用tf.expand_dims(X, 0)对其进行升维