2016-07-04 172 views
1

私はthe interactive demo in tensorflowを見ていました。彼らはトグルすることができるテストとトレーニングの別々のプロットを持っているようです。例えば、それらは、テストや電車のために別々の精度があります。インタラクティブなデモのように、TensorBoardのテストとトレーニングのための個別のカーブを作成するにはどうすればよいですか?

enter image description here

を、もう一方はそれらを切り替えることができます:

enter image description here

を彼らも、別々のパーセンタイル(HIST)もグラフいる:

enter image description here

TensorFlowコードとはそのような便利な機能を提供しますか?


私はテストと列車の両方のエラーを抱えていましたが、そのようなプロットはありません。これは私が試したものです:

with open(path+errors_pretty, 'w+') as f_err_msgs: 
    with tf.Session() as sess: 
     merged = tf.merge_all_summaries() 
     writer = tf.train.SummaryWriter(tensorboard_data_dump, sess.graph) 

     sess.run(tf.initialize_all_variables()) 
     for i in xrange(steps): 
      ## Create fake data for y = W.x + b where W = 2, b = 0 
      #(batch_xs, batch_ys) = get_batch_feed(X_train, Y_train, M, phase_train) 
      feed_dict_batch = get_batch_feed(X_train, Y_train, M, phase_train) 
      ## Train 
      if i%report_error_freq == 0: 
       (summary_str_train,train_error) = sess.run(fetches=[merged, l2_loss], feed_dict=feed_dict_train) 
       (summary_str_test,test_error) = sess.run(fetches=[merged, l2_loss], feed_dict=feed_dict_test) 
       writer.add_summary(summary_str_train, i) 

       loss_msg = "Model *%s%s*, step %d/%d, training error %g, test error %g \n"%(model,nb_hidden_layers,i,steps,train_error,test_error) 
       mdl_info_msg = "Opt: %s, BN %s, After %d/%d iteration, Init: %s \n" % (optimization_alg,bn,i,steps,init_type) 
       print_messages(loss_msg, mdl_info_msg) 
       # store results 
       results['train_errors'].append(train_error) 
       results['test_errors'].append(test_error) 
       # write errors to pretty print 
       f_err_msgs.write(loss_msg) 
       f_err_msgs.write(mdl_info_msg) 
       # save mdl 
       #save_path = saver.save(sess, path+'/tmp_mdls/model.ckpt',global_step=i) 
       if mdl_save: 
        save_path = saver.save(sess, path+mdl_dir+'/model.ckpt',global_step=i) 
      sess.run(fetches=[merged,train_step], feed_dict=feed_dict_batch) 
      #sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

答えて

4

テンソルボードは、フロントエンドを整理するために、ログフォルダ構造を利用しています。これは少し厄介ですが、二つの別々の精度が

以下
 with open(path+errors_pretty, 'w+') as f_err_msgs: 
with tf.Session() as sess: 
    merged = tf.merge_all_summaries() 
    ***train_writer = tf.train.SummaryWriter(tensorboard_train_data_dump, sess.graph)*** 
    ***test_writer = tf.train.SummaryWriter(tensboar_test_data_sump, sess.graph)*** 

    sess.run(tf.initialize_all_variables()) 
    for i in xrange(steps): 
     ## Create fake data for y = W.x + b where W = 2, b = 0 
     #(batch_xs, batch_ys) = get_batch_feed(X_train, Y_train, M, phase_train) 
     feed_dict_batch = get_batch_feed(X_train, Y_train, M, phase_train) 
     ## Train 
     if i%report_error_freq == 0: 
      (summary_str_train,train_error) = sess.run(fetches=[merged, l2_loss], feed_dict=feed_dict_train) 
      (summary_str_test,test_error) = sess.run(fetches=[merged, l2_loss], feed_dict=feed_dict_test) 
      ***train_writer.add_summary(summary_str_train, i) 
      test_writer.add_summary(summary_str_test, i)*** 

      loss_msg = "Model *%s%s*, step %d/%d, training error %g, test error %g \n"%(model,nb_hidden_layers,i,steps,train_error,test_error) 
      mdl_info_msg = "Opt: %s, BN %s, After %d/%d iteration, Init: %s \n" % (optimization_alg,bn,i,steps,init_type) 
      print_messages(loss_msg, mdl_info_msg) 
      # store results 
      results['train_errors'].append(train_error) 
      results['test_errors'].append(test_error) 
      # write errors to pretty print 
      f_err_msgs.write(loss_msg) 
      f_err_msgs.write(mdl_info_msg) 
      # save mdl 
      #save_path = saver.save(sess, path+'/tmp_mdls/model.ckpt',global_step=i) 
      if mdl_save: 
       save_path = saver.save(sess, path+mdl_dir+'/model.ckpt',global_step=i) 
     sess.run(fetches=[merged,train_step], feed_dict=feed_dict_batch) 
     #sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

のように2つのフォルダに二つの別々の要約ライターを持ってもらうために、これはその周りの仕事はあなたに2「実行」を与えるです。私はあなたが下のイメージで見ることができるようにこれを自分でやった。紫色の線は、異なるエポックでの訓練の精度に対応し、茶色の線は、異なるエポックでの確度の精度に対応する。これがあなたのお役に立てば幸いです:)

Train and test accuracy

+0

今私は2つの 'sess.run()'テスト用との列車のための1つを持っているし、彼らは両方の要約文字列を与えます。対応する文字列を対応するライターに渡すだけですか?私は自分の質問を小さなコードのクリップで更新して、自分が何をしているのかを見分けることができます。多分実用的な例がどのように機能するかを見るためにいくつかのコードを提供していますか?その作家を正しく訴える方法がわかりません。 – Pinocchio

+0

@Pinocchioあなたが与えたコードに基づいて、私はこれを反映する答えを更新しました。私が作ったコードの変更は***でマークされています。 – Kashyap

+0

答えにプロットを提供するコードを入力してください。あなたが提案した変更を加えましたが、今度は 'tensorboard_train_data_dump'と' tensorboard_test_data_dump'という名前のテンソルボード用の2つのフォルダがあります。今私は1つの 'tensorboard --logdir =/tmp/mdl_logs_train'を実行していますが、1つの画面で両方の代わりに1つの実行結果しか見ることができません。あなたはテンソルボードに2つのランがあり、それらをブラウザで組み合わせるべきだとどのように指示しますか? – Pinocchio

関連する問題