keras - 具有非常不同的输入和输出维度的卷积网络
问题描述
如果我的 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" 因为那样你会丢失像素的空间上下文。
提前致谢。我希望这很清楚。
解决方案
推荐阅读
- python - 使用rest api调用使用python创建一个新的jenkins slave
- python-3.x - 你如何将分数转换为浮点数
- hdl - RawModule 是否仅适用于 Top 连接?
- python - 使用预训练的卷积网络作为 GAN 鉴别器
- postgresql - 如何在 AWS Amazon Linux AMI 2 上安装 PostgeSQL 11?
- html - 视图刀片中的 Laravel 嵌套选择和条件语句
- apache-flink - 在 Flink SQL 中使用 SQL 客户端时,我们如何使用查询配置?
- python - 在 sklearn NearestNeighbor 中使用每个邻居一次
- android - 无法解析符号“RTCPeerConnection()”
- php - 使用来自所有 WordPress 页面的查询检索数据