python - TimeDistributed(BatchNormalization)与 BatchNormalization
问题描述
BatchNormalization 和 TimeDistributed(BatchNormalization) 对顺序数据(例如视频)是否具有相同的效果?如果不是,有什么区别?
解决方案
在tf.keras.layers.TimeDistributed的文档中,您会注意到,
>> inputs = tf.keras.Input(shape=(10, 128, 128, 3))
>> conv_2d_layer = tf.keras.layers.Conv2D(64, (3, 3))
>> outputs = tf.keras.layers.TimeDistributed(conv_2d_layer)(inputs)
>> outputs.shape
基本上,包裹的层TimeDistributed
将应用于每个时间步。这意味着,在上面的代码示例中,一个Conv2D
层位于所有 10 个时间步的下方。这同样适用于BatchNormalization
.
TimeDistributed
如果我们直接应用层而不是层,则将BatchNormalization
计算所有 10 个时间步长的平均值和方差作为一个整体。然而,BatchNormalization
包裹在TimeDistributed
层中的将计算形状批次的均值和方差,( 1 , 128 , 128 , 3 )
即每个时间步长。
推荐阅读
- scala - 如何为组件“将数据写入 HDFS 目录”编写 Scala 测试
- next.js - 在 NextJS 前端显示来自 Strapi API 的多个图像
- pandas - Pandas Pivot Table Repeating 1 Level of Index with No Rows
- javascript - 为什么我的输入过滤器不起作用?
- c# - 我应该使用 Sum 方法和 Count/Length 找到最接近所有元素中间值的数组元素吗?
- c# - 从 List 替换类中的属性值
价值观 - visual-studio-2019 - 如何为多行指令添加缩进?
- sql - 在 SQL Server 执行命令中设置参数
- python - 有没有办法使用给定目录中的 numpy.genfromtxt 从 csv 读取数据?
- amazon-web-services - 如何在容器中运行 AWS SAM CLI,因为它需要运行“docker”守护程序?