繁体   English   中英

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

[英]ValueError: Error when checking input: expected conv2d_36_input to have shape (3, 32, 32) but got array with shape (1, 10, 10)

当我尝试运行我的训练 model 时出现错误,我应该怎么做才能通过错误报告?

我的 model 或我的重塑部件有什么问题吗?

这是我的重塑部分

# 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:

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

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

因此,如果您将 model 更改为以下代码,它可能会起作用,但您还需要优化其他参数,例如 Conv2D 所需的功能 map:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM