質問編集履歴

2

やってみたことを追加しました

2022/06/02 15:58

投稿

Ark
Ark

スコア12

test CHANGED
File without changes
test CHANGED
@@ -173,3 +173,7 @@
173
173
  plt.plot()
174
174
  ```
175
175
  ![精度の推移](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-29/ee3b11f7-4ce8-4678-9d50-4cf3092d77c2.png)
176
+
177
+ # 追記:やってみたこと
178
+ ・見た感じ、パラメータ数が足りていないのかと思ったので、畳み込み層を1つ追加してみた
179
+ →精度は変わらなかった

1

見やすいようにコードを分割しました。また自分で試したことを補足として追加しました。

2022/05/31 22:20

投稿

Ark
Ark

スコア12

test CHANGED
File without changes
test CHANGED
@@ -6,11 +6,22 @@
6
6
  データセットも前処理もモデルも同じなのになぜこうも結果に差が出るのかがわからずとてもモヤモヤしています。音声感情認識のモデルを実装したときも、論文のとおりに作っても中々精度が出ず、方向性がわからなくなり練習に戻ってきました。
7
7
 
8
8
  # 知りたいこと
9
+ ・訓練ロスとテストロス、訓練精度とテスト精度の記録を入れた
10
+ ・torch.to()関数でGPUを利用するようにした
9
- 訓練ロスとテストロス、訓練精度とテスト精度の記録を入れた以外はすべてサイトのコピペです。やっていることは同じなのになぜこうも精度が違うのかが知りたいです。問題のコードと、40エポック経過後のロスと精度の推移を添付します。どうかよろしくお願いします。
11
+ 以外はすべてサイトのコピペです。やっていることは同じなのになぜこうも精度が違うのかが知りたいです。問題のコードと、40エポック経過後のロスと精度の推移を添付します。どうかよろしくお願いします。
10
12
 
11
- ![ロス推移](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-29/86f07ddd-3382-4a3f-beb2-8bd32a3f6f62.png)
13
+ 補足:上記2つ改変を消して実行してみましたが、結果は変わらなかったのでこれらは原因ではないことがわかりました。
12
14
 
15
+ # 実行環境
16
+ CPU: Intel® Xeon(R) Silver 4208 CPU @ 2.10GHz × 16
13
- ![精度の推移](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-29/ee3b11f7-4ce8-4678-9d50-4cf3092d77c2.png)
17
+ GPU: NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2
18
+ OS: Ubuntu 18.04.5 LTS
19
+ 開発環境: Jupyter Notebook
20
+
21
+ # コード
22
+ すべてJupyter Notebook上で実行しました。実行したセルごとにまとめて添付します。
23
+
24
+ ## モジュールのインポート
14
25
  ```python
15
26
  import torch
16
27
  import torchvision
@@ -20,8 +31,9 @@
20
31
  import torch.nn as nn
21
32
  import torch.nn.functional as F
22
33
  import torch.optim as optim
23
-
34
+ ```
24
- # MNISTをロードする
35
+ ## MNISTをロードする
36
+ ```python
25
37
  transform = transforms.Compose(
26
38
  [transforms.ToTensor(),
27
39
  transforms.Normalize((0.5, ), (0.5, ))])
@@ -45,9 +57,10 @@
45
57
  num_workers=2)
46
58
 
47
59
  classes = tuple(np.linspace(0, 9, 10, dtype=np.uint8))
60
+ ```
48
61
 
49
- #モデルの定義
62
+ ## CNNモデルの定義
50
-
63
+ ```python
51
64
  class Net(nn.Module):
52
65
  def __init__(self):
53
66
  super(Net, self).__init__()
@@ -68,15 +81,16 @@
68
81
  x = self.dropout2(x)
69
82
  x = self.fc2(x)
70
83
  return x
71
-
84
+ ```
72
- #学習用コード
85
+ ## 学習用コード
73
-
86
+ ```python
74
87
  model = Net().to('cuda')
75
88
 
76
89
  criterion = nn.CrossEntropyLoss()
77
90
  optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
78
91
  epochs = 40
79
92
 
93
+ #ロスと精度記録用のリスト
80
94
  train_loss = []
81
95
  test_loss = []
82
96
  train_accuracy = []
@@ -139,5 +153,23 @@
139
153
  train_accuracy.append(correct / total)
140
154
 
141
155
  print('Finished Training')
156
+ ```
157
+ ## 結果の出力
142
158
 
159
+ ロスの出力と結果
160
+ ```python
161
+ plt.plot(train_loss, label='train_loss')
162
+ plt.plot(test_loss, label='test_loss')
163
+ plt.legend()
164
+ plt.plot()
143
165
  ```
166
+ ![ロスの推移](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-29/86f07ddd-3382-4a3f-beb2-8bd32a3f6f62.png)
167
+
168
+ 精度の出力と結果
169
+ ```python
170
+ plt.plot(train_accuracy, label='train_accuracy')
171
+ plt.plot(test_accuracy, label='test_accuracy')
172
+ plt.legend()
173
+ plt.plot()
174
+ ```
175
+ ![精度の推移](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-29/ee3b11f7-4ce8-4678-9d50-4cf3092d77c2.png)