![](/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.