【问题标题】:ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (80, 120, 3)ValueError:检查输入时出错:预期 conv2d_1_input 有 4 个维度,但得到了形状为 (80、120、3) 的数组
【发布时间】:2019-03-05 10:51:56
【问题描述】:

我是一个刚刚开始学习深度学习的学习者。 我刚开始使用 Keras。 我想实现 SRCNN。 当我尝试先导入图片测试模型时出现此问题。

问题:

ValueError:检查输入时出错:预期 conv2d_1_input 有 4 维,但得到了形状为 (80, 120, 3) 的数组

我的代码如下:

from PIL import Image
import numpy as np
from keras import Sequential
from keras.layers import Conv2D, Activation

input_image = Image.open('../../res/image/120x80/120x80 (1).png')
input_image_array = np.array(input_image)

model = Sequential()

model.add(Conv2D(64, (9, 9), data_format='channels_last', activation='relu', input_shape=(80, 120, 3)))
model.add(Conv2D(35, (1, 1), data_format='channels_last', activation='relu', input_shape=(80, 120, 3)))
model.add(Conv2D(1, (5, 5), data_format='channels_last', input_shape=(120, 80, 3)))
model.compile(loss='mean_squared_error', optimizer='sgd')
model.fit(input_image_array, input_image_array)
print(model.summary())

【问题讨论】:

    标签: keras


    【解决方案1】:

    要给出单个输入图像,您需要包含样本维度(第一个),因此您需要添加值为 1 的维度:

    input_image_array = np.array(input_image)
    input_image_array = input_image_array[np.newaxis, :, :, :]
    

    这会将形状更改为 (1, 80, 120, 3),对应于一个图像样本。

    【讨论】:

    • 那么,你的意思是:shape(x, 80, 120, 3),其中x代表输入图像数量的维度,我的数组是否应该在顶部增加x的维度?
    • 只需添加 input_image_array = input_image_array[np.newaxis, :, :, :] 并成功,谢谢!
    猜你喜欢
    • 2018-01-09
    • 2018-11-09
    • 2020-03-03
    • 2019-08-25
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2018-12-26
    • 2021-11-24
    相关资源
    最近更新 更多