keras - 将keras中的conv2d逐帧应用于视频输入
问题描述
我想将 Conv2D 和 AveragePooling2D 分别应用于 Keras 中的视频输入的每一帧。视频大小为 (60,32,32,3) - 60 个时间帧,32x32 帧大小和 3 个颜色通道。
model = Sequential()
model.add(Conv2D(16,3, input_shape = (60,32,32,3), activation = 'relu'))
model.add(AveragePooling2D(pool_size = 2))
上面的代码给出了以下错误:
ValueError: Input 0 of layer average_pooling2d_10 is incompatible with the layer: expected
ndim=4, found ndim=5. Full shape received: (None, 45, 30, 30, 16)
有什么办法解决这个问题?谢谢。
解决方案
如果输入是视频,那么最好将 Timedistributed 层与 Conv2D 一起使用。
考虑一批 16 个视频样本,其中每个样本是32x32 RGB
具有 channels_last 数据格式的图像,跨越 60 个时间步长。批量输入形状为(16, 60, 32, 32, 3)
。
然后,您可以使用 TimeDistributed 将相同的 Conv2D 层分别应用于 60 个时间步长中的每一个:
inputs = tf.keras.Input(shape=(60, 32, 32, 3))
conv_2d_layer = tf.keras.layers.Conv2D(64, (3, 3))
outputs = tf.keras.layers.TimeDistributed(conv_2d_layer)(inputs)
推荐阅读
- c# - 将 C openssl TripleDes 加密转换为 .NET
- python-3.x - 如何选择此按钮并单击它?
- regex - 正则表达式匹配州法规格式
- kubernetes - kubernets:daemonset:OnDelete 策略未按预期工作
- python - 索引与 python 列表的 numpy 数组的工作方式不同
- ios - CAEmitterLayer 动画在 tableview 单元格拖放重新排序后不出现
- javascript - 如果我在最新版本的 Angular 中构建组件,该组件是否可以被使用早期 Angular 版本构建的应用程序使用?
- r - 获取一段时间内的累积值计数
- hibernate - 有没有办法将自然键作为应用程序上下文的键?
- html - 有没有办法对齐按钮,使其不会一直向右?