2

tf.layers.batch_normalizationのドキュメントには、将来のバージョンで削除され、tf.keras.layers.BatchNormalizationに置き換える必要があると書かれていますが、tensorflow の低レベル API を使用して機能を置き換える方法が見つかりません。

import tensorflow as tf
bn = tf.layers.batch_normalization(tf.constant([0.0]), training=True)
print(tf.get_collection(tf.GraphKeys.UPDATE_OPS))

出力:

[<tf.Operation 'batch_normalization/AssignMovingAvg' type=AssignSub>,
<tf.Operation 'batch_normalization/AssignMovingAvg_1' type=AssignSub>]

ドキュメントで提案されているように、代わりに keras を使用する場合

bn = tf.keras.layers.BatchNormalization(axis=-1)(tf.constant([0.0]), training=True)

空の出力が得られます。

[]

UPDATE_OPS が空であるため、モデルは keras を使用したトレーニング中にバッチ正規化の moving_avg_mean と moving_avg_variance を更新できません (その結果、より大きなテスト エラーが発生します)。これを解決する方法についての提案は大歓迎です!

上記の例は、tf.layers.batch_normalizationの使用方法に関する古い投稿から取得したものです。

4

0 に答える 0