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

时间:2019-09-22 06:10:35

标签: 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 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

1 个答案:

答案 0 :(得分:0)

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

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

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