실습 · 연습문제 1개
EGNN의 좌표 갱신 구현하기 egnn-coordinate-update
EGNN 층의 좌표 갱신은 상대 벡터에 불변 스칼라 가중치를 곱해 더한다.
여기서 는 거리 제곱을 받아 스칼라 가중치를 내는 함수다(실제 EGNN에서는 노드 특징도 함께 받는 MLP지만, 이 문제에서는 거리 제곱만 받는다).
함수 egnn_coords(x, phi)를 완성해 갱신된 좌표 x_new(shape (N, D))를 반환한다.
| 인자 | 뜻 |
|---|---|
x |
(N, D) 좌표, |
phi |
거리 제곱 배열 (N, N)을 받아 같은 shape의 가중치를 돌려주는 함수(원소별로 동작) |
항은 상대 벡터가 0이라 결과에 영향이 없지만, 를 대각 성분에 적용해도 괜찮도록 구현한다.
테스트는 다음을 확인한다.
- 입력을 회전·반사 하고 평행이동 하면 출력이 가 된다.
- 노드 순서를 바꾸면 출력 순서도 똑같이 바뀐다.
- 두 점의 간단한 경우에 손으로 계산한 값과 같다.
힌트: diff = x[:, None, :] - x[None, :, :]는 (N, N, D) shape의 모든 다.