[英]What is the difference between the TensorFlow batch normalization implementations?
TensorFlow似乎實現了至少3個版本的批量規范化:
這些都有不同的論點和文檔。
這些之間有什么區別,我應該使用哪一個?
它們實際上非常不同。
nn.batch_normalization
執行基本操作(即簡單規范化) layers.batch_normalization
是一個batchnorm“層”,即它負責設置可訓練的參數等。在一天結束時,它是nn.batch_normalization
的包裝器。 這是你想要使用的那個,除非你想自己設置變量等。 例如,它類似於nn.conv2d
和layers.conv2d
之間的區別。
對於contrib
版本,我不能肯定地說,但在我看來,它似乎是一個實驗版本,其中一些額外參數在“常規” layers
不可用。
這些都基於同一篇論文: http : //arxiv.org/abs/1502.03167所以他們應該做同樣的事情。
有些函數會在代碼中移動,但舊版本會保持向后兼容性,最終會出現多個版本。
我建議使用最簡單的一個讓你做項目(即tf.nn.batch_normalization)。 如果您需要未提供的功能/參數,請選擇適合您的功能/參數。
注意:tf.contrib。*不保證保持向后兼容(api可能在將來的版本中更改)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.