перевести из пирота в тензорный поток - PullRequest
0 голосов
/ 03 мая 2019

Что делает эта строка кода в PyTorch?

normA = A.mul(A).sum(dim=1).sum(dim=1).sqrt()
Y = A.div(normA.view(batchSize, 1, 1).expand_as(A))

Обычно это должен быть второй термин, подобный этому:

torch.div(input, value, out=None) → Tensor

1 Ответ

2 голосов
/ 04 мая 2019

Ваш вопрос немного неясен, потому что вы не упомянули, какова форма тензора A и что такое normA.Но я предполагаю следующее:

  • A - тензор формы (batchSize, X, Y)
  • normA - тензор норм всех элементов партии A и его'shape is (batchSize).

Итак, вы нормализуете тензор A со следующим утверждением.

A.div(normA.view(batchSize, 1, 1).expand_as(A))

Где, normA.view(batchSize, 1, 1).expand_as(A) сначала преобразуется в тензорформы (batchSize, X, Y) и затем вы делите A на полученный тензор.

Пример (созданный по моему предположению):

batchSize = 8

A = torch.randn(batchSize, 5, 5)
normA = A.norm(dim=-1).norm(dim=-1)
print(normA.size()) # torch.Size([8])

normA = normA.view(batchSize, 1, 1).expand_as(A)
print(normA.size()) # torch.Size([8, 5, 5])

A = A.div(normA)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...