首页 > 解决方案 > TimeDistributed(BatchNormalization)与 BatchNormalization

问题描述

BatchNormalization 和 TimeDistributed(BatchNormalization) 对顺序数据(例如视频)是否具有相同的效果?如果不是,有什么区别?

标签: pythonkerasdeep-learningneural-network

解决方案


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 )即每个时间步长。


推荐阅读