学習率を選択 - 移動平均

ニューラルネットワークモデルでは、0.99 MOVING_AVERAGE_DECAYは、パラメータW1が0に設定され、平均値W1を移動提供
0に設定されています。
開始①、global_step車輪の数が0に設定され、パラメータが1 W1に更新され、平均実行W1である:
W1移動平均=分(0.99,1 / 10)* 0 +(1-分(0.99,1 / 。10)* = 0.9 1
車輪100が数global_step、W1パラメータ更新10に設定されている場合②は、移動平均は次のようになる。
平均=分(0.99,101 / 110)*実行W1 (0.9 +(1-分0.99,101 / 110)* 10 = 0.826 + 0.818 = 1.644
③ラン再び、1.644にパラメータW1を更新する、移動平均になる:
平均=分(0.99,101 / 110)を実行W1 * 1.644 +(1- 分(0.99,101 / 110)* 10 = 2.328
④ラン再び、2.328へW1パラメータを更新、移動平均:
W1 = 2.956平均摺動
コードは以下の通りであります:

#1 コーディング:UTF 8 
インポートAS tensorflowのTF 

1変数定義されたクラスと移動平均
#は32ビット浮動小数点変数を定義し、0.0このコードの初期値を移動平均したW1パラメータW1、W1最適化パラメータを、更新されシャドウ 
W1 tf.Variable =(0、DTYPE = tf.float32) #
 反復のNN番号)NUM_UPDATESを定義し、初期値は0であり、(訓練された)最適化されず、このパラメータが訓練されていない 
global_step = tf.Variable(0 、訓練可能= 偽)
 インスタンス化クラスの移動平均、150減衰率、global_stepラウンドの現在の数 
MOVING_AVERAGE_DECAY = 150 
EMA = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY、global_step) 平均移動
#の更新後にブラケットがema.applyでありますリスト、あなたがsess.run(ema_op)を実行するたびに、移動平均は、要素のリストを更新しようとしています。
#は、すべてのパラメータが要約リストとして訓練されるように自動的に)(実用的なアプリケーションのtf.trainable_variablesに使用されます= ema.apply ema_op([W1]) 関数のパラメータが既に辞書やタプル、間接呼び出し関数に存在する場合適用(FUNC [、引数[、kwargsから]])関数が使用されます。
= ema_op ema.apply(tf.trainable_variables()) 

2を表示異なる反復変数の値を変更します。
()セッション数ASとtf.Session:
    初期 
    tf.global_variables_initializer init_op =() は、初期化 
    (init_op)sess.runを#は、初期化計算
    として、(複数のノードとema.averageを実行する(W1)の平均値W1を移動取得をリストに記載されている要素は、中sess.run)に書き込み
    #1 印刷現在のパラメータW1及び移動平均W1 
    プリント 現在global_step:、sess.run(global_step)#1 印刷global_stepの
    印刷を 現在W1 、Sess.runは([w1が、ema.average(W1)]) は、移動平均算出
    
    #のパラメータがW1の値が割り当てられている1。 
    tf.assign(A、NEW_NUMBER):この機能は、主に値Aの関数となりますNEW_NUMBER 
    sess.run(tf.assign(W1 ,. 1 ))
    sess.run(ema_op)
    プリント " 現在global_step:" 、sess.run(global_step)
     プリント " 現在W1 " 、sess.run([W1、ema.average( W1)]) 
    
    更新global_step w1の値とは、10となるW1のパラメータは、次のコードはglobal_step 100は、移動平均動作は、シャドウ値が更新されるたびに保持され、ラウンド数は100であり、シミュレーション 
    sess.run(TFを。 (global_step、100))を割り当てる   #1 100にセットglobal_step 
    sess.run(tf.assign(W1、10))#1 セットW1は10 
    sess.run(ema_op) ファイル名を指定して実行ema_op 
    印刷 " 現在global_step:"、sess.run(global_step) 印刷
    印刷 " 現在W1:"、sess.run([W1、ema.average(W1)])  印刷      
    
    各sess.runが更新されますW1平均摺動
    sess.run(ema_op)
     プリント " :現在global_step " 、sess.run(global_step)
     プリント " 現在W1:" 、sess.run([W1、ema.average(W1)])

    sess.runを( ema_op)
    印刷 " 現在global_step:" 、sess.run(global_step)
     印刷 現在W1:"sess.run([W1、ema.average(W1)])

     
    sess.run(ema_op)プリント " 現在global_step:"sess.run(global_step)
     プリント" 現在W1:" 、sess.run([W1、 ema.average(W1)])
    sess.run(ema_op)プリント" 現在global_step:" 、sess.run(global_step)
     プリント" 現在W1:" 、sess.run([W1、ema.average(W1)])
    のSES .RUN(ema_op)プリント" 現在global_step:" 、sess.run(global_step)
     プリント" 現在W1:" 

      

      、sess.run([W1、ema.average(W1)])

    sess.run(ema_op)
    プリント " 現在global_step:" 、sess.run(global_step)
     プリント " 現在W1:"、sess.run([W1、EMA .average(W1)])

操作の結果から、初期パラメータW1及び移動平均が0であり; W1パラメータが1に設定され、移動平均値は0.9となる。
反復回数がパラメータW1 10を更新した後、100に更新されたときに、移動平均値は1.644となります。たびに、その後、パラメータ
移動平均は、パラメータW1 W1と近くにあります。可視、移動平均処理変動の変化に追従。

おすすめ

転載: www.cnblogs.com/fcfc940503/p/10961124.html