我正在手动创建我的数据集,这些数据集由一系列384x286的黑白图像组成。
我像这样加载一个图像:
x = []
for f in files:
img = Image.open(f)
img.load()
data = np.asarray(img, dtype="int32")
x.append(data)
x = np.array(x)
这导致x成为一个数组(num_samples,286,384)。
print(x.shape) => (100, 286, 384)
阅读Keras文档并检查我的后端,我应该向卷积步骤提供一个由(行、列、通道)组成的input_shape。由于我不会随意知道样本大小,所以我希望将一个类似于这样的输入大小传递给它。
( None, 286, 384, 1 )
模型的构建如下:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
# other steps...
将 (286, 384, 1) 作为输入形状会导致以下问题:
检查输入时出错:期望 conv2d_1_input 具有 4 个维度,但得到的数组形状为 (85, 286, 384)
将 (None, 286, 384, 1) 作为输入形状会导致以下问题:
输入 0 与层 conv2d_1 不兼容:期望 ndim=4,但发现 ndim=5
我做错了什么?我该如何重新调整输入数组的形状?