Aviso: Este artigo é um artigo blogger original, siga o CC 4.0 BY-SA acordo de direitos autorais, reproduzido, por favor anexar o link da fonte original e esta declaração.
Este link: https://blog.csdn.net/computerme/article/details/80836060
----------------
BN tem sido amplamente utilizada no resultado CNN de hoje em tensorflow através do tf.layers.batch_normalization()
uso BN esta op. As peles op de da BN média beta var alfa parâmetros declarou explicitamente, por isso, a formação e implantação de testes precisam prestar atenção para o uso adequado dos recursos BN postura.
### BN uso adequado de formação
Note-se que os tf.layers.batch_normalization(x, training=is_training,name=scope)
parâmetros de entrada training=True
. Além do treinamento precisa ser adicionado no parâmetro de ordem em cada treinamento após a atualização da BN .update_ops
= Update_ops tf.get_collection (tf.GraphKeys.UPDATE_OPS) com tf.control_dependencies (update_ops): # garantir train_op novamente executado após update_ops execução. train_op = optimizer.minimize (perda)
### salva corretamente modelo com o BN
modelo de poupança não só pode poupar tempo trainable_variables
, porque os parâmetros não pertencem a BNtrainable_variables
. Para maior comodidade, você pode usar tf.global_variables()
. Utilize gestos como segue
poupança = tf.train.Saver (var_list = tf.global_variables ()) savepath = saver.save (sess, ' here_is_your_personal_model_path')
### modelo com uma leitura correta da BN
é semelhante à preservação, quando as variáveis de leitura precisa Global_Variables . Da seguinte forma:
poupança = tf.train.Saver () ou protecção de = tf.train.Saver (tf.global_variables ()) saver.restore (sess, ' here_is_your_personal_model_path ' )
PS: tempo de inferência também precisa tf.layers.batch_normalization(x, training=is_training,name=scope)
aqui training
paraFalse