Как проверить, равны ли два тензора или матрицы Факела?

Вы также можете это сделать

[Flags]
public enum MyEnum
{
    None   = 0,
    First  = 1 << 0,
    Second = 1 << 1,
    Third  = 1 << 2,
    Fourth = 1 << 3
}

Я считаю, что бит-сдвиг проще, чем ввод 4,8,16,32 и так далее. Это не влияет на ваш код, потому что это все сделано во время компиляции

24
задан prosti 20 September 2019 в 08:59
поделиться

2 ответа

Для сравнения тензоров, можно сделать мудрый элемент:

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())
3
ответ дан 28 November 2019 в 06:51
поделиться

Вы можете преобразовывать эти два тензора в массивы 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

дало бы Вам довольно хорошую идею того, как равняется, они.

0
ответ дан 28 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: