Keras CNN图像输入输出

数据挖掘 喀拉斯 张量流 美国有线电视新闻网
2022-02-01 23:49:10

我正在尝试建立一个类似于这样的 CNN:

图1

为此,我选择使用 Keras,因为我之前使用过它(仅限简单的 RNN 和 FFNN)。我的训练数据包括输入数据(25 x 25px 图像)和输出,也是 25 x 25px 图像。问题是,我不知道如何使用 Keras 构建模型。如何将输出指定为与输入相同的形状?

这是我到目前为止所拥有的:

batch_size = 5
input_shape = (batch_size, 28, 28,  32)

model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5), strides=(1, 1),
                 activation='relu',
                 input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1000, activation='relu'))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(32, kernel_size=(5, 5), strides=(1, 1),
                 activation='relu',
                 input_shape=input_shape))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01),
              metrics=['accuracy'])

我知道,代码不会那样工作。我只是想澄清我正在尝试做的事情。上面的代码摘自:Keras 教程——用 11 行代码构建卷积神经网络

到目前为止,我只是试图从这一点反转代码,本教程将输出给定图像的预测标签,以将结果转换回想要的输出图像。

1个回答

我知道这个问题是前一段时间被问到的。我看了一下图表和示例代码。首先,示例代码很遥远。这是帮助那些好奇如何理解图表的描述。

该图(架构)仅显示了 CNN 的前端。这就是卷积层。左侧是一系列 VGG 卷积块。右侧的链接是 VGG 卷积块之间的恒等链接,它们在被矩阵添加到卷积块的输出之前通过自己的卷积。在身份链接上添加卷积使其成为 ResNet 架构的变体。

UV 224x224x2 将是卷积前端的输出。然后将其展平并传递到 DNN 层。