Как выполняется взаимная корреляция в этом фрагменте кода - PullRequest
0 голосов
/ 03 апреля 2019

Я читаю исходный код сиамской сети. Но я не могу понять, что происходит в коде взаимной корреляции. Код:

def xcorr(self, z, x):
    """
    correlation layer as in the original SiamFC (convolution process in fact)
    """
    batch_size_x, channel_x, w_x, h_x = x.shape
    x = torch.reshape(x, (1, batch_size_x * channel_x, w_x, h_x))

    # group convolution
    out = F.conv2d(x, z, groups = batch_size_x)

    batch_size_out, channel_out, w_out, h_out = out.shape
    xcorr_out = torch.reshape(out, (channel_out, batch_size_out, w_out, h_out))

    return xcorr_out

Полный исходный код

Я вижу, что xcorr можно выполнить с помощью операции conv. Но что за идея здесь делать два раза переделывать? (Два входа функции xcorr имеют одинаковый размер на # batch-size и #channel)

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