質問編集履歴

4

コードを見やすくした

2017/09/26 08:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  言語:python2.7
8
8
 
9
+ GPUなし
10
+
9
11
 
10
12
 
11
13
  mnist_expert.pyのソースコードは以下の通りです.

3

コードを見やすくした

2017/09/26 08:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  環境構築にはhttps://www.tensorflow.org/install/install_linuxを参考にしました.
4
4
 
5
+ os:ubuntu16.04
6
+
7
+ 言語:python2.7
8
+
5
9
 
6
10
 
7
11
  mnist_expert.pyのソースコードは以下の通りです.

2

コードを見やすくしました

2017/09/26 08:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,24 @@
8
8
 
9
9
 
10
10
 
11
+ ```python
12
+
13
+ #!/usr/bin/env python
14
+
15
+ # -*- coding: utf-8 -*-
16
+
17
+
18
+
19
+ ####################################################################
20
+
21
+ # mnistをtensorflowで実装
22
+
23
+ # コードの分割化などを行っていないため若干見にくい
24
+
25
+ ####################################################################
26
+
27
+
28
+
11
29
  from __future__ import absolute_import,unicode_literals
12
30
 
13
31
  import input_data
@@ -20,7 +38,7 @@
20
38
 
21
39
 
22
40
 
23
-
41
+ # 開始時刻
24
42
 
25
43
  start_time = time.time()
26
44
 
@@ -28,6 +46,8 @@
28
46
 
29
47
 
30
48
 
49
+ # mnistデータの読み込み
50
+
31
51
  print "--- MNISTデータの読み込み開始 ---"
32
52
 
33
53
  mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
@@ -36,11 +56,11 @@
36
56
 
37
57
 
38
58
 
39
-
59
+ # cross_entropyを実装
40
60
 
41
61
  sess = tf.InteractiveSession() # 対話型セッションを始める(長時間プログラムには向かない)
42
62
 
43
-
63
+ # 式に用いる変数設定
44
64
 
45
65
  x = tf.placeholder("float", shape=[None,784]) # 入力
46
66
 
@@ -58,13 +78,15 @@
58
78
 
59
79
 
60
80
 
61
-
81
+ # 学習アルゴリズムと最小化問題
82
+
83
+ # ココでは最急降下法(勾配降下法)の最小化を解く。学習率0.01
62
84
 
63
85
  train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
64
86
 
65
87
 
66
88
 
67
-
89
+ # 1000回学習 バッチサイズ50(この中身の処理は未だ勉強不足)
68
90
 
69
91
  for i in range(1000):
70
92
 
@@ -74,7 +96,7 @@
74
96
 
75
97
 
76
98
 
77
-
99
+ # 結果の表示
78
100
 
79
101
  correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))# 尤もらしいClassすなわちargmax(y)が教師ラベルと等しいか
80
102
 
@@ -82,7 +104,23 @@
82
104
 
83
105
  print accuracy.eval(feed_dict={x: mnist.test.images,y_: mnist.test.labels})# xに画像y_にそのラベルを代入
84
106
 
85
-
107
+ # 出てくる結果はこの時点で精度91%前後
108
+
109
+
110
+
111
+ ###############################################################
112
+
113
+ # 以下で深層畳み込みニューラルネットワークを構築する。
114
+
115
+ # 深層化することで精度99%を目指す。
116
+
117
+ ###############################################################
118
+
119
+
120
+
121
+ # 重みとバイアスの初期化
122
+
123
+ # 勾配消失問題のために、小さいノイズをのせて重みを初期化する関数?どういうこと?
86
124
 
87
125
  def weight_variable(shape): # 重みの初期化
88
126
 
@@ -102,7 +140,7 @@
102
140
 
103
141
 
104
142
 
105
-
143
+ # convolutionとpoolingの定義
106
144
 
107
145
  def conv2d(x,W):
108
146
 
@@ -118,7 +156,9 @@
118
156
 
119
157
 
120
158
 
121
-
159
+ # 第1レイヤー 5x5パッチで32の特徴を計算
160
+
161
+ # [5,5,1,32]は、5,5でパッチサイズを、1で入力チャンネル数、32で出力チャンネル
122
162
 
123
163
  W_conv1 = weight_variable([5,5,1,32]) # 変数定義
124
164
 
@@ -138,6 +178,8 @@
138
178
 
139
179
 
140
180
 
181
+ # 第2レイヤー 5x5パッチで64の特徴量を計算
182
+
141
183
  W_conv2 = weight_variable([5,5,32,64]) # 変数定義
142
184
 
143
185
  b_conv2 = bias_variable([64]) # 変数定義
@@ -154,6 +196,8 @@
154
196
 
155
197
 
156
198
 
199
+ # 全結合層(フルコネクションレイヤー)への変換
200
+
157
201
  W_fc1 = weight_variable([7*7*64,1024]) # どういう変換?
158
202
 
159
203
  b_fc1 = bias_variable([1024])
@@ -168,7 +212,7 @@
168
212
 
169
213
 
170
214
 
171
-
215
+ # Dropoutを行う
172
216
 
173
217
  keep_prob = tf.placeholder("float")
174
218
 
@@ -180,7 +224,7 @@
180
224
 
181
225
 
182
226
 
183
-
227
+ # 読み出しレイヤー
184
228
 
185
229
  W_fc2 = weight_variable([1024,10])
186
230
 
@@ -194,6 +238,8 @@
194
238
 
195
239
 
196
240
 
241
+ # モデルの学習と評価
242
+
197
243
  cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
198
244
 
199
245
  train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)# Adam法を使用。
@@ -220,12 +266,20 @@
220
266
 
221
267
 
222
268
 
269
+ # 結果表示
270
+
223
271
  print "test accuracy %g" % accuracy.eval(feed_dict={x:mnist.test.images,y_:mnist.test.labels,keep_prob:1.0})
224
272
 
225
273
 
226
274
 
275
+ # 終了時刻
276
+
227
277
  end_time = time.time()
228
278
 
229
279
  print "終了時刻: " + str(end_time)
230
280
 
231
281
  print "かかった時間: " + str(end_time - start_time)
282
+
283
+
284
+
285
+ ```

1

タグの追加

2017/09/26 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- # 開始時刻
23
+
24
24
 
25
25
  start_time = time.time()
26
26
 
@@ -28,8 +28,6 @@
28
28
 
29
29
 
30
30
 
31
- # mnistデータの読み込み
32
-
33
31
  print "--- MNISTデータの読み込み開始 ---"
34
32
 
35
33
  mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
@@ -38,11 +36,11 @@
38
36
 
39
37
 
40
38
 
41
- # cross_entropyを実装
39
+
42
40
 
43
41
  sess = tf.InteractiveSession() # 対話型セッションを始める(長時間プログラムには向かない)
44
42
 
45
- # 式に用いる変数設定
43
+
46
44
 
47
45
  x = tf.placeholder("float", shape=[None,784]) # 入力
48
46
 
@@ -60,15 +58,13 @@
60
58
 
61
59
 
62
60
 
63
- # 学習アルゴリズムと最小化問題
61
+
64
-
65
- # ココでは最急降下法(勾配降下法)の最小化を解く。学習率0.01
66
62
 
67
63
  train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
68
64
 
69
65
 
70
66
 
71
- # 1000回学習 バッチサイズ50(この中身の処理は未だ勉強不足)
67
+
72
68
 
73
69
  for i in range(1000):
74
70
 
@@ -78,7 +74,7 @@
78
74
 
79
75
 
80
76
 
81
- # 結果の表示
77
+
82
78
 
83
79
  correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))# 尤もらしいClassすなわちargmax(y)が教師ラベルと等しいか
84
80
 
@@ -86,23 +82,7 @@
86
82
 
87
83
  print accuracy.eval(feed_dict={x: mnist.test.images,y_: mnist.test.labels})# xに画像y_にそのラベルを代入
88
84
 
89
- # 出てくる結果はこの時点で精度91%前後
85
+
90
-
91
-
92
-
93
- ###############################################################
94
-
95
- # 以下で深層畳み込みニューラルネットワークを構築する。
96
-
97
- # 深層化することで精度99%を目指す。
98
-
99
- ###############################################################
100
-
101
-
102
-
103
- # 重みとバイアスの初期化
104
-
105
- # 勾配消失問題のために、小さいノイズをのせて重みを初期化する関数?どういうこと?
106
86
 
107
87
  def weight_variable(shape): # 重みの初期化
108
88
 
@@ -122,7 +102,7 @@
122
102
 
123
103
 
124
104
 
125
- # convolutionとpoolingの定義
105
+
126
106
 
127
107
  def conv2d(x,W):
128
108
 
@@ -138,9 +118,7 @@
138
118
 
139
119
 
140
120
 
141
- # 第1レイヤー 5x5パッチで32の特徴を計算
121
+
142
-
143
- # [5,5,1,32]は、5,5でパッチサイズを、1で入力チャンネル数、32で出力チャンネル
144
122
 
145
123
  W_conv1 = weight_variable([5,5,1,32]) # 変数定義
146
124
 
@@ -160,8 +138,6 @@
160
138
 
161
139
 
162
140
 
163
- # 第2レイヤー 5x5パッチで64の特徴量を計算
164
-
165
141
  W_conv2 = weight_variable([5,5,32,64]) # 変数定義
166
142
 
167
143
  b_conv2 = bias_variable([64]) # 変数定義
@@ -178,8 +154,6 @@
178
154
 
179
155
 
180
156
 
181
- # 全結合層(フルコネクションレイヤー)への変換
182
-
183
157
  W_fc1 = weight_variable([7*7*64,1024]) # どういう変換?
184
158
 
185
159
  b_fc1 = bias_variable([1024])
@@ -194,7 +168,7 @@
194
168
 
195
169
 
196
170
 
197
- # Dropoutを行う
171
+
198
172
 
199
173
  keep_prob = tf.placeholder("float")
200
174
 
@@ -206,7 +180,7 @@
206
180
 
207
181
 
208
182
 
209
- # 読み出しレイヤー
183
+
210
184
 
211
185
  W_fc2 = weight_variable([1024,10])
212
186
 
@@ -220,8 +194,6 @@
220
194
 
221
195
 
222
196
 
223
- # モデルの学習と評価
224
-
225
197
  cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
226
198
 
227
199
  train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)# Adam法を使用。
@@ -248,14 +220,10 @@
248
220
 
249
221
 
250
222
 
251
- # 結果表示
252
-
253
223
  print "test accuracy %g" % accuracy.eval(feed_dict={x:mnist.test.images,y_:mnist.test.labels,keep_prob:1.0})
254
224
 
255
225
 
256
226
 
257
- # 終了時刻
258
-
259
227
  end_time = time.time()
260
228
 
261
229
  print "終了時刻: " + str(end_time)