質問編集履歴

1

質問内容の一部が解決したため、編集

2021/06/03 03:19

投稿

yukineko252
yukineko252

スコア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
- また、データのアンバランス問題のためとしてweightが設定できますが、
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
- loss3 = -x[0,target[0]]+torch.log(torch.exp(x[0,0]+torch.exp(x[0,1]))) #検証用の計算
47
+ print(loss1, loss2)
54
48
 
49
+
50
+
55
- print(loss1, loss2, loss3)
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') tensor(2.4254, device='cuda:0')
59
+ tensor(1.0071, device='cuda:0') tensor(1.0071, device='cuda:0')
62
60
 
63
61
  ```