繁体   English   中英

Tensorflow nn.conv3d()和max_pool3d

[英]Tensorflow nn.conv3d() and max_pool3d

最近,Tensorflow增加了对3d卷积的支持。 我正在尝试训练一些视频内容。

我有几个问题:

我的输入是每帧16帧,3通道.npy文件,所以它们的形状是: (128, 171, 48) .npy (128, 171, 48)

1) tf.nn.max_pool3d() 文档 tf.nn.max_pool3d()输入的形状应为: Shape [batch, depth, rows, cols, channels] 即使我的npy imgs是48个深度我的频道维度仍然是3 ,可以这么说吗?

2)下一个问题与最后一个问题相吻合:我的深度是48还是16?

3) (因为我在这里)批量维度与3d数组相同,对吗? 图像就像任何其他图像一样,一次处理一个。

需要明确的是:在我的情况下,对于单个图像批量大小,上面的图像变暗,我的尺寸为:

[1(batch),16(depth), 171(rows), 128(cols), 3(channels)]

编辑:我把原始输入大小与池和内核大小混淆了。 也许对这些3D东西的一些一般指导会有所帮助。 我基本上坚持卷积和汇集的维度,正如原始问题中所清楚的那样。

要回答您的问题,维度应该是(如您所述): [batch_size, depth, H, W, 3]其中depth是您拥有的时间帧数。

例如,具有20帧/秒的5s视频将具有depth=100


我最好的建议是首先从大约深度学习的视频CS231n读幻灯片在这里 (如果你能看到的视频 ,它甚至更好)。

基本上,3D卷积与2D卷积相同,但具有一个维度。 我们来回顾一下:

1D卷积(例如:文本):

  • 输入的形状[batch_size, 10, in_channels]
  • 内核的形状[3, in_channels, out_channels]
  • 例如:对于文本,这是一个长度为10的句子,其中嵌入了暗淡的in_channels
  • 内核用大小为3的内核遍历句子(dim 10)

2D卷积(例如:图像):

  • 输入的形状[batch_size, 10, 10, in_channels]
  • 内核的形状[3, 3, in_channels, out_channels]
  • 例如:大小为10x10的RGB图像, in_channels=3
  • 内核使用大小为3的内核遍历图像(昏暗10x10)
  • 内核是在图像上滑动的正方形

3D卷积(例如:视频)

  • 输入的形状[batch_size, T, 10, 10, in_channels]
  • 内核的形状[T_kernel, 3, 3, in_channels, out_channels]
  • 例如: T=100帧的视频,大小为10x10的图像, in_channels=3
  • 内核遍历视频(昏暗的100x10x10),内核大小为T_kernel (例如: T_kernel=10
  • 内核就像一个立方体,滑过视频的“立方体”(时间* W * H)

卷积的目标是减少由于数据冗余而导致的参数数量。 对于图像,您可以在左上角3x3框和右下角3x3框中提取相同的基本功能。

对于视频,这是相同的。 您可以从图像的3x3框中提取信息,但是在一个时间范围内(例如:10帧)。 结果将在图像维度中具有3x3的感知域,并且在时间维度上具有10帧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM