Python ValueError:检查输入时出错:预期conv2d_3_输入具有形状(100100,1),但获得具有形状(100100,3)的数组

Python ValueError:检查输入时出错:预期conv2d_3_输入具有形状(100100,1),但获得具有形状(100100,3)的数组,python,python-3.x,keras,neural-network,image-recognition,Python,Python 3.x,Keras,Neural Network,Image Recognition,当我尝试为图像识别编码神经网络时,我得到了错误: ValueError:检查输入时出错:预期conv2d_3_输入具有形状(100100,1),但获得具有形状(100100,3)的数组 我所有的图像都是greyscale,大小100x100像素。 代码如下: #导入Keras库和包 导入tensorflow作为tf 从keras.models导入顺序 从keras.layers导入Conv2D 从keras.layers导入MaxPoolig2D 从keras.layers导入展平 从kera

当我尝试为图像识别编码神经网络时,我得到了错误:

ValueError:检查输入时出错:预期conv2d_3_输入具有形状(100100,1),但获得具有形状(100100,3)的数组

我所有的图像都是
greyscale
,大小
100x100
像素。 代码如下:

#导入Keras库和包
导入tensorflow作为tf
从keras.models导入顺序
从keras.layers导入Conv2D
从keras.layers导入MaxPoolig2D
从keras.layers导入展平
从keras.layers导入稠密
#初始化CNN
分类器=顺序()
#步骤1-卷积
add(Conv2D(32,(3,3),input_shape=(100100,1),activation='relu'))
#步骤2-池
add(MaxPoolig2D(池大小=(2,2)))
#添加第二个卷积层
add(Conv2D(32,(3,3),activation='relu'))
add(MaxPoolig2D(池大小=(2,2)))
#步骤3-展平
添加(展平())
#步骤4-完全连接
add(密集(单位=128,激活=relu'))
add(稠密(单位=1,激活='sigmoid'))
#编辑CNN
compile(优化器='adam',loss='binary\u crossentropy',metrics=['accurity'])
#第2部分-将CNN与图像匹配
从keras.preprocessing.image导入ImageDataGenerator
列车数据发生器=图像数据发生器(重缩放=1./255,
剪切范围=0.2,
缩放范围=0.2,
水平(翻转=真)
test_datagen=ImageDataGenerator(重缩放=1./255)
training\u set=train\u datagen.flow\u from\u目录('E:/exercise/dataset/train',
目标_大小=(100100),
批次大小=32,
color\u mode=“灰度”,
class_模式='binary')
test\u set=test\u datagen.flow\u来自目录('E:/exercise/dataset/test',
目标_大小=(100100),
color\u mode=“灰度”,
批次大小=32,
class_模式='binary')
分类器。装配发生器(训练集,
每个历元的步数=40,
纪元=10,
验证数据=测试集,
验证(步骤=8)
将numpy作为np导入
从keras.preprocessing导入图像
test\u image=image.load\u img('E:/exercise/predict\u 2.jpg',target\u size=(100100))
test_image=image.img_到_数组(test_image)
测试图像=np。展开图像(测试图像,轴=0)
结果=分类器。预测(测试图像)
训练集类指数
如果结果[0][0]>=0.5:prediction='happy'
其他:预测=‘悲伤’

打印(预测)
尝试将参数
预处理功能=灰色添加到\u rgb
图像数据生成器
,用于
列车数据发生器
测试数据发生器
,如下所示:

def rgb_to_gray(rgb):     # Using the luminosity formula: grayscale =  0.21 R + 0.72 G + 0.07 B
    return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
preprocessing_function=rgb_to_gray)
test_datagen = ImageDataGenerator(rescale = 1./255, preprocessing_function=rgb_to_gray)

尝试将参数
train\u datagen
test\u datagen
添加到
ImageDataGenerator
,如下所示:

def rgb_to_gray(rgb):     # Using the luminosity formula: grayscale =  0.21 R + 0.72 G + 0.07 B
    return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
preprocessing_function=rgb_to_gray)
test_datagen = ImageDataGenerator(rescale = 1./255, preprocessing_function=rgb_to_gray)

谢谢你的帮助。但是当我运行代码时,出现了另一个问题,即ValueError:shapes(100100,1)和(3,)未对齐:1(dim2)!=3(0)谢谢你的帮助。但是当我运行代码时,出现了另一个问题,即ValueError:shapes(100100,1)和(3,)未对齐:1(dim2)!=3(尺寸0)