conv3d 和 conv3d_transpose 的形状是什么?

数据挖掘 深度学习 张量流 美国有线电视新闻网 卷积神经网络
2021-09-26 11:00:59

我想做一个带有彩色图片的 GAN。这意味着我需要一个三维输入,因此我喜欢使用 conv3d 和 conv3d_transpose。

不幸的是,在TensorFlow 文档中,我找不到输出形状的任何公式。谁能给我一个关于如何找到函数结果形状的提示?

2个回答

尽管您的输入数据是三维的,但您必须将其Conv2D用于您的任务。我猜Conv3d是用于具有时间特征的数据,你的只是一张简单的图片。为了说明您为什么应该这样做Conv2D,假设您的输入图像是224 * 224 * 3并且您使用了Conv2D具有 10 个过滤器的层。您必须指定步幅和填充才能指定输出形状。您必须指定尺寸以说明过滤器的高度和宽度,也称为内核,如果您将填充分配给“有效”,过滤器大小将影响输出大小。在这里,有一点。假设您已指定过滤器大小为10 * 10过滤器,则如果输入形状为224 * 224 * 1,则每个过滤器的大小10 * 10 * 1将适合输入区域。现在输入的大小224 * 224 * 3每个内核的大小是10 * 10 * 3为了适应输入考虑在所有情况下,每个卷积操作的输出,更好地说是互相关,是一个标量。有关更多信息,请查看此处的视频,对于您的情况,我鼓励您观看Convolution Over Volume

按照惯例,除了输入特征图(可能是音频的 1D、典型图像的 2D、视频帧序列的 3D)之外,对于卷积网络,还有两个额外的维度:

  1. 批处理或小批量中的示例数量,甚至将单个示例计为大小为 1 的小批量)

  2. 当前层中特征图或通道的数量,甚至将单个灰度图像计算为 1 个通道的数组,或将 RGB(或其他颜色空间)图像计算为 3 个通道

因此,在您的情况下,您将需要一个conv2d层来处理图像。尺寸的精确顺序变化很大 - 检查您的库文档,并注意大多数库允许您更改与不同工具链的交叉兼容性的安排。但是典型的层输入或输出可能被安排为BatchSize×Height×Width×Channels

输入和输出维度相同(但通常大小不同),因此层可以自然地链接在一起。

您链接的文档实际上确实说明了这一点(有点,它可以更详细地解释相同性,因为数据类型和维度实际上是相同的,并且两者都可能有所不同):

回报:

与 value 具有相同类型的张量。

要在标题中回答您的问题:

conv3d 和 conv3d_transpose 的形状是什么?

它是一个 5 阶张量,尺寸为: BatchSize×Depth×Height×Width×Channels

理论上你可以将它用于你的 GAN,但你需要为形状添加(可能无用的)深度维度。