質問編集履歴

2

ミスがあった

2020/05/23 04:29

投稿

gogongon
gogongon

スコア1

test CHANGED
File without changes
test CHANGED
@@ -50,24 +50,6 @@
50
50
 
51
51
  ```
52
52
 
53
- data = Image.open("out.png").convert('L')
54
-
55
- img = np.array(data)
56
-
57
-
58
-
59
-
60
-
61
- imgArray_flatten = img.flatten()
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
- result = y.eval(feed_dict={x: [imgArray_flatten]})
70
-
71
53
 
72
54
 
73
55
  #プログラム全体

1

指摘点を直した

2020/05/23 04:29

投稿

gogongon
gogongon

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,13 @@
2
2
 
3
3
  mnistを行おうとしたら以下のようなエラーが発生しました
4
4
 
5
+
6
+
7
+ 例外が発生しました: ValueError
8
+
5
- Cannot feed value of shape (1, 360000) for Tensor 'Placeholder:0', which has shape '(?, 784)'
9
+ Cannot feed value of shape (1, 64) for Tensor 'Placeholder:0', which has shape '(?, 784)'
10
+
11
+
6
12
 
7
13
  どのように改善すればよいのでしょうか
8
14
 
@@ -10,7 +16,39 @@
10
16
 
11
17
  おそらく以下の部分の改善でエラーが治ると思うのですが
12
18
 
13
-
19
+ ```python
20
+
21
+ def imageToData(filename):
22
+
23
+ # 画像を8x8のグレースケールへ変換
24
+
25
+ grayImage = PIL.Image.open(filename).convert("L")
26
+
27
+ grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS)
28
+
29
+ # 数値リストへ変換
30
+
31
+ numImage = np.asarray(grayImage, dtype = float)
32
+
33
+ numImage = np.floor(16 - 16 * (numImage / 256))
34
+
35
+ numImage = numImage.flatten()
36
+
37
+
38
+
39
+ return numImage
40
+
41
+
42
+
43
+ data = imageToData("out.jpg")
44
+
45
+
46
+
47
+ # 分類する
48
+
49
+ result = y.eval(feed_dict={x: [data]})
50
+
51
+ ```
14
52
 
15
53
  data = Image.open("out.png").convert('L')
16
54
 
@@ -34,6 +72,8 @@
34
72
 
35
73
  #プログラム全体
36
74
 
75
+ ```python
76
+
37
77
  import tensorflow as tf
38
78
 
39
79
  import numpy as np
@@ -52,21 +92,25 @@
52
92
 
53
93
  from io import BytesIO
54
94
 
55
-
95
+ import PIL
96
+
97
+
98
+
99
+
100
+
56
-
101
+ # (1)手書き数字の学習データを読み込みます。
57
-
58
-
59
-
60
102
 
61
103
  mnist = mnist_loader.read_data_sets("MNIST_data/", one_hot=True)
62
104
 
63
105
 
64
106
 
107
+ # (2)ニューラルネットワークサイズ等設定値を指定します。
108
+
65
109
  x = tf.placeholder("float",[None,784])
66
110
 
67
- Weight = tf.Variable(tf.zeros([784,10]))
111
+ Weight = tf.Variable(tf.zeros([784,10])) # 縦28セル*横28セルなので、ニューラルネットワークの第1層は。784
68
-
112
+
69
- b = tf.Variable(tf.zeros([10]))
113
+ b = tf.Variable(tf.zeros([10])) # 第2層は10個のニューロンを設定。10個の数字の対応する箇所の値が大きくなるよう学習させる
70
114
 
71
115
  y = tf.nn.softmax(tf.matmul(x,Weight)+b)
72
116
 
@@ -78,6 +122,8 @@
78
122
 
79
123
 
80
124
 
125
+ # (3)学習の実行。ニューラルネットワークに学習させる回数は1200回。
126
+
81
127
  init = tf.global_variables_initializer()
82
128
 
83
129
  ss = tf.InteractiveSession()
@@ -230,26 +276,42 @@
230
276
 
231
277
 
232
278
 
279
+ def imageToData(filename):
280
+
281
+ # 画像を8x8のグレースケールへ変換
282
+
233
- data = Image.open("out.png").convert('L')
283
+ grayImage = PIL.Image.open(filename).convert("L")
284
+
234
-
285
+ grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS)
286
+
287
+ # 数値リストへ変換
288
+
235
- img = np.array(data)
289
+ numImage = np.asarray(grayImage, dtype = float)
290
+
236
-
291
+ numImage = np.floor(16 - 16 * (numImage / 256))
237
-
238
-
239
-
240
-
292
+
241
- imgArray_flatten = img.flatten()
293
+ numImage = numImage.flatten()
294
+
295
+
296
+
242
-
297
+ return numImage
298
+
299
+
300
+
243
-
301
+ data = imageToData("out.jpg")
302
+
303
+
304
+
244
-
305
+ # 分類する
245
-
246
-
247
-
248
-
306
+
249
- result = y.eval(feed_dict={x: [imgArray_flatten]})
307
+ result = y.eval(feed_dict={x: [data]})
250
-
251
-
252
-
308
+
309
+
310
+
253
- print(result)
311
+ print(result) # 分類結果の表示。配列の先頭が0で末尾が9に相当し、可能性が高いと判定されたものほど1に近い値が表示されます。
312
+
313
+
254
314
 
255
315
  plt.bar(np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), result[0])
316
+
317
+ ```