这里的input_shape应该是什么?



我没有太多在Stack Overflow上发布问题的经验。请原谅我的错误。我会尽量彻底的。

我有两个numpy数组

  1. X with shape (78300,90,90).
  2. y with shape (78300, 29)
  • X是一个黑白图像数组,高度和宽度分别为(90,90)。
  • y是x对应的编码类标签(编码为y = tensorflow.keras.utils.to_categorical(labels))

我正在尝试用这些数据训练下面的CNN。

from tensorflow.keras import utils
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.keras.callbacks import ModelCheckpoint
model = Sequential()
model.add(Conv2D(64, (3, 3), input_shape=(90, 90, 1), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(1024, activation='sigmoid'))
model.add(Dense(29, activation='softmax'))

在运行

时收到以下错误
n_classes = 29
batch = 64
epochs = 5
learning_rate = 0.001
adam = Adam(lr=learning_rate)
model.compile(optimizer=adam,
              loss='categorical_crossentropy',
              metrics=['accuracy'])
cp_callback = ModelCheckpoint(filepath=os.path.join("/output_dir", "result_folder"),
                              save_weights_only=True,
                              verbose=1)
history = model.fit(x,
                    y,
                    batch_size=batch,
                    epochs=epochs,
                    validation_split=0.1,
                    shuffle=True,verbose=1,
                   callbacks=[cp_callback])

: ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: [None, 90, 90]

我不知道出了什么问题。请帮帮我。此外,如果你能链接一个文档/文章/博客文章/视频,这将有助于我了解图层输入形状的细微差别,这将是非常有帮助的。

形状应为(78300,90,90,1)

重塑x(添加一个维度):

x = x[..., tf.newaxis]

相关内容

  • 没有找到相关文章

最新更新