質問編集履歴

4

内容を変更しました。

2020/08/14 06:21

投稿

oinari03
oinari03

スコア59

test CHANGED
File without changes
test CHANGED
@@ -304,7 +304,7 @@
304
304
 
305
305
  ・Linearの引数。ドキュメントではout_featureってなっていましたがどういう値をいれればいいのかわかりません。
306
306
 
307
- ・softmaxの引数の適切なdimの数字、使い方があっているのか知りたいです。最後に確率であらわされるはずだと思ってます。
307
+ ・softmaxの引数の適切なdimの数字0とか1で何がちがうのか、使い方があっているのか知りたいです。最後に確率であらわされるはずだと思ってます。
308
308
 
309
309
 
310
310
 

3

コードとわからない部分を編集しました。

2020/08/14 06:21

投稿

oinari03
oinari03

スコア59

test CHANGED
@@ -1 +1 @@
1
- pytorchモデルの書き方がわからない。具体的にforwardの中身がどうなっているのか知りたい
1
+ [pytorchモデル]forwardの中身が知りたい。特にsoftmaxのdimの決め方がわからない。
test CHANGED
@@ -48,6 +48,8 @@
48
48
 
49
49
 
50
50
 
51
+
52
+
51
53
  import torch
52
54
 
53
55
  import torch.nn as nn
@@ -88,7 +90,7 @@
88
90
 
89
91
  self.conv1 = nn.Conv2d(3, 16, 3)
90
92
 
91
- print(self.conv1.weight)
93
+ # print(self.conv1.weight)
92
94
 
93
95
  self.pool1 = nn.MaxPool2d(2,stride=2)
94
96
 
@@ -118,13 +120,17 @@
118
120
 
119
121
 
120
122
 
123
+ self.softmax = nn.Softmax(dim=1)
124
+
125
+
126
+
121
127
 
122
128
 
123
129
 
124
130
 
125
131
  # an affine operation: y = Wx + b
126
132
 
127
- # linearにおけるout_featuresとは
133
+ # linearにおけるout_featuresとはなんだろうか
128
134
 
129
135
  self.fc1 = nn.Linear(256 * 3 * 3, 120)
130
136
 
@@ -192,6 +198,8 @@
192
198
 
193
199
  x = self.fc3(x)
194
200
 
201
+ x = self.softmax(x)
202
+
195
203
 
196
204
 
197
205
  return x
@@ -206,11 +214,7 @@
206
214
 
207
215
  net = Net()
208
216
 
209
- # input= torch.randn(128,20)
217
+
210
-
211
-
212
-
213
- # print(net.forward(input))
214
218
 
215
219
  print(net)
216
220
 
@@ -226,6 +230,8 @@
226
230
 
227
231
 
228
232
 
233
+
234
+
229
235
  ```
230
236
 
231
237
 
@@ -236,54 +242,6 @@
236
242
 
237
243
  ```
238
244
 
239
- [[[-0.0633, 0.0949, -0.1568],
240
-
241
- [ 0.0500, 0.0413, 0.0849],
242
-
243
- [-0.1799, -0.1010, -0.0777]],
244
-
245
-
246
-
247
- [[ 0.0214, 0.0727, -0.1571],
248
-
249
- [-0.1234, 0.1118, -0.1654],
250
-
251
- [-0.1792, 0.1694, -0.1765]],
252
-
253
-
254
-
255
- [[ 0.1505, -0.1342, 0.1366],
256
-
257
- [-0.0817, -0.1172, -0.0465],
258
-
259
- [-0.1790, 0.0543, -0.0363]]],
260
-
261
-
262
-
263
-
264
-
265
- [[[-0.1117, -0.1135, -0.0415],
266
-
267
- [ 0.0203, 0.0146, -0.1017],
268
-
269
- [ 0.1475, -0.0052, -0.1613]],
270
-
271
-
272
-
273
- [[-0.0897, -0.1899, 0.1297],
274
-
275
- [-0.1068, -0.1308, -0.0407],
276
-
277
- [ 0.1829, -0.0268, 0.1219]],
278
-
279
-
280
-
281
- [[ 0.0152, 0.0256, 0.0292],
282
-
283
- [-0.0563, 0.0864, -0.0593],
284
-
285
- [ 0.1793, 0.0180, 0.1540]]]], requires_grad=True)
286
-
287
245
  Net(
288
246
 
289
247
  (relu): ReLU()
@@ -308,6 +266,8 @@
308
266
 
309
267
  (pool5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
310
268
 
269
+ (softmax): Softmax(dim=1)
270
+
311
271
  (fc1): Linear(in_features=2304, out_features=120, bias=True)
312
272
 
313
273
  (fc2): Linear(in_features=120, out_features=84, bias=True)
@@ -334,6 +294,8 @@
334
294
 
335
295
  間にどういった法則性で小さくしていくかわからなかったため120、84のような適当な値になってしまいました。
336
296
 
297
+ softmaxの書き方がどうなっているのかわからなかったのでdim=1にしています。
298
+
337
299
 
338
300
 
339
301
  ### わからないこと(よろしくお願いします。)
@@ -342,6 +304,8 @@
342
304
 
343
305
  ・Linearの引数。ドキュメントではout_featureってなっていましたがどういう値をいれればいいのかわかりません。
344
306
 
307
+ ・softmaxの引数の適切なdimの数字、使い方があっているのか知りたいです。最後に確率であらわされるはずだと思ってます。
308
+
345
309
 
346
310
 
347
311
  ・forwardがどのようになっているのか知りたいです。
@@ -356,6 +320,8 @@
356
320
 
357
321
  以下の書き方を参照しましたがわからない点があります。
358
322
 
323
+ [softmaxのドキュメント](https://pytorch.org/docs/master/generated/torch.nn.Softmax.html)
324
+
359
325
  [modelの書き方ドキュメント](https://pytorch.org/tutorials/beginner/former_torchies/nnft_tutorial.html)
360
326
 
361
327
  [nn.Linearのドキュメント](https://pytorch.org/docs/stable/generated/torch.nn.Linear.html#torch.nn.Linear)

2

わからないところを編集しました。

2020/08/14 05:54

投稿

oinari03
oinari03

スコア59

test CHANGED
File without changes
test CHANGED
@@ -344,7 +344,11 @@
344
344
 
345
345
 
346
346
 
347
- ・forwardがどのようになっているのか知りたいです
347
+ ・forwardがどのようになっているのか知りたいです
348
+
349
+ →例えば、xにどんな値を与えたらいいかのコードを示していただけると助かります。
350
+
351
+ →それでクラスを呼び出したときにxの中身がどう変化しているのかが知りたいです。
348
352
 
349
353
  ・そもそもinitやforwardの書き方があっているのか確認してほしいです。
350
354
 

1

コードと出力を変更しました。

2020/08/14 04:50

投稿

oinari03
oinari03

スコア59

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,13 @@
38
38
 
39
39
 
40
40
 
41
+
42
+
43
+
44
+
45
+
46
+
41
- ```python
47
+ ```
42
48
 
43
49
 
44
50
 
@@ -76,39 +82,39 @@
76
82
 
77
83
  self.relu = nn.ReLU()
78
84
 
79
- self.pool1 = nn.max_pool2d(2,stride=2)
80
-
81
85
 
82
86
 
83
87
  # input: RGB 3 ,output : 16, kernel 3(default)
84
88
 
85
89
  self.conv1 = nn.Conv2d(3, 16, 3)
86
90
 
91
+ print(self.conv1.weight)
92
+
87
- self.pool1 = nn.max_pool2d(2,stride=2)
93
+ self.pool1 = nn.MaxPool2d(2,stride=2)
88
94
 
89
95
 
90
96
 
91
97
  self.conv2 = nn.Conv2d(16, 32, 3)
92
98
 
93
- self.pool2 = nn.max_pool2d(2,stride=2)
99
+ self.pool2 = nn.MaxPool2d(2,stride=2)
94
100
 
95
101
 
96
102
 
97
103
  self.conv3 = nn.Conv2d(32, 64, 3)
98
104
 
99
- self.pool3 = nn.max_pool2d(2,stride=2)
105
+ self.pool3 = nn.MaxPool2d(2,stride=2)
100
106
 
101
107
 
102
108
 
103
109
  self.conv4 = nn.Conv2d(64, 128, 3)
104
110
 
105
- self.pool4 = nn.max_pool2d(2,stride=2)
111
+ self.pool4 = nn.MaxPool2d(2,stride=2)
106
112
 
107
113
 
108
114
 
109
115
  self.conv5 = nn.Conv2d(128, 256, 3)
110
116
 
111
- self.pool5 = nn.max_pool2d(2,stride=2)
117
+ self.pool5 = nn.MaxPool2d(2,stride=2)
112
118
 
113
119
 
114
120
 
@@ -118,7 +124,7 @@
118
124
 
119
125
  # an affine operation: y = Wx + b
120
126
 
121
- # out_featuresって何ぞや
127
+ # linearにおけるout_featuresとは
122
128
 
123
129
  self.fc1 = nn.Linear(256 * 3 * 3, 120)
124
130
 
@@ -130,6 +136,8 @@
130
136
 
131
137
  def forward(self, x):
132
138
 
139
+ # conv relu poolの流れを実行してみる
140
+
133
141
 
134
142
 
135
143
  x = self.conv1(x)
@@ -198,11 +206,13 @@
198
206
 
199
207
  net = Net()
200
208
 
201
- input= torch.randn(128,20)
209
+ # input= torch.randn(128,20)
202
-
203
-
204
-
210
+
211
+
212
+
205
- print(net(input))
213
+ # print(net.forward(input))
214
+
215
+ print(net)
206
216
 
207
217
  # params = list(net.parameters())
208
218
 
@@ -212,6 +222,10 @@
212
222
 
213
223
 
214
224
 
225
+
226
+
227
+
228
+
215
229
  ```
216
230
 
217
231
 
@@ -222,17 +236,85 @@
222
236
 
223
237
  ```
224
238
 
239
+ [[[-0.0633, 0.0949, -0.1568],
240
+
241
+ [ 0.0500, 0.0413, 0.0849],
242
+
243
+ [-0.1799, -0.1010, -0.0777]],
244
+
245
+
246
+
247
+ [[ 0.0214, 0.0727, -0.1571],
248
+
249
+ [-0.1234, 0.1118, -0.1654],
250
+
251
+ [-0.1792, 0.1694, -0.1765]],
252
+
253
+
254
+
255
+ [[ 0.1505, -0.1342, 0.1366],
256
+
257
+ [-0.0817, -0.1172, -0.0465],
258
+
225
- Traceback (most recent call last):
259
+ [-0.1790, 0.0543, -0.0363]]],
260
+
261
+
262
+
263
+
264
+
226
-
265
+ [[[-0.1117, -0.1135, -0.0415],
266
+
267
+ [ 0.0203, 0.0146, -0.1017],
268
+
269
+ [ 0.1475, -0.0052, -0.1613]],
270
+
271
+
272
+
273
+ [[-0.0897, -0.1899, 0.1297],
274
+
275
+ [-0.1068, -0.1308, -0.0407],
276
+
277
+ [ 0.1829, -0.0268, 0.1219]],
278
+
279
+
280
+
281
+ [[ 0.0152, 0.0256, 0.0292],
282
+
283
+ [-0.0563, 0.0864, -0.0593],
284
+
227
- File "model.py", line 75, in <module>
285
+ [ 0.1793, 0.0180, 0.1540]]]], requires_grad=True)
286
+
228
-
287
+ Net(
288
+
229
- net = Net()
289
+ (relu): ReLU()
230
-
231
- File "model.py", line 18, in __init__
290
+
232
-
233
- self.pool1 = nn.max_pool2d(2,stride=2)
291
+ (conv1): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1))
234
-
292
+
235
- AttributeError: module 'torch.nn' has no attribute 'max_pool2d'
293
+ (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
294
+
295
+ (conv2): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1))
296
+
297
+ (pool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
298
+
299
+ (conv3): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))
300
+
301
+ (pool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
302
+
303
+ (conv4): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1))
304
+
305
+ (pool4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
306
+
307
+ (conv5): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1))
308
+
309
+ (pool5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
310
+
311
+ (fc1): Linear(in_features=2304, out_features=120, bias=True)
312
+
313
+ (fc2): Linear(in_features=120, out_features=84, bias=True)
314
+
315
+ (fc3): Linear(in_features=84, out_features=2, bias=True)
316
+
317
+ )
236
318
 
237
319
  ```
238
320
 
@@ -260,7 +342,7 @@
260
342
 
261
343
  ・Linearの引数。ドキュメントではout_featureってなっていましたがどういう値をいれればいいのかわかりません。
262
344
 
263
- ・最後にforwardの中身、特にxはどのように変化しているのか調べようとしましたが以上のようなエラーが出てしまって、forwardにアクセスできません。
345
+
264
346
 
265
347
  ・forwardがどのようになっているのか知りたいです
266
348