繁体   English   中英

我该如何解决这个与 Keras 的 Conv2D 相关的问题?

[英]How can I fix this problem related to Conv2D of Keras?

我创建了以下神经网络:

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:层“conv2d”的输入 0 与层不兼容:预期 min_ndim = 4,发现 ndim = 3。 已收到完整形状:(无、4、12)

我该如何解决这个问题?

如果您计划使用Conv2D层,请确保您的输入形状为 3D,不包括批量大小。 当前您有一个 2D 输入形状。 还要确保激活 function 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"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM