• R/O
  • HTTP
  • SSH
  • HTTPS

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

TensorFlowサンプルコード


Commit MetaInfo

修訂cbd658819edfff3a97e56d48ee984680968e5e5d (tree)
時間2018-01-18 18:32:59
作者hylom <hylom@hylo...>
Commiterhylom

Log Message

add tensorboard sample

Change Summary

差異

--- /dev/null
+++ b/tensorboard/digits_data.csv
@@ -0,0 +1,10 @@
1+0,1,1,1,1,0,1,1,0,1,1,0,1,1,1,1
2+1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0
3+2,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1
4+3,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1
5+4,1,0,1,1,0,1,1,1,1,0,0,1,0,0,1
6+5,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1
7+6,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1
8+7,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1
9+8,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1
10+9,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1
--- /dev/null
+++ b/tensorboard/tensorboard_test.py
@@ -0,0 +1,134 @@
1+#!/usr/bin/env python
2+# -*- coding: utf-8 -*-
3+
4+import tensorflow as tf
5+
6+INPUT_SIZE = 15
7+W1_SIZE = 15
8+OUTPUT_SIZE = 10
9+
10+# 入力
11+x1 = tf.placeholder(dtype=tf.float32, name="x1")
12+y = tf.placeholder(dtype=tf.float32, name="y")
13+
14+# 第2層
15+tf.set_random_seed(1234)
16+W1 = tf.get_variable("W1",
17+ shape=[INPUT_SIZE, W1_SIZE],
18+ dtype=tf.float32,
19+ initializer=tf.random_normal_initializer(stddev=0.05))
20+b1 = tf.get_variable("b1",
21+ shape=[W1_SIZE],
22+ dtype=tf.float32,
23+ initializer=tf.random_normal_initializer(stddev=0.05))
24+x2 = tf.sigmoid(tf.matmul(x1, W1) + b1, name="x2")
25+
26+# 第3層
27+W2 = tf.get_variable("W2",
28+ shape=[W1_SIZE, OUTPUT_SIZE],
29+ dtype=tf.float32,
30+ initializer=tf.random_normal_initializer(stddev=0.05))
31+b2 = tf.get_variable("b2",
32+ shape=[OUTPUT_SIZE],
33+ dtype=tf.float32,
34+ initializer=tf.random_normal_initializer(stddev=0.05))
35+x3 = tf.nn.softmax(tf.matmul(x2, W2) + b2, name="x3")
36+
37+# コスト関数
38+cross_entropy = -tf.reduce_sum(y * tf.log(x3), name="cross_entropy")
39+
40+# 最適化アルゴリズムを定義
41+optimizer = tf.train.GradientDescentOptimizer(0.01, name="optimizer")
42+minimize = optimizer.minimize(cross_entropy, name="minimize")
43+
44+## データセットを読み込むためのパイプラインを作成する
45+# リーダーオブジェクトを作成する
46+reader = tf.TextLineReader()
47+
48+# 読み込む対象のファイルを格納したキューを作成する
49+file_queue = tf.train.string_input_producer(["digits_data.csv", "test_data.csv"])
50+
51+# キューからデータを読み込む
52+key, value = reader.read(file_queue)
53+
54+# 読み込んだCSV型式データをデコードする
55+# [[] for i in range(16)] は
56+# [[], [], [], [], [], [], [], [],
57+# [], [], [], [], [], [], [], []]に相当
58+data = tf.decode_csv(value, record_defaults=[[] for i in range(16)])
59+
60+# 10件のデータを読み出す
61+# 10件ずつデータを読み出す
62+# 第1カラム(data[0])はその文字が示す数だが、
63+# ニューラルネットワークの出力は10要素の1次元テンソルとなる。
64+# そのため、10×10の対角行列を作成し、そのdata[0]行目を取り出す操作を行うことで
65+# 1次元テンソルに変換する。dataは浮動小数点小数型なので、このとき
66+# int32型にキャストして使用する
67+data_x, data_y, y_value = tf.train.batch([
68+ tf.stack(data[1:]),
69+ tf.reshape(tf.slice(tf.eye(10), [tf.cast(data[0], tf.int32), 0], [1, 10]), [10]),
70+ tf.cast(data[0], tf.int64),
71+], 10)
72+
73+# セッションの作成
74+sess = tf.Session()
75+
76+# 変数の初期化を実行する
77+sess.run(tf.global_variables_initializer())
78+
79+# コーディネータの作成
80+coord = tf.train.Coordinator()
81+
82+# キューの開始
83+threads = tf.train.start_queue_runners(sess=sess, coord=coord)
84+
85+# ファイルからのデータの読み出し
86+# 1回目のデータ読み込み。1つ目のファイルから10件のデータが読み込まれる
87+# 1つ目のファイルには10件のデータがあるので、これで全データが読み込まれる
88+dataset_x, dataset_y, values_y = sess.run([data_x, data_y, y_value])
89+
90+# 2回目のデータ読み込み。1つ目のファイルのデータはすべて読み出したので、
91+# 続けて2つ目のファイルから読み込みが行われる。
92+testdata_x, testdata_y, testvalues_y = sess.run([data_x, data_y, y_value])
93+
94+# 学習を開始
95+for i in range(100):
96+ for j in range(100):
97+ sess.run(minimize, {x1: dataset_x, y: dataset_y})
98+ print("CROSS ENTROPY:", sess.run(cross_entropy, {x1: dataset_x, y: dataset_y}))
99+
100+## 結果の出力
101+# 出力テンソルの中でもっとも値が大きいもののインデックスが
102+# 正答と等しいかどうかを計算する
103+y_value = tf.placeholder(dtype=tf.int64)
104+correct = tf.equal(tf.argmax(x3,1), y_value)
105+accuracy = tf.reduce_mean(tf.cast(correct, "float"))
106+
107+# 学習に使用したデータを入力した場合の
108+# ニューラルネットワークの出力を表示
109+print("----result----")
110+print("raw output:")
111+print(sess.run(x3,feed_dict={x1: dataset_x}))
112+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: dataset_x}))
113+
114+# このときの正答率を出力
115+print("accuracy:", sess.run(accuracy, feed_dict={x1: dataset_x, y_value: values_y}))
116+
117+
118+# テスト用データを入力した場合の
119+# ニューラルネットワークの出力を表示
120+print("----test----")
121+print("raw output:")
122+print(sess.run(x3,feed_dict={x1: testdata_x}))
123+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: testdata_x}))
124+
125+# このときの正答率を出力
126+print("accuracy:", sess.run(accuracy, feed_dict={x1: testdata_x, y_value: testvalues_y}))
127+
128+
129+# サマリ情報の出力
130+summary_writer = tf.summary.FileWriter('./data', graph=sess.graph)
131+
132+# キューの終了
133+coord.request_stop()
134+coord.join(threads)
--- /dev/null
+++ b/tensorboard/tensorboard_test2.py
@@ -0,0 +1,137 @@
1+#!/usr/bin/env python
2+# -*- coding: utf-8 -*-
3+
4+import tensorflow as tf
5+
6+INPUT_SIZE = 15
7+W1_SIZE = 15
8+OUTPUT_SIZE = 10
9+
10+with tf.variable_scope('model') as scope:
11+
12+ # 入力
13+ x1 = tf.placeholder(dtype=tf.float32, name="x1")
14+ y = tf.placeholder(dtype=tf.float32, name="y")
15+
16+ # 第2層
17+ tf.set_random_seed(1234)
18+ W1 = tf.get_variable("W1",
19+ shape=[INPUT_SIZE, W1_SIZE],
20+ dtype=tf.float32,
21+ initializer=tf.random_normal_initializer(stddev=0.05))
22+ b1 = tf.get_variable("b1",
23+ shape=[W1_SIZE],
24+ dtype=tf.float32,
25+ initializer=tf.random_normal_initializer(stddev=0.05))
26+ x2 = tf.sigmoid(tf.matmul(x1, W1) + b1, name="x2")
27+
28+ # 第3層
29+ W2 = tf.get_variable("W2",
30+ shape=[W1_SIZE, OUTPUT_SIZE],
31+ dtype=tf.float32,
32+ initializer=tf.random_normal_initializer(stddev=0.05))
33+ b2 = tf.get_variable("b2",
34+ shape=[OUTPUT_SIZE],
35+ dtype=tf.float32,
36+ initializer=tf.random_normal_initializer(stddev=0.05))
37+ x3 = tf.nn.softmax(tf.matmul(x2, W2) + b2, name="x3")
38+
39+ # コスト関数
40+ cross_entropy = -tf.reduce_sum(y * tf.log(x3), name="cross_entropy")
41+
42+ # 最適化アルゴリズムを定義
43+ optimizer = tf.train.GradientDescentOptimizer(0.01, name="optimizer")
44+ minimize = optimizer.minimize(cross_entropy, name="minimize")
45+
46+with tf.variable_scope('pipeline') as scope:
47+ ## データセットを読み込むためのパイプラインを作成する
48+ # リーダーオブジェクトを作成する
49+ reader = tf.TextLineReader()
50+
51+ # 読み込む対象のファイルを格納したキューを作成する
52+ file_queue = tf.train.string_input_producer(["digits_data.csv", "test_data.csv"])
53+
54+ # キューからデータを読み込む
55+ key, value = reader.read(file_queue)
56+
57+ # 読み込んだCSV型式データをデコードする
58+ # [[] for i in range(16)] は
59+ # [[], [], [], [], [], [], [], [],
60+ # [], [], [], [], [], [], [], []]に相当
61+ data = tf.decode_csv(value, record_defaults=[[] for i in range(16)])
62+
63+ # 10件のデータを読み出す
64+ # 10件ずつデータを読み出す
65+ # 第1カラム(data[0])はその文字が示す数だが、
66+ # ニューラルネットワークの出力は10要素の1次元テンソルとなる。
67+ # そのため、10×10の対角行列を作成し、そのdata[0]行目を取り出す操作を行うことで
68+ # 1次元テンソルに変換する。dataは浮動小数点小数型なので、このとき
69+ # int32型にキャストして使用する
70+ data_x, data_y, y_value = tf.train.batch([
71+ tf.stack(data[1:]),
72+ tf.reshape(tf.slice(tf.eye(10), [tf.cast(data[0], tf.int32), 0], [1, 10]), [10]),
73+ tf.cast(data[0], tf.int64),
74+ ], 10)
75+
76+# セッションの作成
77+sess = tf.Session()
78+
79+# 変数の初期化を実行する
80+sess.run(tf.global_variables_initializer())
81+
82+# コーディネータの作成
83+coord = tf.train.Coordinator()
84+
85+# キューの開始
86+threads = tf.train.start_queue_runners(sess=sess, coord=coord)
87+
88+# ファイルからのデータの読み出し
89+# 1回目のデータ読み込み。1つ目のファイルから10件のデータが読み込まれる
90+# 1つ目のファイルには10件のデータがあるので、これで全データが読み込まれる
91+dataset_x, dataset_y, values_y = sess.run([data_x, data_y, y_value])
92+
93+# 2回目のデータ読み込み。1つ目のファイルのデータはすべて読み出したので、
94+# 続けて2つ目のファイルから読み込みが行われる。
95+testdata_x, testdata_y, testvalues_y = sess.run([data_x, data_y, y_value])
96+
97+# 学習を開始
98+for i in range(100):
99+ for j in range(100):
100+ sess.run(minimize, {x1: dataset_x, y: dataset_y})
101+ print("CROSS ENTROPY:", sess.run(cross_entropy, {x1: dataset_x, y: dataset_y}))
102+
103+## 結果の出力
104+# 出力テンソルの中でもっとも値が大きいもののインデックスが
105+# 正答と等しいかどうかを計算する
106+y_value = tf.placeholder(dtype=tf.int64)
107+correct = tf.equal(tf.argmax(x3,1), y_value)
108+accuracy = tf.reduce_mean(tf.cast(correct, "float"))
109+
110+# 学習に使用したデータを入力した場合の
111+# ニューラルネットワークの出力を表示
112+print("----result----")
113+print("raw output:")
114+print(sess.run(x3,feed_dict={x1: dataset_x}))
115+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: dataset_x}))
116+
117+# このときの正答率を出力
118+print("accuracy:", sess.run(accuracy, feed_dict={x1: dataset_x, y_value: values_y}))
119+
120+
121+# テスト用データを入力した場合の
122+# ニューラルネットワークの出力を表示
123+print("----test----")
124+print("raw output:")
125+print(sess.run(x3,feed_dict={x1: testdata_x}))
126+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: testdata_x}))
127+
128+# このときの正答率を出力
129+print("accuracy:", sess.run(accuracy, feed_dict={x1: testdata_x, y_value: testvalues_y}))
130+
131+
132+# サマリ情報の出力
133+summary_writer = tf.summary.FileWriter('data', graph=sess.graph)
134+
135+# キューの終了
136+coord.request_stop()
137+coord.join(threads)
--- /dev/null
+++ b/tensorboard/tensorboard_test3.py
@@ -0,0 +1,149 @@
1+#!/usr/bin/env python
2+# -*- coding: utf-8 -*-
3+
4+import tensorflow as tf
5+
6+INPUT_SIZE = 15
7+W1_SIZE = 15
8+OUTPUT_SIZE = 10
9+
10+with tf.variable_scope('model') as scope:
11+
12+ # 入力
13+ x1 = tf.placeholder(dtype=tf.float32, name="x1")
14+ y = tf.placeholder(dtype=tf.float32, name="y")
15+
16+ # 第2層
17+ tf.set_random_seed(1234)
18+ W1 = tf.get_variable("W1",
19+ shape=[INPUT_SIZE, W1_SIZE],
20+ dtype=tf.float32,
21+ initializer=tf.random_normal_initializer(stddev=0.05))
22+ b1 = tf.get_variable("b1",
23+ shape=[W1_SIZE],
24+ dtype=tf.float32,
25+ initializer=tf.random_normal_initializer(stddev=0.05))
26+ x2 = tf.sigmoid(tf.matmul(x1, W1) + b1, name="x2")
27+
28+ # 第3層
29+ W2 = tf.get_variable("W2",
30+ shape=[W1_SIZE, OUTPUT_SIZE],
31+ dtype=tf.float32,
32+ initializer=tf.random_normal_initializer(stddev=0.05))
33+ b2 = tf.get_variable("b2",
34+ shape=[OUTPUT_SIZE],
35+ dtype=tf.float32,
36+ initializer=tf.random_normal_initializer(stddev=0.05))
37+ x3 = tf.nn.softmax(tf.matmul(x2, W2) + b2, name="x3")
38+
39+ # コスト関数
40+ cross_entropy = -tf.reduce_sum(y * tf.log(x3), name="cross_entropy")
41+ tf.summary.scalar('cross_entropy', cross_entropy)
42+
43+ # 正答率
44+ correct = tf.equal(tf.argmax(x3,1), tf.argmax(y,1), name="correct")
45+ accuracy = tf.reduce_mean(tf.cast(correct, "float"), name="accuracy")
46+ tf.summary.scalar('accuracy', accuracy)
47+
48+ # 最適化アルゴリズムを定義
49+ global_step = tf.Variable(0, name='global_step', trainable=False)
50+ optimizer = tf.train.GradientDescentOptimizer(0.01, name="optimizer")
51+ minimize = optimizer.minimize(cross_entropy, global_step=global_step, name="minimize")
52+
53+with tf.variable_scope('pipeline') as scope:
54+ ## データセットを読み込むためのパイプラインを作成する
55+ # リーダーオブジェクトを作成する
56+ reader = tf.TextLineReader()
57+
58+ # 読み込む対象のファイルを格納したキューを作成する
59+ file_queue = tf.train.string_input_producer(["digits_data.csv", "test_data.csv"])
60+
61+ # キューからデータを読み込む
62+ key, value = reader.read(file_queue)
63+
64+ # 読み込んだCSV型式データをデコードする
65+ # [[] for i in range(16)] は
66+ # [[], [], [], [], [], [], [], [],
67+ # [], [], [], [], [], [], [], []]に相当
68+ data = tf.decode_csv(value, record_defaults=[[] for i in range(16)])
69+
70+ # 10件のデータを読み出す
71+ # 10件ずつデータを読み出す
72+ # 第1カラム(data[0])はその文字が示す数だが、
73+ # ニューラルネットワークの出力は10要素の1次元テンソルとなる。
74+ # そのため、10×10の対角行列を作成し、そのdata[0]行目を取り出す操作を行うことで
75+ # 1次元テンソルに変換する。dataは浮動小数点小数型なので、このとき
76+ # int32型にキャストして使用する
77+ data_x, data_y, y_value = tf.train.batch([
78+ tf.stack(data[1:]),
79+ tf.reshape(tf.slice(tf.eye(10), [tf.cast(data[0], tf.int32), 0], [1, 10]), [10]),
80+ tf.cast(data[0], tf.int64),
81+ ], 10)
82+
83+# セッションの作成
84+sess = tf.Session()
85+
86+# 変数の初期化を実行する
87+sess.run(tf.global_variables_initializer())
88+
89+# サマリを取得するための処理
90+summary_op = tf.summary.merge_all()
91+summary_writer = tf.summary.FileWriter('data', graph=sess.graph)
92+
93+
94+# コーディネータの作成
95+coord = tf.train.Coordinator()
96+
97+# キューの開始
98+threads = tf.train.start_queue_runners(sess=sess, coord=coord)
99+
100+# ファイルからのデータの読み出し
101+# 1回目のデータ読み込み。1つ目のファイルから10件のデータが読み込まれる
102+# 1つ目のファイルには10件のデータがあるので、これで全データが読み込まれる
103+dataset_x, dataset_y, values_y = sess.run([data_x, data_y, y_value])
104+
105+# 2回目のデータ読み込み。1つ目のファイルのデータはすべて読み出したので、
106+# 続けて2つ目のファイルから読み込みが行われる。
107+testdata_x, testdata_y, testvalues_y = sess.run([data_x, data_y, y_value])
108+
109+# 学習を開始
110+for i in range(100):
111+ for j in range(100):
112+ _, summary = sess.run([minimize, summary_op], {x1: dataset_x, y: dataset_y})
113+ print("CROSS ENTROPY:", sess.run(cross_entropy, {x1: dataset_x, y: dataset_y}))
114+ summary_writer.add_summary(summary, global_step=tf.train.global_step(sess, global_step))
115+
116+
117+## 結果の出力
118+# 出力テンソルの中でもっとも値が大きいもののインデックスが
119+# 正答と等しいかどうかを計算する
120+y_value = tf.placeholder(dtype=tf.int64)
121+correct = tf.equal(tf.argmax(x3,1), y_value)
122+accuracy = tf.reduce_mean(tf.cast(correct, "float"))
123+
124+# 学習に使用したデータを入力した場合の
125+# ニューラルネットワークの出力を表示
126+print("----result----")
127+print("raw output:")
128+print(sess.run(x3,feed_dict={x1: dataset_x}))
129+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: dataset_x}))
130+
131+# このときの正答率を出力
132+print("accuracy:", sess.run(accuracy, feed_dict={x1: dataset_x, y_value: values_y}))
133+
134+
135+# テスト用データを入力した場合の
136+# ニューラルネットワークの出力を表示
137+print("----test----")
138+print("raw output:")
139+print(sess.run(x3,feed_dict={x1: testdata_x}))
140+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: testdata_x}))
141+
142+# このときの正答率を出力
143+print("accuracy:", sess.run(accuracy, feed_dict={x1: testdata_x, y_value: testvalues_y}))
144+
145+
146+
147+# キューの終了
148+coord.request_stop()
149+coord.join(threads)
--- /dev/null
+++ b/tensorboard/tensorboard_test4.py
@@ -0,0 +1,153 @@
1+#!/usr/bin/env python
2+# -*- coding: utf-8 -*-
3+
4+import tensorflow as tf
5+
6+INPUT_SIZE = 15
7+W1_SIZE = 15
8+OUTPUT_SIZE = 10
9+
10+with tf.variable_scope('model') as scope:
11+
12+ # 入力
13+ x1 = tf.placeholder(dtype=tf.float32, name="x1")
14+ y = tf.placeholder(dtype=tf.float32, name="y")
15+
16+ # 第2層
17+ tf.set_random_seed(1234)
18+ W1 = tf.get_variable("W1",
19+ shape=[INPUT_SIZE, W1_SIZE],
20+ dtype=tf.float32,
21+ initializer=tf.random_normal_initializer(stddev=0.05))
22+ b1 = tf.get_variable("b1",
23+ shape=[W1_SIZE],
24+ dtype=tf.float32,
25+ initializer=tf.random_normal_initializer(stddev=0.05))
26+ x2 = tf.sigmoid(tf.matmul(x1, W1) + b1, name="x2")
27+
28+ # W1のヒストグラムを記録
29+ tf.summary.histogram('W1', W1)
30+
31+ # 第3層
32+ W2 = tf.get_variable("W2",
33+ shape=[W1_SIZE, OUTPUT_SIZE],
34+ dtype=tf.float32,
35+ initializer=tf.random_normal_initializer(stddev=0.05))
36+ b2 = tf.get_variable("b2",
37+ shape=[OUTPUT_SIZE],
38+ dtype=tf.float32,
39+ initializer=tf.random_normal_initializer(stddev=0.05))
40+ x3 = tf.nn.softmax(tf.matmul(x2, W2) + b2, name="x3")
41+
42+ # コスト関数
43+ cross_entropy = -tf.reduce_sum(y * tf.log(x3), name="cross_entropy")
44+ tf.summary.scalar('cross_entropy', cross_entropy)
45+
46+ # 正答率
47+ correct = tf.equal(tf.argmax(x3,1), tf.argmax(y,1), name="correct")
48+ accuracy = tf.reduce_mean(tf.cast(correct, "float"), name="accuracy")
49+ tf.summary.scalar('accuracy', accuracy)
50+
51+
52+ # 最適化アルゴリズムを定義
53+ global_step = tf.Variable(0, name='global_step', trainable=False)
54+ optimizer = tf.train.GradientDescentOptimizer(0.01, name="optimizer")
55+ minimize = optimizer.minimize(cross_entropy, global_step=global_step, name="minimize")
56+
57+with tf.variable_scope('pipeline') as scope:
58+ ## データセットを読み込むためのパイプラインを作成する
59+ # リーダーオブジェクトを作成する
60+ reader = tf.TextLineReader()
61+
62+ # 読み込む対象のファイルを格納したキューを作成する
63+ file_queue = tf.train.string_input_producer(["digits_data.csv", "test_data.csv"])
64+
65+ # キューからデータを読み込む
66+ key, value = reader.read(file_queue)
67+
68+ # 読み込んだCSV型式データをデコードする
69+ # [[] for i in range(16)] は
70+ # [[], [], [], [], [], [], [], [],
71+ # [], [], [], [], [], [], [], []]に相当
72+ data = tf.decode_csv(value, record_defaults=[[] for i in range(16)])
73+
74+ # 10件のデータを読み出す
75+ # 10件ずつデータを読み出す
76+ # 第1カラム(data[0])はその文字が示す数だが、
77+ # ニューラルネットワークの出力は10要素の1次元テンソルとなる。
78+ # そのため、10×10の対角行列を作成し、そのdata[0]行目を取り出す操作を行うことで
79+ # 1次元テンソルに変換する。dataは浮動小数点小数型なので、このとき
80+ # int32型にキャストして使用する
81+ data_x, data_y, y_value = tf.train.batch([
82+ tf.stack(data[1:]),
83+ tf.reshape(tf.slice(tf.eye(10), [tf.cast(data[0], tf.int32), 0], [1, 10]), [10]),
84+ tf.cast(data[0], tf.int64),
85+ ], 10)
86+
87+# セッションの作成
88+sess = tf.Session()
89+
90+# 変数の初期化を実行する
91+sess.run(tf.global_variables_initializer())
92+
93+# サマリを取得するための処理
94+summary_op = tf.summary.merge_all()
95+summary_writer = tf.summary.FileWriter('data', graph=sess.graph)
96+
97+
98+# コーディネータの作成
99+coord = tf.train.Coordinator()
100+
101+# キューの開始
102+threads = tf.train.start_queue_runners(sess=sess, coord=coord)
103+
104+# ファイルからのデータの読み出し
105+# 1回目のデータ読み込み。1つ目のファイルから10件のデータが読み込まれる
106+# 1つ目のファイルには10件のデータがあるので、これで全データが読み込まれる
107+dataset_x, dataset_y, values_y = sess.run([data_x, data_y, y_value])
108+
109+# 2回目のデータ読み込み。1つ目のファイルのデータはすべて読み出したので、
110+# 続けて2つ目のファイルから読み込みが行われる。
111+testdata_x, testdata_y, testvalues_y = sess.run([data_x, data_y, y_value])
112+
113+# 学習を開始
114+for i in range(100):
115+ for j in range(100):
116+ _, summary = sess.run([minimize, summary_op], {x1: dataset_x, y: dataset_y})
117+ print("CROSS ENTROPY:", sess.run(cross_entropy, {x1: dataset_x, y: dataset_y}))
118+ summary_writer.add_summary(summary, global_step=tf.train.global_step(sess, global_step))
119+
120+
121+## 結果の出力
122+# 出力テンソルの中でもっとも値が大きいもののインデックスが
123+# 正答と等しいかどうかを計算する
124+y_value = tf.placeholder(dtype=tf.int64)
125+correct = tf.equal(tf.argmax(x3,1), y_value)
126+accuracy = tf.reduce_mean(tf.cast(correct, "float"))
127+
128+# 学習に使用したデータを入力した場合の
129+# ニューラルネットワークの出力を表示
130+print("----result----")
131+print("raw output:")
132+print(sess.run(x3,feed_dict={x1: dataset_x}))
133+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: dataset_x}))
134+
135+# このときの正答率を出力
136+print("accuracy:", sess.run(accuracy, feed_dict={x1: dataset_x, y_value: values_y}))
137+
138+
139+# テスト用データを入力した場合の
140+# ニューラルネットワークの出力を表示
141+print("----test----")
142+print("raw output:")
143+print(sess.run(x3,feed_dict={x1: testdata_x}))
144+print("answers:", sess.run(tf.argmax(x3, 1), feed_dict={x1: testdata_x}))
145+
146+# このときの正答率を出力
147+print("accuracy:", sess.run(accuracy, feed_dict={x1: testdata_x, y_value: testvalues_y}))
148+
149+
150+
151+# キューの終了
152+coord.request_stop()
153+coord.join(threads)
--- /dev/null
+++ b/tensorboard/test_data.csv
@@ -0,0 +1,10 @@
1+0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,0
2+1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0
3+2,1,1,0,0,0,1,0,0,1,0,1,0,1,1,1
4+3,1,1,0,0,0,1,0,1,0,0,0,1,1,1,0
5+4,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1
6+5,1,1,1,1,0,0,1,1,0,0,0,1,1,1,0
7+6,0,1,1,1,0,0,1,1,0,1,0,1,1,1,1
8+7,1,1,1,1,0,1,0,0,1,0,1,0,1,0,0
9+8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
10+9,0,1,1,1,0,1,0,1,1,0,0,1,1,1,0