TimeDistributed(BatchNormalization) 与 BatchNormalization

And*_*ndy 3 python neural-network deep-learning keras

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

Shu*_*hal 5

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 
Run Code Online (Sandbox Code Playgroud)

基本上,包裹在其中的层TimeDistributed将应用于每个时间步。意思是,在上面的代码示例中,一个Conv2D层被放置在所有 10 个时间步的下方。这同样适用于BatchNormalization.

TimeDistributed如果我们BatchNormalization直接应用一个层而不是层,则将计算所有 10 个时间步的均值和方差作为一个整体。而BatchNormalization包裹在TimeDistributed层中的 a将计算形状批次的均值和方差,( 1 , 128 , 128 , 3 )即每个时间步长。