簡體   English   中英

TensorFlow批量規范化實現之間有什么區別?

[英]What is the difference between the TensorFlow batch normalization implementations?

TensorFlow似乎實現了至少3個版本的批量規范化:

這些都有不同的論點和文檔。

這些之間有什么區別,我應該使用哪一個?

它們實際上非常不同。

  • nn.batch_normalization執行基本操作(即簡單規范化)
  • layers.batch_normalization是一個batchnorm“層”,即它負責設置可訓練的參數等。在一天結束時,它是nn.batch_normalization的包裝器。 這是你想要使用的那個,除非你想自己設置變量等。

例如,它類似於nn.conv2dlayers.conv2d之間的區別。

對於contrib版本,我不能肯定地說,但在我看來,它似乎是一個實驗版本,其中一些額外參數在“常規” layers不可用。

這些都基於同一篇論文: http//arxiv.org/abs/1502.03167所以他們應該做同樣的事情。

有些函數會在代碼中移動,但舊版本會保持向后兼容性,最終會出現多個版本。

我建議使用最簡單的一個讓你做項目(即tf.nn.batch_normalization)。 如果您需要未提供的功能/參數,請選擇適合您的功能/參數。

注意:tf.contrib。*不保證保持向后兼容(api可能在將來的版本中更改)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM