1.前提、実現したいこと
256×256ピクセルの特徴マップから1点を選び、ラベルを見てその1点と同じクラスだったら1、それ以外の場合は-1を入れた256×256のmapを作っています。
2.発生している問題、エラーメッセージ
ラベルを見てその1点と同じクラスだったら1、それ以外の場合は0を入れた256×256のmapなら、
python3
1# targets[:, w, h].view(-1, 1, 1) <- 選んだ点 2# targets <- 256×256の特徴map 3map = 1.0 * (targets[:, w, h].view(-1, 1, 1) == targets)
のコードで実行でせることができました。0ではなくで-1にするときのコードの書き方に困っています。
3.該当のソースコード
このコードだと、以下のようなエラーメッセージが出ます。
python3
1if targets[:, w, h].view(-1, 1, 1) == targets: 2 map = 1 3 4 else: 5 map = -1 6 7# エラーメッセージ 8File "main2.py", line 341, in <module> 9 train_loss1, train_loss2, train_accuracy = train(epoch) # train 10 File "main2.py", line 108, in train 11 loss1 = criterion1(output, targets) 12 File "/opt/conda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 727, in _call_impl 13 result = self.forward(*input, **kwargs) 14 File "/home/hotta1080/moeka/Unet/Loss_a.py", line 88, in forward 15 if targets[:, w, h].view(-1, 1, 1) == targets: 16RuntimeError: Boolean value of Tensor with more than one value is ambiguous
4.自分で調べたことや試したこと
テンソルをif文に渡すときに起こるエラーだと書いてあったので、if文に変えたことで起こってしまったエラーだと思うですが対処に困っています。
5.補足情報
targetsはラベルで[batch size, W, H]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。