python - Keras Conv2D - ValueError:层顺序的输入0与层不兼容::预期的min_ndim = 4,发现ndim = 3
问题描述
我知道,已经有一些这样的问题,但我找不到任何解决这个问题的方法。
我创建了一个这样的模型:
def CreateModel(optimizer=optimizer, loss=loss, learn_rate=learn_rate, activity_regularizer=activity_regularizer):
model = keras.Sequential([
keras.layers.Conv2D(32,3,input_shape=(9,21,1)),
keras.layers.Flatten(),
keras.layers.Dense(32, activation='relu', kernel_initializer=keras.initializers.RandomUniform(maxval=1, minval=0), bias_initializer=keras.initializers.Zeros(), activity_regularizer=activity_regularizer),
keras.layers.Dense(2, activation='softmax', kernel_initializer=keras.initializers.RandomUniform(maxval=1, minval=0), bias_initializer=keras.initializers.Zeros(), activity_regularizer=activity_regularizer)
])
model.compile(optimizer=optimizer,
loss=loss,
metrics=['accuracy', keras.metrics.FalseNegatives(), keras.metrics.FalsePositives(), keras.metrics.Precision(), keras.metrics.Recall()])
return model
我的输入由 300 个 9x21 灰度图像组成。
如果没有 Conv2D 层,它工作得非常好。但是有了这个 Conv2D 层,我得到了错误:
ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3
我还尝试了其他一些 input_shapes,例如:
keras.layers.Conv2D(32,3,input_shape=(300,9,21,1))
keras.layers.Conv2D(32,3,input_shape=(300,9,21))
但没有成功。
谢谢刺
解决方案
刺,
只需确保为模型提供 [n_items,9,21,1] 形状的数据即可。利用data = tf.expand_dims(data, axis =-1)
或者先添加 Reshape 图层:
tf.keras.layers.Reshape((9,21,1), input_shape=(9,21))
推荐阅读
- google-bigquery - 在 Java 中创建 Bigquery 数据集时如何指定位置
- typescript - 如何扩展从“nest-keycloak-connect”导入的 AuthGaurd 类
- windows - 如何检测 FormClosing 事件是否来自用户 [X] 按钮单击?
- json - 使用 VBA 将 Json 解析为 Excel 的最快方法
- javascript - 如何过滤出一个字符串数组?
- json - 如何过滤具有多个条件的值?
- r - 使用 brms 包中的 ranef() 提取随机效应
- android - 我在切换状态应用程序开发 Facebook 时遇到 1 个问题(Facebook 登录当前不可用)
- javascript - 遍历PHP中的JSON字符串?
- javascript - Mozilla Firefox 打印模态数据以及要打印的 div