2017-09-14 6 views
0

でtf $ summaryを使用しました。チュートリアルTensorFlow Mechanics 101を試してみましたが、次の質問があります。TensorFlow:TensorFlow Mechanics 101のチュートリアル

私はコンソールに出力された損失の値とTensorBoardによって示された損失の値との間に相違があることを発見しました。

これらが同一であることが私の理解は:

  • コンソール出力がfully_connected_feed.Rの線190によって各100番目のステップで作成され、それが損失操作に適用sess$runによりライン182上に作成を出力します。したがって、小数点以下2桁に四捨五入して、その特定のステップの損失となるはずです。
  • TensorBoardで示される値は、各100番目のステップにも適用されます。これは、ライン193で作成されたsummary_strからのライン194-195によって、tf$summary$merge_all()としてをライン147で定義されたサマリー処理に適用することによって作成されたようです。これは、mnist.Rの125行目で定義されている同じ損失だけを要約し、この操作は同じステップに適用されます。

このように、これらの2つの損失の値は、丸めるまで同一でなければなりません。

しかし、それらは近くにありますが、そうではありません。私は、学習がそれほど収束しない異なるデータについてそれらを比較しようとしました。そして、より大きな相違を発見しました。

私はTensorFlowの要約について何か基本的なことを理解していないようです。

私はRStudio Version 1.0.153、Rバージョン3.4.1を使用しています。今日はすべてのRパッケージがUbuntu 16.04に再インストールされています。

助けが必要ですか? ありがとうございます。

答えて

0

問題は、このtuturialのファイルfully_connected_feed.Rのライン183-184である:

values <- sess$run(list(train_op, loss), feed_dict = feed_dict) 
loss_value <- values[[2]] 

私は次のコードでこれらの2行を置き換える:このコードは、ように見える

sess$run(train_op, feed_dict = feed_dict) 
loss_value = sess$run(loss, feed_dict = feed_dict) 

元のコードと同等です(これは私がこの回答の以前のバージョンではthe manual for tf$Session$runを参照していると主張していますが、it is notです)。

このコードでは、問題が消えてコンソール出力と同じlossの操作のサマリー記録が同じになりました。

関連する問題