问题描述
我正在研究 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)
您可以使用轴参数来更好地了解这里发生的事情。