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
。
如果我们直接应用 BatchNormalization
层而不是 TimeDistributed
层,则将计算所有 10 个时间步长的均值和方差作为一个整体。
然而,包裹在 TimeDistributed
层中的 BatchNormalization
将计算形状为 ( 1 , 128 , 128 , 3 )
的批处理的均值和方差,即对于每个时间步。
关于python - TimeDistributed(BatchNormalization) 与 BatchNormalization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61733280/