我知道,已经有类似这样的问题,但是我找不到针对该问题的任何解决方案。
我创建了一个这样的模型:
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
我也尝试了其他输入法,例如:
keras.layers.Conv2D(32,3,input_shape=(300,9,21,1))
keras.layers.Conv2D(32,3,input_shape=(300,9,21))
但没有成功。
谢谢 皮刺
答案 0 :(得分:1)
P子
只需确保为模型提供[n_items,9,21,1]形状的数据即可。使用data = tf.expand_dims(data, axis =-1)
或者先添加“重塑”图层:
tf.keras.layers.Reshape((9,21,1), input_shape=(9,21))