質問するログイン新規登録

質問編集履歴

3

文法の修正

2020/07/01 06:58

投稿

koukiten
koukiten

スコア6

title CHANGED
File without changes
body CHANGED
@@ -21,28 +21,11 @@
21
21
 
22
22
  path=os.path.dirname(os.path.abspath('__file__'))
23
23
  path_one=path + '/パス/one'
24
- path_two=path + '/パス/two'
24
+
25
- path_three=path + '/パス/three'
26
- path_four=path + '/パス/four'
27
- path_five=path + '/パス/five'
28
- path_six=path + '/パス/six'
29
- path_seven=path + '/パス/seven'
30
- path_eight=path + '/パス/eight'
31
- path_nine=path + '/パス/nine'
32
- path_zero=path + '/パス/zero'
33
25
  in_size=(28,28)
34
26
  out_size=10
35
27
 
36
28
  file_1=glob.glob(path_one +'/*.jpg')
37
- file_2=glob.glob(path_two +'/*.jpg')
38
- file_3=glob.glob(path_three +'/*.jpg')
39
- file_4=glob.glob(path_four +'/*.jpg')
40
- file_5=glob.glob(path_five +'/*.jpg')
41
- file_6=glob.glob(path_six +'/*.jpg')
42
- file_7=glob.glob(path_seven +'/*.jpg')
43
- file_8=glob.glob(path_eight +'/*.jpg')
44
- file_9=glob.glob(path_nine +'/*.jpg')
45
- file_0=glob.glob(path_zero +'/*.jpg')
46
29
 
47
30
  x=[]
48
31
  y=[]
@@ -59,128 +42,6 @@
59
42
 
60
43
  return [x,y]
61
44
 
62
- def load_dir_2(path,label):
63
-
64
- for i in file_2:
65
- img=cv2.imread(i)
66
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
67
- img=cv2.resize(img,in_size)
68
- img=img/255.0
69
- x.append(img)
70
- y.append(label)
71
- return [x,y]
72
-
73
- def load_dir_3(path,label):
74
-
75
- for i in file_3:
76
- img=cv2.imread(i)
77
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
78
- img=cv2.resize(img,in_size)
79
- img=img/255.0
80
- x.append(img)
81
- y.append(label)
82
- return [x,y]
83
-
84
- def load_dir_4(path,label):
85
-
86
- for i in file_4:
87
- img=cv2.imread(i)
88
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
89
- img=cv2.resize(img,in_size)
90
- img=img/255.0
91
- x.append(img)
92
- y.append(label)
93
- return [x,y]
94
-
95
-
96
- def load_dir_5(path,label):
97
-
98
- for i in file_5:
99
- img=cv2.imread(i)
100
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
101
- img=cv2.resize(img,in_size)
102
- img=img/255.0
103
- x.append(img)
104
- y.append(label)
105
- return [x,y]
106
-
107
- def load_dir_6(path,label):
108
-
109
- for i in file_6:
110
- img=cv2.imread(i)
111
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
112
- img=cv2.resize(img,in_size)
113
- img=img/255.0
114
- x.append(img)
115
- y.append(label)
116
- return [x,y]
117
-
118
- def load_dir_7(path,label):
119
-
120
- for i in file_7:
121
- img=cv2.imread(i)
122
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
123
- img=cv2.resize(img,in_size)
124
- img=img/255.0
125
- x.append(img)
126
- y.append(label)
127
- return [x,y]
128
-
129
- def load_dir_8(path,label):
130
-
131
- for i in file_8:
132
- img=cv2.imread(i)
133
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
134
- img=cv2.resize(img,in_size)
135
- img=img/255.0
136
- x.append(img)
137
- y.append(label)
138
- return [x,y]
139
-
140
- def load_dir_9(path,label):
141
-
142
- for i in file_9:
143
- img=cv2.imread(i)
144
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
145
- img=cv2.resize(img,in_size)
146
- img=img/255.0
147
- x.append(img)
148
- y.append(label)
149
- return [x,y]
150
-
151
-
152
- def load_dir_0(path,label):
153
-
154
- for i in file_0:
155
- img=cv2.imread(i)
156
- img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
157
- img=cv2.resize(img,in_size)
158
- img=img/255.0
159
- x.append(img)
160
- y.append(label)
161
- return [x,y]
162
-
163
- #kerasのモデルに入れられるように数値データに変換
164
- load_dir_1(path_one,1)
165
-
166
- load_dir_2(path_two,2)
167
-
168
- load_dir_3(path_three,3)
169
-
170
- load_dir_4(path_four,4)
171
-
172
- load_dir_5(path_five,5)
173
-
174
- load_dir_6(path_six,6)
175
-
176
- load_dir_7(path_seven,7)
177
-
178
- load_dir_8(path_eight,8)
179
-
180
- load_dir_9(path_nine,9)
181
-
182
- load_dir_0(path_zero,0)
183
-
184
45
  #print(y)
185
46
  #リストになっている数値データをnumpyの配列に変換
186
47
  x=np.array(x)
@@ -188,126 +49,19 @@
188
49
  #データを学習用とテスト用に分ける
189
50
  x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
190
51
 
191
-
192
-
193
- #訓練データとラベルの確認
194
- print(x_train.shape,y_train.shape)
195
52
 
196
- #テストデータとラベルの次元の確認
197
- print(x_test.shape,y_test.shape)
198
- print(x_test[111].shape)
199
- #数値データをもとの大きさに戻す
200
- x_test[9]=x_test[9]*255
201
- #貼り付け
202
- plt.imshow(x_test[9])
203
- #表示
204
- plt.show()
205
- #ラベルの表示
206
- print(y_test[9])
207
53
 
208
-
209
54
  x_train=x_train.reshape(len(x_train),28,28,1).astype('float32')/255
210
55
  x_test=x_test.reshape(len(x_test),28,28,1).astype('float32')/255
211
56
 
212
- print(x_train.shape,x_test.shape)
213
57
 
214
58
 
215
59
 
216
- #出力(ラベル、画像の次元など)
217
- (870, 28, 28) (870,)
218
- (218, 28, 28) (218,)
219
- (28, 28)
220
60
 
221
-
222
-
223
- 4
224
- (870, 28, 28, 1) (218, 28, 28, 1)
225
-
226
-
227
-
228
-
229
61
  import keras
230
62
  from keras.utils import to_categorical
231
-
63
+
232
- #x_train=x_train.reshape(-1,784).astype('float32')/255
233
- #x_test=x_test.reshape(-1,784).astype('float32')/255
234
-
235
64
  y_train=keras.utils.np_utils.to_categorical(y_train.astype('int32'),10)
236
65
  y_test=keras.utils.np_utils.to_categorical(y_test.astype('int32'),10)
237
-
238
66
 
239
-
240
-
241
-
242
- from keras import models
243
- from keras import layers
244
- from keras.layers import Dense,Dropout,MaxPooling2D,Convolution2D
245
-
246
- model=models.Sequential()
247
- model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)))
248
- model.add(layers.MaxPooling2D((2,2)))
249
- model.add(Dropout(0.2))
250
- model.add(layers.Conv2D(64,(3,3),activation='relu'))
251
- model.add(layers.MaxPooling2D(2,2))
252
- model.add(Dropout(0.2))
253
- model.add(layers.Conv2D(64,(3,3),activation='relu'))
254
- model.add(layers.Flatten())
255
- model.add(layers.Dense(64,activation='relu'))
256
- model.add(layers.Dense(out_size,activation='softmax'))
257
-
258
-
259
-
260
- # データのシャッフル
261
- data_number = len(x_train)
262
-
263
- shuffled_num = np.arange(data_number)
264
- np.random.shuffle(shuffled_num)
265
-
266
- for i in range(data_number):
267
- x_train[shuffled_num[i]], x_train[i] = x_train[i], x_train[shuffled_num[i]]
268
- y_train[shuffled_num[i]], y_train[i] = y_train[i], y_train[shuffled_num[i]]
269
-
270
-
271
- print(y_train[9])
272
-
273
-
274
-
275
- #出力
276
- [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
277
-
278
-
279
-
280
-
281
- from keras import optimizers
282
- model.compile(optimizer='adam',
283
- loss='categorical_crossentropy',
284
- metrics=['accuracy'])
285
-
286
- model.fit(x_train,y_train,batch_size=10,epochs=10)
287
-
288
- model.save('keras_number.h5')
289
-
290
-
291
-
292
-
293
- Epoch 1/10
294
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1910 - accuracy: 0.1920
295
- Epoch 2/10
296
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1406 - accuracy: 0.1943
297
- Epoch 3/10
298
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1419 - accuracy: 0.1828
299
- Epoch 4/10
300
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1349 - accuracy: 0.1874
301
- Epoch 5/10
302
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1318 - accuracy: 0.1805
303
- Epoch 6/10
304
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1369 - accuracy: 0.1897
305
- Epoch 7/10
306
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1393 - accuracy: 0.1885
307
- Epoch 8/100. 番号リスト
308
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1365 - accuracy: 0.1782
309
- Epoch 9/10
310
- 870/870 [==============================] - 1s 988us/step - loss: 2.1387 - accuracy: 0.1897
311
- Epoch 10/10
312
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1336 - accuracy: 0.1816
313
67
  ```

2

文法の修正

2020/07/01 06:58

投稿

koukiten
koukiten

スコア6

title CHANGED
File without changes
body CHANGED
@@ -187,16 +187,9 @@
187
187
  y=np.array(y)
188
188
  #データを学習用とテスト用に分ける
189
189
  x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
190
- #print(x.shape)
191
- #print(y_train)
192
-
193
190
 
194
191
 
195
192
 
196
- In [14]:
197
-
198
-
199
-
200
193
  #訓練データとラベルの確認
201
194
  print(x_train.shape,y_train.shape)
202
195
 
@@ -220,21 +213,19 @@
220
213
 
221
214
 
222
215
 
223
-
216
+ #出力(ラベル、画像の次元など)
224
217
  (870, 28, 28) (870,)
225
218
  (218, 28, 28) (218,)
226
219
  (28, 28)
227
220
 
228
221
 
229
222
 
230
-
231
-
232
223
  4
233
224
  (870, 28, 28, 1) (218, 28, 28, 1)
234
- In [15]:
235
225
 
236
226
 
237
227
 
228
+
238
229
  import keras
239
230
  from keras.utils import to_categorical
240
231
 
@@ -247,10 +238,7 @@
247
238
 
248
239
 
249
240
 
250
- In [16]:
251
241
 
252
-
253
-
254
242
  from keras import models
255
243
  from keras import layers
256
244
  from keras.layers import Dense,Dropout,MaxPooling2D,Convolution2D
@@ -266,18 +254,9 @@
266
254
  model.add(layers.Flatten())
267
255
  model.add(layers.Dense(64,activation='relu'))
268
256
  model.add(layers.Dense(out_size,activation='softmax'))
269
- #model.add(layers.Dense(512,activation='relu',input_shape=(784,)))
270
- #model.add(Dropout(0.2))
271
- #model.add(Dense(512,activation='relu'))
272
- #model.add(Dropout(0.2))
273
- #model.add(layers.Dense(out_size,activation='softmax'))
274
257
 
275
258
 
276
259
 
277
- In [17]:
278
-
279
-
280
-
281
260
  # データのシャッフル
282
261
  data_number = len(x_train)
283
262
 
@@ -293,12 +272,12 @@
293
272
 
294
273
 
295
274
 
296
-
275
+ #出力
297
276
  [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
298
- In [18]:
299
277
 
300
278
 
301
279
 
280
+
302
281
  from keras import optimizers
303
282
  model.compile(optimizer='adam',
304
283
  loss='categorical_crossentropy',

1

文法の修正

2020/06/30 18:30

投稿

koukiten
koukiten

スコア6

title CHANGED
File without changes
body CHANGED
@@ -2,12 +2,15 @@
2
2
  手書き文字の学習をやっています。
3
3
  そこで質問なのですが、損失が減らず、当然正解率も上がらない状態に陥っています。
4
4
  いろいろ試しては見ましたが、結果は変わりませんでした。
5
- 数字の種類を減らした場合、lossと正解率は上がりましたがlossが減っていたりしたわけではなく単純に種類が減ったから正解率も上がっただけでした。
5
+ 数字の種類を減らした場合、数字のデータ数を増やすとlossと正解率は上がりましたがlossが減っていたりしたわけではなく単純に種類が減ったから正解率も上がっただけでした。
6
6
  何が原因なのかわからないのでご教授いただければ幸いです。
7
7
  ちなみに、modelはmnistデータセットで99%ほどの正解率でした。
8
8
 
9
9
 
10
10
 
11
+
12
+
13
+ ```ここに言語を入力
11
14
  #画像フォルダから画像データを読み込む
12
15
  import glob,os
13
16
  from sklearn.model_selection import train_test_split
@@ -327,4 +330,5 @@
327
330
  Epoch 9/10
328
331
  870/870 [==============================] - 1s 988us/step - loss: 2.1387 - accuracy: 0.1897
329
332
  Epoch 10/10
330
- 870/870 [==============================] - 1s 1ms/step - loss: 2.1336 - accuracy: 0.1816
333
+ 870/870 [==============================] - 1s 1ms/step - loss: 2.1336 - accuracy: 0.1816
334
+ ```