質問編集履歴

15

初心者マーク

2021/07/11 13:51

投稿

saruu
saruu

スコア2

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

題名を修正

2021/07/11 13:51

投稿

saruu
saruu

スコア2

test CHANGED
@@ -1 +1 @@
1
- SimpleConvNetでの学習が行われない
1
+ CNNでの学習がうまく行われない
test CHANGED
File without changes

13

結果のグラフを追記しました。

2021/07/11 12:38

投稿

saruu
saruu

スコア2

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

画像の追加

2021/07/11 12:34

投稿

saruu
saruu

スコア2

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
- class Convolution:
381
+
382
-
383
- def __init__(self, W, b, stride, pad):
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
- ![![イメージ説明](01c22f7c21409f4f22673548c8c80bc6.png)](e12bc0a0d94fc68879daabc38cd6acc9.png)
401
+ ![![イメージ説明](01c22f7c21409f4f22673548c8c80bc6.png)

11

ソースを一部修正

2021/07/11 12:33

投稿

saruu
saruu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -168,11 +168,11 @@
168
168
 
169
169
  #学習経過の記録
170
170
 
171
- train_loss.append(snet.loss(x, train_labels))
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, train_labels))
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
+ ![![イメージ説明](01c22f7c21409f4f22673548c8c80bc6.png)](e12bc0a0d94fc68879daabc38cd6acc9.png)

10

初心者アイコンの取り消し

2021/07/11 12:29

投稿

saruu
saruu

スコア2

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

試したことを修正しました。

2021/07/10 14:00

投稿

saruu
saruu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -484,4 +484,4 @@
484
484
 
485
485
  書籍(ゼロから作るdeep learning)などを参照しました。
486
486
 
487
- 変数がってないとかが原因なのかな?と思のですが、なかなか解決できない状況です。
487
+ 変数っているが原因かな?と思い調べてみたのですが、なかなか解決できない状況です。

8

試したことを追記しました。

2021/07/10 04:33

投稿

saruu
saruu

スコア2

test CHANGED
File without changes
test CHANGED
@@ -482,8 +482,6 @@
482
482
 
483
483
 
484
484
 
485
- ソースは書籍(ゼロから作るdeep learning)などを参照しました。
485
+ 書籍(ゼロから作るdeep learning)などを参照しました。
486
-
487
-
488
-
486
+
489
- ### 補足情報(FW/ツールバージョンど)
487
+ 変数が合ってないとかが原因な?と思うのですが、なかなか解決できない状況です。

7

タイトルを具体的に修正しました。

2021/07/08 13:05

投稿

saruu
saruu

スコア2

test CHANGED
@@ -1 +1 @@
1
- CNNを用いた学習ができません
1
+ SimpleConvNetでの学習が行われない
test CHANGED
File without changes

6

タグを追加しました。

2021/07/06 13:44

投稿

saruu
saruu

スコア2

test CHANGED
File without changes
test CHANGED
File without changes

5

誤字を修正しました。

2021/07/05 11:33

投稿

saruu
saruu

スコア2

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=10, weight_init_std=0.01):
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

誤植を修正しました。

2021/07/05 11:31

投稿

saruu
saruu

スコア2

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

質問内容を具体的に修正しました。

2021/07/05 05:02

投稿

saruu
saruu

スコア2

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

誤植を修正しました。

2021/07/05 05:01

投稿

saruu
saruu

スコア2

test CHANGED
@@ -1 +1 @@
1
- CNNを用いた学習ができない
1
+ CNNを用いた学習ができません
test CHANGED
File without changes

1

画像添付がうまく出来ていなかったので修正しました

2021/07/04 13:39

投稿

saruu
saruu

スコア2

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
- ![イメージ説明](69dacdd0c7ca0dc60ec1b8f818998b2e.png)
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