Skip to content

simple questions about l2_normalize in baseline #300

@visionNoob

Description

@visionNoob

현재 baseline의 l2_normalize 함수가 예상대로 제대로 동작하지 않는 것 같습니다.
baseline에서 (제가 이해한 바로는) query, reference vectors간의 cosine similarity 계산에 앞서
vector normalization을 수행합니다.
https://github.com/AiHackathon2018/AI-Vision/blob/5596b8e45541fc980d7d5effb80096872511c797/main.py#L44-L51

이때 l2_normalize 함수에서 np.linalg.norm를 이용해서 벡터의 norm 을 계산하는데, 현재 코드는 axis가 명시되어 있지 않아서 전체 matrix의 norm을 계산합니다. 아마도, column vectors별로 norm이 각각 계산이 되어야 cosine similarity가 제대로 계산되지 않을까 싶습니다.

https://github.com/AiHackathon2018/AI-Vision/blob/5596b8e45541fc980d7d5effb80096872511c797/main.py#L68-L72

image
(see also, https://colab.research.google.com/drive/1XJ82_111ufE64CeA3ymMPisWYnePoyNK)

제안하고 싶은 해결방법이 있나요?

def l2_normalize(v):
    norm = np.linalg.norm(v, axis=1, keepdims=True)
    return np.divide(v, norm, where=norm!=0)  # only divide nonzeros else 1

https://github.com/insurgent92/AI-Vision/blob/c679010879078dbcf439310b355af081109290d4/main.py#L98-L100

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions