【问题标题】:Why do I get error when use keras Conv2D layer?为什么我在使用 keras Conv2D 层时会出错?
【发布时间】:2017-08-02 18:16:48
【问题描述】:

我使用下一个基于 keras 的架构 (article):

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3)))
...
model.fit_generator(
    train_generator,
    steps_per_epoch=nb_train_samples // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=nb_validation_samples // batch_size)

model.save_weights('first_try.h5')

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img

img = load_img('test_data/a1.jpg')  # this is a PIL image
img = img.resize((150, 150))
x = img_to_array(img)

prediction = model.predict(x)
print(prediction)

ValueError: 检查时出错:预期 conv2d_1_input 有 4 个维度,但得到的数组形状为 (150, 150, 3)

你能告诉我如何解决它吗?

【问题讨论】:

    标签: machine-learning artificial-intelligence keras


    【解决方案1】:

    您正在向模型提供单个样本,而模型需要一批样本,这就是 4 个预期维度的来源:batch_size + img_shape。

    获得您想要的单个图像的多种方法之一是

    x = np.array([img])
    

    【讨论】:

    • 我也发现 x = np.expand_dims(x, axis=0)
    • @OlegDats 完全正确,即使是简单的x.reshape(1, *img.shape) 也应该可以工作。
    猜你喜欢
    • 2019-03-06
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2021-03-04
    • 2010-10-18
    • 2021-10-02
    相关资源
    最近更新 更多