python - ValueError: 层序贯_2 的输入 0 与层不兼容:预期 ndim=5,发现 ndim=4。收到的完整形状:(无、10、250、250)
问题描述
我收到此代码的错误。我原来的 input_shape 是 (10,250,250,1) 。我将 tensorflow.keras 用于 Sequential。我的模型代码是:
import tensorflow as tf
from tensorflow.keras.layers import TimeDistributed, Conv2D, Dense, MaxPooling2D, Flatten, LSTM, Dropout, BatchNormalization
from tensorflow.keras.models import Sequential, load_model
model_cnlst = Sequential()
model_cnlst.add(TimeDistributed(Conv2D(128, (3, 3), strides=(1,1),activation='relu'),input_shape=(10, 250, 250, 1)))
model_cnlst.add(TimeDistributed(Conv2D(64, (3, 3), strides=(1,1),activation='relu')))
model_cnlst.add(TimeDistributed(MaxPooling2D(2,2)))
model_cnlst.add(TimeDistributed(Conv2D(64, (3, 3), strides=(1,1),activation='relu')))
model_cnlst.add(TimeDistributed(Conv2D(32, (3, 3), strides=(1,1),activation='relu')))
model_cnlst.add(TimeDistributed(MaxPooling2D(2,2)))
model_cnlst.add(TimeDistributed(BatchNormalization()))
model_cnlst.add(TimeDistributed(Flatten()))
model_cnlst.add(Dropout(0.2))
model_cnlst.add(LSTM(32,return_sequences=False,dropout=0.2)) # used 32 units
model_cnlst.add(Dense(64,activation='relu'))
model_cnlst.add(Dense(32,activation='relu'))
model_cnlst.add(Dropout(0.2))
model_cnlst.add(Dense(1, activation='sigmoid'))
model_cnlst.summary()
然后对于以下代码,我收到此错误:
history_new_cnlst=model_cnlst.fit(train_dataset_new,train_labels,epochs=20,batch_size=10,validation_data=(validation_dataset_new,validation_labels),
callbacks=callbacks_list_cnlst)
错误消息是:
Epoch 1/20
....
----> 3 callbacks=callbacks_list_cnlst)
........
ValueError: Input 0 of layer sequential_2 is incompatible with the layer: expected ndim=5, found ndim=4. Full shape received: (None, 10, 250, 250)
我callbacks_list_cnlst
的定义为:
callbacks_list_cnlst=[tensorflow.keras.callbacks.EarlyStopping(
monitor='acc',patience=3),
tensorflow.keras.callbacks.ModelCheckpoint(
filepath='cnn_lstm_model_new3.h5',
monitor='val_loss',
save_best_only=True),
tensorflow.keras.callbacks.ReduceLROnPlateau(monitor = "val_loss", factor = 0.1, patience = 3)
]
解决方案
推荐阅读
- file - 减小 .dat 文件的文件大小
- python - 如何可靠地将配置保存到文件
- html - 是否可以创建具有奇数边长的 CSS 边框三角形?
- oracle - (Oracle SQL)如何在插入后使用唯一键更新表?
- python - 链接到 Github 中的 python 函数
- python - 在“str”和“int”的实例之间不支持“<”,但无法在数据中找到字符串
- ansible - 使用 Ansible 在 CentOS 7 中设置语言和时区:无法安装语言环境包
- entity-framework-core - ef core - 更新复合主键
- swift - 您可以在多个应用程序之间使用 NSPersistentCloudKitContainer 共享数据吗?
- angular - 使用 Karma 的 Angular 单元测试,测试分支或 serviceSpy () 出错