如何解决与Keras的Conv2D相关的问题



我创建了以下神经网络:

model = keras.Sequential()
model.add(layers.Conv2D(3, (3,3), activation="relu", padding="same", input_shape=constants.GRID_SHAPE))
model.add(layers.MaxPooling2D((3,3)))
model.add(layers.Flatten())
model.add(layers.Dense(constants.NUM_ACTIONS), activation="softmax")

其中constants.GRID_SHAPE是(4,12(。

我得到以下错误:

ValueError:层"的输入0;conv2d";与层不兼容:应为min_ndim=4,实际为ndim=3。收到完整形状:(无,4,12(

如何解决此问题?

如果您计划使用Conv2D层,请确保您有一个不包括批量大小的3D输入形状。当前您有一个二维输入形状。还要确保激活函数softmaxDense层的一部分:

import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(3, (3,3), activation="relu", padding="same", input_shape=(4, 12, 1)))
model.add(tf.keras.layers.MaxPooling2D((3,3)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(5, activation="softmax"))

如果输入数据的形状为(samples, 4, 12),则可以使用data = tf.expand_dims(data, axis=-1)为数据添加额外的维度,使其与Conv2D层兼容。

如果你不想添加新的维度,你也可以简单地使用Conv1D层:

import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv1D(3, 3, activation="relu", padding="same", input_shape=(4, 12)))
model.add(tf.keras.layers.MaxPooling1D(3))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(5, activation="softmax"))

相关内容

  • 没有找到相关文章

最新更新