怎樣在tensorflow中使用batch normalization?

時間 2021-05-30 04:42:02

1樓:HelloSeeing

slim中有slim.batch_norm函式可以直接呼叫,絕大部分層定義函式(比如slim.conv2d, slim.

maxpool_2d)都有normalizer_fn這個引數,可以用arg_scope快速整理所有的這些層預設使用bn

2樓:

What is right batch normalization function in Tensorflow?

這個Stack Overflow回答詳解了目前tensorflow中所有的batch normalization用法,其中推薦使用的high-level API是tf.layers.batch_normalization。

如果想用low-level API自己寫函式,則用tf.nn.batch_normalization即可。

3樓:快跑啊小女孩

看書澆花曬太陽 的資料裡邊很詳細偷懶就直接tf.layers.batch_normalization 訓練時候引數training=True 加上with control_dependencies 就自動儲存了移動mean和variance test的時候training=False全自動使用

4樓:yinnxinn

設定batch_norm函式中的引數updates_collections值為None

updates_collections: Collections to collect the update ops for computation. The updates_ops need to be executed with the train_op.

If None, a control dependency would be added to make sure the updates are computed in place.

或者用樓上兄弟的那個了

5樓:clks-wzz

使用slim.batch_norm(input,is_training=True)

還要加下面這幾句話。

不知道說的對不對,如果有錯誤,請大家指正。

6樓:ho點點

首先,version 1有問題。

其次,contrib.layers和slim裡的bn是完全一樣的。看看slim的__init__。

再次,于洋的train_phase是是否在training的tag。

最後,slim的bn肯定沒問題,但不是直接呼叫下就完事了,你若只呼叫下,會發現acc上下起伏,連綿不絕。。。moving_mean 和 moving_variance是需要更新的,利用control_dependencies保證每次訓練前更新一下。所以思路上我覺得于洋的回答可用。

若要直接呼叫slim的bn,你的update_op要和train_op保證乙個dependency。

最最後,多看tf的官方文件,bn怎麼用,寫的還是很清楚的。

7樓:

martin-gorner/tensorflow-mnist-tutorial, 這裡有使用batch normalization的示例

在VS code中 使用Jupyter notebook如何拆分cell?

jerry hao 這個問題的答案是這樣的 vscode從1.46版開始引進了一種叫Notebook的文件,主要是用來處理github的Issue,他看起來很像Jupyter Notebook,但後者目前是通過vscode python外掛程式來支援的。你說的那個拆分單元格是為Notebook文件用...

怎樣在scala正規表示式提取器中使用小括號?

夏梓耀 scala valD 0 1 9 d d rD scala.util.matching.Regex 0 1 9 d d scala valD a b 1.2 a String 1 b String 2 target Any Option List String target match pr...

該怎麼在Mathematica中使用牛頓迭代法呢?

cvgmt 如果還是用 For,While,Do 這些過程式手法,那還是別用 Mathematica 了。因為不會有進步的。下面是其中一種最基本的做法。f x 2 x 2 5 x 1 NestList f f 0.20 四零七 牛頓法有很多變種,這裡只用最基礎的牛頓法。要求解 基本步驟就是先假設乙個...