質問編集履歴

2

train関数の追加

2021/05/28 08:34

投稿

huskies
huskies

スコア2

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,72 @@
19
19
  - Flatten作業にてimageをvectorに変更
20
20
 
21
21
  - Fully-connected linearレイヤーには10個のアウトプットを生成
22
+
23
+
24
+
25
+ ### 現状のエラーメッセージ
26
+
27
+
28
+
29
+ `RuntimeError: shape '[-1, 4900]' is invalid for input of size 140000`
30
+
31
+
32
+
33
+ なお、CNNネットワークは以下のtrain関数で学習させています。以下の通り、CNNを学習させる段階でエラーです。
34
+
35
+ ```
36
+
37
+ def train(net, train_loader, test_loader,
38
+
39
+ num_epochs=NUM_EPOCHS, learning_rate=LEARNING_RATE,
40
+
41
+ compute_accs=False):
42
+
43
+ criterion = nn.CrossEntropyLoss()
44
+
45
+ optimizer = torch.optim.Adam(net.parameters(), lr=learning_rate)
46
+
47
+
48
+
49
+ train_accs = []
50
+
51
+ test_accs = []
52
+
53
+
54
+
55
+ for epoch in range(1, num_epochs + 1):
56
+
57
+ batch_num = 1
58
+
59
+ for images, labels in train_loader:
60
+
61
+
62
+
63
+ # If you are using a GPU, speed up computation by moving values to the GPU
64
+
65
+ if torch.cuda.is_available():
66
+
67
+ net = net.cuda()
68
+
69
+ images = images.cuda()
70
+
71
+ labels = labels.cuda()
72
+
73
+
74
+
75
+
76
+
77
+ optimizer.zero_grad()
78
+
79
+ outputs = net(images) # CNNを学習させるこの段階でエラー
80
+
81
+ loss = criterion(outputs, labels)
82
+
83
+ loss.backward()
84
+
85
+ optimizer.step()
86
+
87
+ ```
22
88
 
23
89
 
24
90
 
@@ -56,15 +122,11 @@
56
122
 
57
123
  x = self.relu(x)
58
124
 
59
-
60
-
61
125
  # Run max pooling over x
62
126
 
63
127
  x = self.pool(x)
64
128
 
65
129
  print(x.shape)
66
-
67
-
68
130
 
69
131
  # flatten x:おそらくここでエラー発生
70
132
 

1

誤字を修正しました

2021/05/28 08:34

投稿

huskies
huskies

スコア2

test CHANGED
File without changes
test CHANGED
@@ -2,21 +2,23 @@
2
2
 
3
3
 
4
4
 
5
- PyTorchを用いてCNN(畳み込みニューラルネットワーク)の実装を進めております。
5
+ PyTorchを用いてCNN(畳み込みニューラルネットワーク)の実装を進めておりますが、CNNへの理解が乏しく上手く実装できておりません
6
-
7
- その中で、
8
6
 
9
7
 
10
8
 
11
- ### 発生している問題・エラーメッセージ
9
+ ### 前提
12
10
 
13
11
 
14
12
 
15
- ```
13
+ - Convolution Layerにはカーネルのサイズを width = 5, depth = 25を利用
16
14
 
17
- エラーメッセージ
15
+ - ReLu活性化関数を利用
18
16
 
17
+ - max-poolにはカーネルサイズを width = 2, stride = 2を利用
18
+
19
- ```
19
+ - Flatten作業にてimageをvectorに変更
20
+
21
+ - Fully-connected linearレイヤーには10個のアウトプットを生成
20
22
 
21
23
 
22
24
 
@@ -36,9 +38,9 @@
36
38
 
37
39
  self.conv1 = torch.nn.Conv2d(3, 25, kernel_size = (5, 25))
38
40
 
39
- self.pool = torch.nn.MaxPool2d(kernel_size = (2, 2), stride = (2, 2))
41
+ self.pool = torch.nn.MaxPool2d(kernel_size = 2, stride = 2)
40
42
 
41
- self.fc1 = torch.nn.Linear(25 * 14 * 14, 10) # 2
43
+ self.fc1 = torch.nn.Linear(25 * 14 * 14, 10)
42
44
 
43
45
 
44
46
 
@@ -60,11 +62,11 @@
60
62
 
61
63
  x = self.pool(x)
62
64
 
65
+ print(x.shape)
63
66
 
64
67
 
65
- # flatten x with dimension 0
66
68
 
67
-
69
+ # flatten x:おそらくここでエラー発生
68
70
 
69
71
  x = x.view(-1, 25 * 14 * 14)
70
72
 
@@ -86,7 +88,13 @@
86
88
 
87
89
 
88
90
 
89
- ここ問題に対し試したことを記載しい。
91
+ おそらくflattenする際`x.view()`を用いいるの点が間違っているのか思います。PyTorchチュートリアルなど[見ると](https://pytorch.org/tutorials/recipes/recipes/defining_a_neural_network.html)、`torch.flatten`を用いおり、こちらの方が良さそうなのですが、ま少々曖昧なためご教授ただければ幸いです
92
+
93
+
94
+
95
+ また、その他の実装段階で前提条件に当てはまっていない箇所があればご指摘いただければと思います。
96
+
97
+
90
98
 
91
99
 
92
100
 
@@ -94,6 +102,6 @@
94
102
 
95
103
 
96
104
 
97
- こにより詳細な情報を記載してください。
105
+ ちらがCNNのイメージ図です
98
106
 
99
107
  ![イメージ説明](870e1954b9efcc25c9a0193faa0a0681.png)