質問編集履歴
15
初心者マーク
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,8 +40,6 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
# データの前処理
|
44
|
-
|
45
43
|
# 正規化
|
46
44
|
|
47
45
|
train_data = (train_data - train_data.min()) / train_data.max()
|
@@ -50,7 +48,7 @@
|
|
50
48
|
|
51
49
|
|
52
50
|
|
53
|
-
# 配列形式
|
51
|
+
# 配列形式の変更
|
54
52
|
|
55
53
|
train_data = train_data.reshape(-1, 28*28)
|
56
54
|
|
14
題名を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
CNNでの学習がうまく行われない
|
test
CHANGED
File without changes
|
13
結果のグラフを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -394,7 +394,7 @@
|
|
394
394
|
|
395
395
|
|
396
396
|
|
397
|
-
書籍(ゼロから作るdeep learning)などを参照しました。
|
397
|
+
ソースは書籍(ゼロから作るdeep learning)などを参照しました。
|
398
398
|
|
399
399
|
変数名が違っているなどが原因かな?と思い調べてみたのですが、なかなか解決できない状況です。
|
400
400
|
|
12
画像の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -200,7 +200,7 @@
|
|
200
200
|
|
201
201
|
|
202
202
|
|
203
|
-
|
203
|
+
### 別ファイルでクラスはそれぞれ作成しています。
|
204
204
|
|
205
205
|
|
206
206
|
|
@@ -378,99 +378,9 @@
|
|
378
378
|
|
379
379
|
|
380
380
|
|
381
|
-
|
381
|
+
|
382
|
-
|
383
|
-
|
382
|
+
|
384
|
-
|
385
|
-
self.W = W
|
386
|
-
|
387
|
-
self.b = b
|
388
|
-
|
389
|
-
self.stride = stride
|
390
|
-
|
391
|
-
self.pad = pad
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
self.x = None
|
396
|
-
|
397
|
-
self.col = None
|
398
|
-
|
399
|
-
self.col_W = None
|
400
|
-
|
401
|
-
self.dcol = None
|
402
|
-
|
403
|
-
self.dW = None
|
404
|
-
|
405
|
-
self.db = None
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
def forward(self, x):
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
FN, C, FH, FW = self.W.shape
|
414
|
-
|
415
|
-
N, C, H, W = x.shape
|
416
|
-
|
417
|
-
out_h = (H + 2*self.pad - FH) // self.stride + 1
|
418
|
-
|
419
|
-
out_w =(W + 2*self.pad - FW) // self.stride + 1
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
col = im2col(x, FH, FW, self.stride, self.pad)
|
424
|
-
|
425
|
-
col_W = self.W.reshape(FN, -1).T
|
426
|
-
|
427
|
-
out = np.dot(col, col_W) + self.b
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
out = out.reshape(N, out_h, out_w, -1).transpose(0, 3, 1, 2)
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
self.x = x
|
436
|
-
|
437
|
-
self.col = col
|
438
|
-
|
439
|
-
self.col_W = col_W
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
return out
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
def backward(self, dout):
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
FN, C, FH, FW = self.W.shape
|
452
|
-
|
453
|
-
dout = dout.transpose(0,2,3,1).reshape(-1, FN)
|
454
|
-
|
455
|
-
self.db = np.sum(dout, axis=0)
|
456
|
-
|
457
|
-
self.dW = np.dot(self.col.T, dout)
|
458
|
-
|
459
|
-
self.dW = self.dW.transpose(1, 0).reshape(FN, C, FH, FW)
|
460
|
-
|
461
|
-
dcol = np.dot(dout, self.col_W.T)
|
462
|
-
|
463
|
-
dx = col2im(dcol, self.x.shape, FH, FW, self.stride, self.pad, is_backward=True)
|
464
|
-
|
465
|
-
self.dcol = dcol
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
return dx
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
#その他、ReLU、Poolなども同様に作成してます。
|
383
|
+
#その他、Convolution、ReLU、Poolなども同様に作成してます。
|
474
384
|
|
475
385
|
|
476
386
|
|
@@ -488,4 +398,4 @@
|
|
488
398
|
|
489
399
|
変数名が違っているなどが原因かな?と思い調べてみたのですが、なかなか解決できない状況です。
|
490
400
|
|
491
|
-

|
401
|
+

|
11
ソースを一部修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -168,11 +168,11 @@
|
|
168
168
|
|
169
169
|
#学習経過の記録
|
170
170
|
|
171
|
-
train_loss.append(snet.loss(x,
|
171
|
+
train_loss.append(snet.loss(x, t))
|
172
172
|
|
173
173
|
test_loss.append(snet.loss(test, test_labels))
|
174
174
|
|
175
|
-
train_accuracy.append(snet.accuracy(x, t
|
175
|
+
train_accuracy.append(snet.accuracy(x, t))
|
176
176
|
|
177
177
|
test_accuracy.append(snet.accuracy(test, test_labels))
|
178
178
|
|
@@ -487,3 +487,5 @@
|
|
487
487
|
書籍(ゼロから作るdeep learning)などを参照しました。
|
488
488
|
|
489
489
|
変数名が違っているなどが原因かな?と思い調べてみたのですが、なかなか解決できない状況です。
|
490
|
+
|
491
|
+
](e12bc0a0d94fc68879daabc38cd6acc9.png)
|
10
初心者アイコンの取り消し
test
CHANGED
File without changes
|
test
CHANGED
@@ -198,7 +198,9 @@
|
|
198
198
|
|
199
199
|
|
200
200
|
|
201
|
+
|
202
|
+
|
201
|
-
|
203
|
+
**別ファイルでクラスはそれぞれ作成しています。**
|
202
204
|
|
203
205
|
|
204
206
|
|
9
試したことを修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -484,4 +484,4 @@
|
|
484
484
|
|
485
485
|
書籍(ゼロから作るdeep learning)などを参照しました。
|
486
486
|
|
487
|
-
変数が
|
487
|
+
変数名が違っているなどが原因かな?と思い調べてみたのですが、なかなか解決できない状況です。
|
8
試したことを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -482,8 +482,6 @@
|
|
482
482
|
|
483
483
|
|
484
484
|
|
485
|
-
|
485
|
+
書籍(ゼロから作るdeep learning)などを参照しました。
|
486
|
-
|
487
|
-
|
488
|
-
|
486
|
+
|
489
|
-
|
487
|
+
変数が合ってないとかが原因なのかな?と思うのですが、なかなか解決できない状況です。
|
7
タイトルを具体的に修正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
CN
|
1
|
+
SimpleConvNetでの学習が行われない
|
test
CHANGED
File without changes
|
6
タグを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
5
誤字を修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -204,7 +204,7 @@
|
|
204
204
|
|
205
205
|
class SimpleConvNet:
|
206
206
|
|
207
|
-
def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, pool_param={'pool_size':2, 'pad':0, 'stride':2}, hidden_size=100, output_size=1
|
207
|
+
def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, pool_param={'pool_size':2, 'pad':0, 'stride':2}, hidden_size=100, output_size=15, weight_init_std=0.01):
|
208
208
|
|
209
209
|
|
210
210
|
|
4
誤植を修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
エラーメッセージは出ていないのですが、損失関数と評価関数のグラフが真横の直線になってしま
|
17
|
+
エラーメッセージは出ていないのですが、損失関数と評価関数のグラフが真横の直線になってしまいます。
|
18
18
|
|
19
19
|
(test_loss と train_lossが重なって真横の直線(epoch数を増やしても変わらず)になってしまっています。また、test_accuracy と train_accuracy も重なって同じように真横の直線になってしまっています。)
|
20
20
|
|
3
質問内容を具体的に修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
CNNを用いて画像を識別させようとしています。
|
6
6
|
|
7
|
+
損失関数と評価関数のグラフを描こうとしています。
|
8
|
+
|
7
9
|
|
8
10
|
|
9
11
|
|
@@ -12,7 +14,9 @@
|
|
12
14
|
|
13
15
|
|
14
16
|
|
15
|
-
エラーメッセージは出ていないのですが、損失関数のグラフが真横の直線になってしまってい
|
17
|
+
エラーメッセージは出ていないのですが、損失関数と評価関数のグラフが真横の直線になってしまっています。
|
18
|
+
|
19
|
+
(test_loss と train_lossが重なって真横の直線(epoch数を増やしても変わらず)になってしまっています。また、test_accuracy と train_accuracy も重なって同じように真横の直線になってしまっています。)
|
16
20
|
|
17
21
|
原因がわからず、教えていただきたいです。
|
18
22
|
|
2
誤植を修正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
CNNを用いた学習ができ
|
1
|
+
CNNを用いた学習ができません
|
test
CHANGED
File without changes
|
1
画像添付がうまく出来ていなかったので修正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -174,11 +174,23 @@
|
|
174
174
|
|
175
175
|
|
176
176
|
|
177
|
-
# 損失関数のグラフを作成
|
177
|
+
# 損失関数のグラフを作成
|
178
|
+
|
178
|
-
|
179
|
+
df_log = pd.DataFrame({"train_loss":train_loss,
|
180
|
+
|
179
|
-
|
181
|
+
"test_loss":test_loss,
|
182
|
+
|
180
|
-
|
183
|
+
"train_accuracy":train_accuracy,
|
184
|
+
|
181
|
-
|
185
|
+
"test_accuracy":test_accuracy})
|
186
|
+
|
187
|
+
df_log.plot(style=['r-', 'r--', 'b-', 'b--'])
|
188
|
+
|
189
|
+
plt.ylabel("loss or accuracy")
|
190
|
+
|
191
|
+
plt.xlabel("epochs")
|
192
|
+
|
193
|
+
plt.show()
|
182
194
|
|
183
195
|
|
184
196
|
|