Today I just do some simple calculation like
total_node = 0
correct_node = 0
correct_node2 = 0
for ....:
correct_node += torch.sum(target_sequence == pred)
correct_node2 += torch.sum(target_sequence == pred).data[0]
but I found that correct_node != correct_node2.
How could this happen?
lelouedec
(Lelouedec)
2
One you add a tensor the other a variable ?
correct_node is a python int, pred and target_sequence are Variables.
The result of correct_node is wrong, while the correct_node2 is correct.
You mean that the “+=” operator do not work properly for int and a variable?
lelouedec
(Lelouedec)
4
try correct node = correct note + sum(…)
I had a problem a while ago using +=
might be a solution
The problem remains.
It should not be the problem of operator “+=” since there are many codes that compute the total loss by “+=” operator.
OK, I got it.
torch.sum(target_sequence == pred) returns a ByteTensor, so the correct_node is a ByteTensor.
correct_node just overflows.
lelouedec
(Lelouedec)
7
hannn ok
nice , good to hear