簡體   English   中英

層“max_pooling2d_30”的輸入0與層不兼容:預期ndim=4,發現ndim=5

[英]Input 0 of layer "max_pooling2d_30" is incompatible with the layer: expected ndim=4, found ndim=5

我剛剛開始接近 ml,我正在嘗試在使用 tf.keras.utils.image_dataset_from_directory 從圖像目錄獲得的圖像數據集上訓練模型(然后對其進行酸洗),以便它可以預測哪個字母是手指拼寫的在圖像中。

所以,這就是我解開我的數據集的方式:

#PICKLE LOAD

#TRAIN
  #images
with open('x_train.pkl', 'rb') as x_train_pickle:
  x_train_data = pickle.load(x_train_pickle)
  #labels
with open('y_train.pkl', 'rb') as y_train_pickle:
  y_train_data = pickle.load(y_train_pickle)

#VALIDATION
with open('x_val.pkl', 'rb') as x_val_pickle:
  x_val_data = pickle.load(x_val_pickle)

with open('y_val.pkl', 'rb') as y_val_pickle:
  y_val_data = pickle.load(y_val_pickle)

#TEST
with open('x_test.pkl', 'rb') as x_test_pickle:
  x_test_data = pickle.load(x_test_pickle)

with open('y_test.pkl', 'rb') as y_test_pickle:
  y_test_data = pickle.load(y_test_pickle)

您將 5D 數據提供給 Conv2d 而不是 4D。因此,您的數據應為 (batch_size*32, 180, 180, 3) 形狀,或者您可以使用 TimeDistributed 層包裝器在所有圖像上應用相同的卷積層在 5D 張量中。 例如:

model = Sequential()
model.add(tf.keras.layers.TimeDistributed(tf.keras.layers.Conv2D(32, 3, activation='relu')))

model.summary()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM