繁体   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