2017-03-27 3 views
0

私は以下のクロスエントロピー関数を持っています。matplotlibにグラフをプロットするために配列に値を格納する方法は?

cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv)) 
for i in range(max_training_step): 
    batch = next_batch(i) 
    if i % FLAGS.beta_resolution == 0: 
     train_accuracy = accuracy.eval(feed_dict={x: batch[0], y_: batch[1], keep_prob: 1.0}) 
     print("step %d, training accuracy %g" % (i, train_accuracy)) 

トレーニングステップごとに印刷したいと思います。そして、私はmatplotlibを使用して、グラフのb/wトレーニングステップとエントロピーをプロットしたいと思います。

どうすればいいですか? (グラフのプロットにテンソルフローを使用したくない場合)

答えて

0

セッション実行呼び出し(たとえばres=sess.run(...))を実行すると、クロスエントロピー変数のフェッチを行うことができます。

たとえば、あなたは、いくつかの予測を取得し、複雑sess.run()の呼び出しを持っているとしましょうしかし、あなたはまた、あなたのクロスエントロピーにしたいあなたは、このようなコードがあり:

`` `

feeds={x_data:x,y_data:y} 
fetches=[y_result,cross_entropy] 
res=sess.run(fetches=fetches, feed_dict=feeds) 
predictions=res[0] #your first fetch parameter 
xent=res[1] #Your second fetch parameter. 

`` 実行呼び出し内のフェッチによって、グラフからテンソルを「フェッチ」できます。

+0

トレーニングステップとクロスエントロピーを空の配列として定義してから、appendコマンドを使ってforループに値を格納すると、 – eman

+0

のようにテンソルフローを使用せずに行うことはできますか?そして、matplotlibを使ってtwo.Can間のグラフをプロットし、テンソルフローコードで動作させることができますか? – eman

+0

テンソルフローはクロスエントロピーを生成しているため、ある時点でテンソルフローを使用する必要がありますが、forループで実行するたびにクロスエントロピーをフェッチしてからyesを付けると、matplotlibなどで使用することができます。上記の例では、上記のres [1]であるクロスエントロピー(xent)は、他のPython変数と同様に配列またはxent値になります。 – JCooke

関連する問題