![](/img/trans.png)
[英]Keras Dimension error - (Input 0 of layer "max_pooling2d" is incompatible with the layer: expected ndim=4, found ndim=6.)
[英]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.