python - ValueError:layersequential_1 的输入 0 与 layer 不兼容::预期 min_ndim=4,发现 ndim=3。收到的完整形状:[无、256、256]
问题描述
在我将图像转换为灰度之前,一切都很好。所以 rgb 的形状(256, 256, 3)
只是灰度有(256, 256)
。当我喂它时,我得到了那个错误。
network = Sequential()
network.add(Convolution2D(32, kernel_size=(3, 3),strides=1,activation='relu',input_shape=(256, 256)))
network.add(MaxPooling2D((2, 2)))
# network.add(Convolution2D(32, kernel_size=(3, 3), strides=1, activation='relu'))
# network.add(MaxPooling2D((2, 2)))
network.add(Convolution2D(64, kernel_size=(3, 3), strides=1, activation='relu'))
network.add(MaxPooling2D((2, 2)))
# network.add(Convolution2D(64, kernel_size=(3, 3), strides=1, activation='relu'))
# network.add(MaxPooling2D((2, 2)))
network.add(Convolution2D(128, kernel_size=(3, 3), strides=1, activation='relu'))
network.add(MaxPooling2D((2, 2)))
# network.add(Convolution2D(128, kernel_size=(3, 3), strides=1, activation='relu'))
# network.add(MaxPooling2D((2, 2)))
network.add(Flatten())
network.add(Dense(256, activation = 'relu'))
network.add(Dense(2, activation = 'softmax'))
checkpoint_path = os.path.join("/---------/grayscale", "weights.best.hdf5")
checkpoint = ModelCheckpoint(checkpoint_path, monitor='val_accuracy', verbose=1, save_best_only=True, mode='max')
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=10)
callbacks_list = [checkpoint, es]
network.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
解决方案
您必须在网络中提供形状为 256x256x1 的图像。
要将您的首字母x_train
转换为新的X_train
:
X_train=np.reshape(x_train,(x_train.shape[0], x_train.shape[1],x_train.shape[2],1))
最后将您的 input_shape 从更改input_shape=(256,256)
为input_shape=(256,256,1)
推荐阅读
- node.js - Mongodb日志泛滥
- c# - Slack 消息与 c# 的集成
- reactjs - WebpackError:未定义窗口
- c - 在给定数字 N 之后将列更改为行
- java - 在我关闭屏幕后,我的应用程序的活动有时会进入后台
- react-native - 如何在本机基础中将 Tab 更改为 RTL?
- .net - 如何在 LabVIEW 中清理 Viewpoint XLSX 工具包的已用内存?
- r - 如何在 R 和 h2o 中使用预训练的 word2vec hex 文件
- algorithm - 求解器与系统搜索的约束满足问题
- angularjs - 需要帮助在 AWS 上的无服务器架构中部署 angularjs 1.5 应用程序