如何在Keras中输出多维数组?

2024-10-01 13:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Keras有一个CNN,输出是一个二维边界框数组, 输出的形状是

(18, 4)

x_train shape = (None, 600, 750, 1) # grayscale
y_train shape = (None, 18, 4)

我得到以下错误:

ValueError: Error when checking target: expected dense_2 to have 2 dimensions, but got array with shape (1, 18, 4)

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, kernel_size=(3, 3), input_shape=(h, w, 1),
                           strides=(2, 2), padding="same", activation="relu"),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding="same"),
    tf.keras.layers.Dropout(0.25),

    tf.keras.layers.Conv2D(64, (3, 3), strides=(2, 2), padding="same", activation="relu"),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding="same"),
    tf.keras.layers.Dropout(0.25),

    tf.keras.layers.Conv2D(128, (3, 3), strides=(2, 2), padding="same", activation="relu"),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding="same"),
    tf.keras.layers.Dropout(0.25),

    tf.keras.layers.Conv2D(512, (3, 3), strides=(2, 2), padding="same", activation="relu"),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding="same"),
    tf.keras.layers.Dropout(0.25),

    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(1024, activation="relu"),
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(18)
])

model.compile(loss="mse", optimizer=tf.keras.optimizers.RMSprop(), metrics=["accuracy"])
model.fit(x_train, y_train, epochs=1)
model.save("trained_model.h5")

Tags: sizemodellayerstftrainactivationdropoutkeras