如何在python中将我的图像更改为所需的形状?

问题描述

我正在研究 MNIST 时尚数据集的 CNN 模型。我已经创建了一个成功的 CNN 模型。但我想测试我从互联网下载的另一张图像的分类模型。

我的所有训练和测试集的形状都是 (28,28,1)。但是现在对于我想要预测的图像,我将其调整为 (28,28) 并使用

cv2.cvtColor(load_img_rz,cv2.COLOR_BGR2GRAY)

现在图像的形状是 (28,28)。我尝试将其输入模型并显示错误

ValueError: Input 0 of layer sequential_6 is incompatible with the layer: : expected min_ndim=4,found ndim=3. Full shape received: (None,3)

我认为形状是问题所在。那么如果这是问题,我该如何将其转换为形状(28,1)。

CNN 在单通道 RGB 中是否比在 3 通道 RGB 中工作得更好?

解决方法

由于您不包含代码,我假设您的输入层有问题。因此,您需要先在输入层中指定 unit 和 inpt dim 的数量:

model = Sequential()
model.add(Dense(X.shape[1],activation='something you desired',input_dim=X.shape[1]))

等等

很难理解你在处理什么以及你想要实现什么,因为你没有指定/共享任何东西,甚至没有代码。

,

在深度学习中对我来说非常有用的命令是 expand_dims from numpy

your_image.shape
>>> (28,28)

your_new_array = np.expand_dims(your_image,axis=-1)
your_new_array.shape
>>> (28,28,1)

您可以使用轴参数来更好地了解这里发生的事情。