Pythonでグラフを作成
- 2017.07.09
- Neural Network Python
機械学習を試していると、損失関数の値を確認したくなることがあります。
csv等に保存してExcelでグラフを作ってもいいのですが、それは面倒なので、
プログラム内でグラフを表示させるようにします。
使用するのはmatplotlibというライブラリです。
特にインストールしなくても使えたのでAnacondaには最初から入っているのかもしれません。
以下プログラム。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt input=np.array([[0,0],[1,0],[0,1],[1,1]]) output=np.array([[1],[1],[1],[0]]) x=tf.placeholder("float",[None,2]) y_=tf.placeholder("float",[None,1]) w1=tf.Variable(tf.truncated_normal([2,2])) b1=tf.Variable(tf.truncated_normal([2])) h=tf.nn.relu(tf.matmul(x,w1)+b1) w2=tf.Variable(tf.truncated_normal([2,1])) b2=tf.Variable(tf.truncated_normal([1])) y=tf.nn.sigmoid(tf.matmul(h,w2)+b2) cross_entropy=-tf.reduce_sum(y_*tf.log(y)+(1-y_)*tf.log(1-y)) train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) sess=tf.Session() sess.run(tf.global_variables_initializer()) loss=[] epochs=10000 for step in range(epochs): sess.run(train_step,feed_dict={x:input,y_:output}) loss.append(sess.run(cross_entropy,feed_dict={x:input,y_:output})) if step % (epochs/10)==0: print (sess.run(cross_entropy,feed_dict={x:input,y_:output})) prob=y.eval(session=sess,feed_dict={x:input}) print (prob) fig=plt.figure() plt.plot(range(epochs),loss,color="red") plt.xlabel("epochs") plt.ylabel("loss") plt.show() |
機械学習の内容は何でも良かったのですが、とりあえず今回は
簡単なニューラルネットワークでNAND回路の学習をしてみました。
最後の数行がグラフを作成するためのコードです。
必要最小限のものしか書いていませんので非常に短いですが、
ちょっと確認したいだけならこれだけも十分です。
このようなグラフがあると学習回数は何回くらいがいいのか、視覚的にわかるので便利です。
-
前の記事
3Dプリンタ ダヴィンチ mini wレビュー 2017.04.29
-
次の記事
【TensorFlow】リカレントニューラルネットワーク(GRU)で為替レートを予測【FX】 2017.07.17