如何解决带有灰度图像的 CNN 上的形状问题
我制作了一个 CNN 用于 10 个类别的分类。 输入 = 49000 张灰度图片,全部混合(我的意思是训练集和验证集) train.csv 包含图像列表及其标签,例如:
double
这里是 CNN 的一部分:
id,label
0.png,4
1.png,9
2.png,1
3.png,7
4.png,3
5.png,9
和拟合方法:
traindf = pd.read_csv('train.csv',dtype=str)
datagen = ImageDataGenerator(rescale=1./255,validation_split=0.25,shear_range = 0.2,zoom_range = 0.2,horizontal_flip = True)
train_generator = datagen.flow_from_dataframe(dataframe = traindf,directory='images',target_size = (28,28),color_mode='grayscale',x_col='id',y_col='label',subset='training',batch_size = 32,shuffle=True,class_mode = 'categorical')
valid_generator = datagen.flow_from_dataframe(dataframe = traindf,directory="images",target_size=(28,x_col="id",y_col="label",subset="validation",batch_size=32,class_mode="categorical")
STEP_SIZE_TRAIN = train_generator.n//train_generator.batch_size
STEP_SIZE_VALID = valid_generator.n//valid_generator.batch_size
为了清楚起见,我没有显示神经网络的创建,但请注意 input_shape = (28,28,1)
然后我保存模型:
classifier.compile(optimizer = 'adam',loss = 'categorical_crossentropy',metrics = ['accuracy'])
classifier.fit_generator(train_generator,steps_per_epoch = STEP_SIZE_TRAIN,epochs = 10,validation_data = valid_generator,validation_steps = STEP_SIZE_VALID)
在另一个程序中,我想预测一个图像:
filepath = './NumChar_model_01'
save_model(classifier,filepath)
我收到了这个错误:
ValueError:层序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 1,但接收到形状为 [None,3] 的输入
我知道这是形状的问题,但相信我,我阅读了所有关于这个的世界话题......
我尝试在 train_generator 和 valid_generator 上进行 reshape 但它也给了我一个错误('DataFrameIterator' 对象没有属性 'reshape')
解决方法
解决方案:
img 被获取了
img = ImageGrab.grab((cx,cy,cx + cw,cy + ch)) 它返回一个 RGB 图像,这会引发错误。所以我将其转换为灰度图像:
img = img.convert('L') 它有效!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。