首页 > 解决方案 > 具有非常不同的输入和输出维度的卷积网络

问题描述

如果我的 CNN 的输入有大小为 [NxNxN] 的 3D 图像,而我的 CNN 的输出有大小为 [NxN] 的 2D 图像,那么(在 Keras 中)构建网络的好方法是什么?可以将其视为每个输入是一组大小为 [NxN] 的 N 个 2D 图像,而输出是单个 [NxN] 图像。

可以通过网络传播输入图像大小,并使输出图像与输入图像大小相同,但将大部分输出图像训练为 0,并且只使用输出的一个 [NxN] 切片。但这对我来说在计算上似乎很昂贵。我要说的是,网络可以由 Keras Conv3D 层组成,每个层都有 padding='same'。然后,输出维度将是 [NxNxN],但实际上,只有 [1xNxN] 将用于输出。

我想我想做的是在数据通过网络时缩小数据的一个维度,并保持其他两个维度相同。这样一来,与通过网络保持所有维度相同相比,您需要调整的权重更少,并且学习速度更快。例如,如果网络输入是 [50x50x50],并且您可以在 2 维上设置 padding='same',在另一维上设置 padding='valid',那么您可以在图像通过时将其缩小为一维通过网络。假设您使用的是大小为 7x7x7 的内核。然后经过一个假设的 Conv3D 层后,图像将是 [47x50x50]。在 10 个这样的层之后,图像大小将是 [20x50x50]。等等。

这样的事情可行吗?关于如何做到这一点的任何其他想法?我不想在所有维度上都使用 padding='valid" 因为那样你会丢失像素的空间上下文。

提前致谢。我希望这很清楚。

标签: kerasneural-networkconv-neural-network

解决方案


推荐阅读