2017-05-03 7 views
0

分散テンソルのロジスティック回帰を開発しようとしています。反復の上限から離れて、私のアルゴリズムでコンバージェンスチェックを統合したいと思います。私が使用しようとしているコンバージェンス基準は、分布テンソルのロジスティック回帰におけるコンバージェンス

|| prevW - currW || < E

ここで、prevWはモデル加重の以前の値であり、現在の値はcurrWです。 Eは収束公差である。

私の質問は以前のモデルの重量です。私はグラフのレプリケーションと非同期トレーニングの間に使用しているので、クラスタの作業者がいつウェイトを更新するのか分かりません。従業員がバッチを使用して新しいウェイトを計算し、アルゴリズムが収束したかどうかを確認したいとします。ローカルレプリカで利用可能な重みを使用します(対応するテンソルを使用してください)、または現在の計算を続行する前にテンソルを評価して最後の更新値を取得しますか?私は上記のようにしようとしましたが、アルゴリズムは収束せず、反復の上限に達した後に停止しました。

は、あなたの助けのために事前にありがとう:D

答えて

0

私は変数は、同じデバイスで収束チェックを行うだろう。こうすることで、ネットワーク上でたくさんのものをコピーすることを避けることができます。これはwith tf.device(variable.device):ブロックに入れることで可能です。

+0

ありがとうございました! :)私の場合、変数はパラメータサーバに格納されています。前回の重みは、コンバージェンスが計算されたことを確認しようとしている作業者、または他の作業者によって変更された可能性のあるpsに最後に格納されたものと考えることができます。 ? – nikospro93

+0

私はそれが実験的に決定されるべきアルゴリズムの問​​題だと思う(つまり、両方を試して、どれがより堅牢であるかを見てください)。確率的な勾配を伴う収束テストは、動きのない勾配を見ることが動きにつながる勾配を決して見ないことを意味するわけではないので、扱いにくいことがあります。 –

関連する問題