質問編集履歴
1
質問内容の一部が解決したため、編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,23 +8,17 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
以下のようにロスが実際の計算と同じになるか検証しようとしたところ、
|
12
|
-
|
13
|
-
全く異なる値になりました。
|
14
|
-
|
15
|
-
torchの中では別の計算をしているのでしょうか?
|
16
|
-
|
17
|
-
実際の計算部分はpytorchの公式のページの計算式を見て計算しています。
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
11
|
+
データのアンバランス問題のためとしてweightが設定できますが、
|
22
12
|
|
23
13
|
設定しても値が全くかわりません。
|
24
14
|
|
25
15
|
これは仕様なのでしょうか。
|
26
16
|
|
27
17
|
|
18
|
+
|
19
|
+
また、公式のドキュメントを見たところ、log_ssoftmaxとNLL_Lossの組み合わせとあったので
|
20
|
+
|
21
|
+
その順番で値を計算し、重みを設定しましたが、重みが反映されておらず困っています。
|
28
22
|
|
29
23
|
### 該当のソースコード
|
30
24
|
|
@@ -50,14 +44,18 @@
|
|
50
44
|
|
51
45
|
loss2 = loss_fn_w(x, target) #pytorchでの重み付きの計算
|
52
46
|
|
53
|
-
loss
|
47
|
+
print(loss1, loss2)
|
54
48
|
|
49
|
+
|
50
|
+
|
55
|
-
|
51
|
+
sm = F.log_softmax(x, dim=1)
|
52
|
+
|
53
|
+
print(F.nll_loss(sm, target, weight=weights))
|
56
54
|
|
57
55
|
|
58
56
|
|
59
57
|
---出力---
|
60
58
|
|
61
|
-
tensor(1.0071, device='cuda:0') tensor(1.0071, device='cuda:0')
|
59
|
+
tensor(1.0071, device='cuda:0') tensor(1.0071, device='cuda:0')
|
62
60
|
|
63
61
|
```
|