我正在为MNIST时尚数据集开发CNN模型。我创建了一个成功的CNN模型。但我想测试我从网上下载的另一张图片的分类模型。
我的所有训练和测试都是(28,28,1(。但现在,对于我想要预测的图像,我将其调整为(28,28(,并使用将其转换为RGB的一个通道
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, 28, 3)
我认为形状是问题所在。那么,如果这是问题所在,我如何将其转换为形状(28,28,1(。
CNN在单通道RGB中的工作效果比在3通道RGB中更好吗?
在深度学习中,对我来说非常有用的命令是numpy
中的expand_dims
。
your_image.shape
>>> (28, 28)
your_new_array = np.expand_dims(your_image, axis=-1)
your_new_array.shape
>>> (28, 28, 1)
您可以使用axis参数来更好地了解这里发生了什么。
由于您没有包含代码,我假设您的输入层有问题。因此,您需要指定单位的数量,并首先将其输入到您的输入层中:
model = Sequential()
model.add(Dense(X.shape[1], activation='something you desired', input_dim=X.shape[1]))
等等
很难理解你在处理什么以及你想要实现什么,因为你没有指定/共享任何东西,甚至没有代码。