Deep learning 其中一层的输入与卷积神经网络CNN中的预期不同

Deep learning 其中一层的输入与卷积神经网络CNN中的预期不同,deep-learning,conv-neural-network,ocr,tf.keras,sequential,Deep Learning,Conv Neural Network,Ocr,Tf.keras,Sequential,我正在使用CROHME数据集的图像来训练CNN。每个图像都有形状(45,45,1)。 我为我的模型编写的代码如下所示: X\u train.shape给出此输出:(47352,45,45,1) 模型定义为: model = Sequential() model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', activation ='relu', input_shape = (45

我正在使用CROHME数据集的图像来训练CNN。每个图像都有形状(45,45,1)。 我为我的模型编写的代码如下所示:

X\u train.shape
给出此输出:
(47352,45,45,1)

模型定义为:

model = Sequential()

model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', 
                 activation ='relu', input_shape = (45,45,1)))
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same',
                 activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))


model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', 
                 activation ='relu'))
model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', 
                 activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Dropout(0.25))


model.add(Flatten())
model.add(Dense(256, activation = "relu"))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation = "softmax"))

# Fit the model
history = model.fit(X_train,Y_train, batch_size=batch_size,
                              epochs = 5, validation_data = (X_val,Y_val),
                              verbose = 2, steps_per_epoch=X_train.shape[0] // batch_size
                              , callbacks=[learning_rate_reduction])
错误:

C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\training.py:1224 test_function  *
    return step_function(self, iterator)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\training.py:1215 step_function  **
    outputs = model.distribute_strategy.run(run_step, args=(data,))
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1211 run
    return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2585 call_for_each_replica
    return self._call_for_each_replica(fn, args, kwargs)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2945 _call_for_each_replica
    return fn(*args, **kwargs)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\training.py:1208 run_step  **
    outputs = model.test_step(data)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\training.py:1174 test_step
    y_pred = self(x, training=False)
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:975 __call__
    input_spec.assert_input_compatibility(self.input_spec, inputs,
C:\Users\asmar\anaconda3\envs\myenv\lib\site-packages\tensorflow\python\keras\engine\input_spec.py:191 assert_input_compatibility
    raise ValueError('Input ' + str(input_index) + ' of layer ' +

ValueError: Input 0 of layer sequential_7 is incompatible with the layer: : expected min_ndim=4, found ndim=2. Full shape received: [None, 2025]
模型摘要向我提供了以下信息:

[Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_26 (Conv2D)           (None, 45, 45, 32)        832       
_________________________________________________________________
conv2d_27 (Conv2D)           (None, 45, 45, 32)        25632     
_________________________________________________________________
max_pooling2d_11 (MaxPooling (None, 22, 22, 32)        0         
_________________________________________________________________
dropout_15 (Dropout)         (None, 22, 22, 32)        0         
_________________________________________________________________
conv2d_28 (Conv2D)           (None, 22, 22, 64)        18496     
_________________________________________________________________
conv2d_29 (Conv2D)           (None, 22, 22, 64)        36928     
_________________________________________________________________
max_pooling2d_12 (MaxPooling (None, 11, 11, 64)        0         
_________________________________________________________________
dropout_16 (Dropout)         (None, 11, 11, 64)        0         
_________________________________________________________________
flatten_5 (Flatten)          (None, 7744)              0         
_________________________________________________________________
dense_10 (Dense)             (None, 256)               1982720   
_________________________________________________________________
dropout_17 (Dropout)         (None, 256)               0         
_________________________________________________________________
dense_11 (Dense)             (None, 74)                19018     
=================================================================
Total params: 2,083,626
Trainable params: 2,083,626
Non-trainable params: 0][1]

我做错了什么?

你真的确定X_火车是那种形状吗?因为很明显,你最终通过了一个(2025,)形状的图像,2025=25*25*1。看起来你的X_火车在某处被压扁了。我肯定X_火车有这个形状(47352,45,45,1)。我不知道它在哪里被压扁了。