1. 程式人生 > >Tensorflow Batch normalization函數

Tensorflow Batch normalization函數

最大 解釋 batch tails csdn layer 出了 font .net

Tensorflow Batch normalization函數

覺得有用的話,歡迎一起討論相互學習~Follow Me

參考文獻
stackoverflow上tensorflow實現BN的不同函數的解釋

最近在運行程序時需要使用到Batch normalization方法,雖然網上有很多資料,但是說法各異而且沒有完全準確的,很多使用了Tensorflow中TF.slim高層封裝,自己不是很明白。現在我將自己搜集的資料進行整理,便於以後查閱。

關於Batch normalization

Tensorflow中實現BN算法的各種函數

  • 在tensorflow中給出了幾種實現batch-norm的方法:
  • tf.nn.batch_normalization 是一個低級的操作函數,調用者需要自己處理張量的平均值和方差。
  • tf.nn.fused_batch_norm 是另一個低級的操作函數,和前者十分相似。不同之處在於它針對四維輸入張量進行了優化,這是卷積神經網絡中的常見情況。而前者tf.nn.batch_normalization則接受任何等級大於1的張量。
  • tf.layers.batch_normalization 是對先前操作的高級包裝。最大的不同在於它負責創建和管理運行張量的均值和方差,並盡可能地調用快速融合運算。通常,這個函數應該是你的默認選擇。
  • tf.contrib.layers.batch_norm
    batch norm 的早期實現,其升級的核心API版本為(tf.layers.batch_normalization)。不推薦使用它,因為它可能會在未來的版本中丟失。
  • tf.nn.batch_norm_with_global_normalization 是另一個被棄用的操作,現在這個函數會委托給tf.nn.batch_normalization執行,在未來這個函數會被放棄。
  • keras.layers.BatchNormalization 是BN算法的Keras實現,這個函數在後端會調用Tensorflow中的tf.nn.batch_normalization函數。

Tensorflow Batch normalization函數