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

Python ValueError:检查输入时出错:预期conv2d_36_输入具有形状(3,32,32),但获得具有形状(1,10,10)的数组,python,tensorflow,keras,training-data,Python,Tensorflow,Keras,Training Data,当我尝试运行我的培训模型时,出现了错误。我应该怎么做才能通过错误报告 我的模型或重塑零件有问题吗 这是我的重塑部分 # Reshape and normalize training data trainX = train.reshape(train.shape[0], 1, 10, 10).astype( 'float32' ) x_train = trainX / 255.0 y_train = train[:,99] # print(y_train) # # # Reshape and no

当我尝试运行我的培训模型时,出现了错误。我应该怎么做才能通过错误报告

我的模型或重塑零件有问题吗

这是我的重塑部分

# Reshape and normalize training data
trainX = train.reshape(train.shape[0], 1, 10, 10).astype( 'float32' )
x_train = trainX / 255.0
y_train = train[:,99]
# print(y_train)
# # # Reshape and normalize test data
testX = test.reshape(test.shape[0], 1, 10, 10).astype(     'float32' )
x_test = testX / 255.0
y_test = test[:,99]
# print(y_test)
这是我的模型:

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 32, 32), 
activation='relu', padding='same'))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(BatchNormalization())
然后,如果我将数据形状改为3*32*32,则会出现值错误报告:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-36bf3e556ae8> in <module>()
----> 1 trainX = train.reshape(train.shape[0], 3, 32, 32).astype( 'float32' )
  2 x_train = trainX / 255.0
  3 y_train = train[:,10]
  4 # print(y_train)
  5 # # # Reshape and normalize test data
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1 trainX=列车形状重塑(列车形状[0],3,32,32).aType('float32')
2辆列车=列车x/255.0
3列车=列车[:,10]
4#打印(y#列车)
5####重塑和规范化测试数据

列车和测试数据集的输入形状与模型不同。使用input\u shape()时,需要记住所需输入的大小。在您的情况下,您的形状看起来是(1,10,10),这是一个10x10图像,具有一个级别通道/深度(即黑白图像)。但是,您使用的模型需要一个(3,32,32)形状,该形状被转换为具有32x32尺寸的彩色图像(即,3个通道表示RGB颜色)

因此,如果您按照下面的代码更改模型,它可能会起作用,但您还需要优化其他参数,例如Conv2D所需的特征映射:

model.add(Conv2D(32, (3, 3), **input_shape=(1, 10, 10)**,activation='relu', padding='same'))

列车和测试数据集的输入形状与模型不同。使用input\u shape()时,需要记住所需输入的大小。在您的情况下,您的形状看起来是(1,10,10),这是一个10x10图像,具有一个级别通道/深度(即黑白图像)。但是,您使用的模型需要一个(3,32,32)形状,该形状被转换为具有32x32尺寸的彩色图像(即,3个通道表示RGB颜色)

因此,如果您按照下面的代码更改模型,它可能会起作用,但您还需要优化其他参数,例如Conv2D所需的特征映射:

model.add(Conv2D(32, (3, 3), **input_shape=(1, 10, 10)**,activation='relu', padding='same'))