Вы также можете это сделать
[Flags]
public enum MyEnum
{
None = 0,
First = 1 << 0,
Second = 1 << 1,
Third = 1 << 2,
Fourth = 1 << 3
}
Я считаю, что бит-сдвиг проще, чем ввод 4,8,16,32 и так далее. Это не влияет на ваш код, потому что это все сделано во время компиляции
Для сравнения тензоров, можно сделать мудрый элемент:
torch.eq
мудрый элемент:
torch.eq(torch.tensor([[1., 2.], [3., 4.]]), torch.tensor([[1., 1.], [4., 4.]]))
tensor([[True, False], [False, True]])
Или torch.equal
для целого тензора точно:
torch.equal(torch.tensor([[1., 2.], [3, 4.]]), torch.tensor([[1., 1.], [4., 4.]]))
# False
torch.equal(torch.tensor([[1., 2.], [3., 4.]]), torch.tensor([[1., 2.], [3., 4.]]))
# True
, Но затем Вы можете быть потеряны, потому что в какой-то момент существуют небольшие различия, которые требуется проигнорировать. Например, плавания 1.0
и 1.0000000001
достаточно близки, и можно полагать, что они равны. Для такого сравнения Вы имеете torch.allclose
.
torch.allclose(torch.tensor([[1., 2.], [3., 4.]]), torch.tensor([[1., 2.000000001], [3., 4.]]))
# True
В какой-то момент может быть важным для проверки элемента, мудрого, сколько элементов равно, по сравнению с полным числом элементов. Если у Вас есть два тензора dt1
, и dt2
Вы получаете число элементов [1 111] как [1 112]
, И с этой формулой Вы получаете процент:
print(torch.sum(torch.eq(dt1, dt2)).item()/dt1.nelement())
Вы можете преобразовывать эти два тензора в массивы numpy:
local tens_a = torch.Tensor((9,8,7,6));
local tens_b = torch.Tensor((9,8,7,6));
a=tens_a.numpy()
b=tens_b.numpy()
и затем что-то как
np.sum(a==b)
4
дало бы Вам довольно хорошую идею того, как равняется, они.