1. Tensor의 노름
1.1 1-D Tensor 복습
이전에 기록해둔 포스트 참조(아래 링크)
4강>
Tensor 간 크기 비교는 요소의 갯수 비교가 아닌 “Tensor 간 노름 비교”를 통해
1.2 Ln 노름
- L1 노름
- 정의 : Tensor 요소들의 절댓값의 합
-
기하학적 표현

$L_1$ 노름 → 맨해튼의 격자형 도로와 유사

→ $L_1$ 노름을 맨해튼 노름이라고도 함
- 코드 표현
a = torch.tensor([4.0, 3.0])⇒L1 = torch.norm(a, p=1)
- $L_2$ 노름
- 정의 : Tensor 요소들의 제곱합의 제곱근(=거리)
-
기하학적 표현
→ $L_2$ 노름을 유클리드 노름이라 부름 - 코드 표현
a = torch.tensor([4.0, 3.0])⇒L2 = torch.norm(a, p=2)
- $L_∞$ 노름
- 정의 : Tensor 요소들의 절댓값 중 최댓값
-
기하학적 표현
$L_∞ = max(|x1|, |x2|)$ - 코드 표현
a = torch.tensor([4.0, 3.0])⇒L∞ = torch.norm(a, p = float(’inf’))(= torch.max(a.abs())
-
노름에 따른 기하학적 의미

⇒ 성능 평가에 활용
2. 유사도
2.1 유사도
: ‘1-D Vector가 얼마나 유사한지’ ⇒ 군집화 알고리즘에서 데이터 유사도를 판단하는 중요한 기준
-
- 맨해튼 유사도
- 두 1-D Tensor 사이의 맨해튼 거리를 역수로 변환한 값
- 맨해튼 거리 - 맨해튼 유사도 : 반비례
- 유사도가 1에 가까울 수록 두 Tensor는 유사하다고 판단

- 코드 표현
manhatten_distance = torch.norm(b-c, p=1)manhatten_similarity = 1 / (1 + manhatten_distance)
-
- 유클리드 유사도
- 두 1-D Tensor 사이의 유클리드 거리를 역수로 변환한 값
- 유클리드 거리 - 유클리드 유사도 : 반비례
- 유사도가 1에 가까울 수록 두 Tensor는 유사하다고 판단

- 코드 표현
euclidean_distance = torch.norm(b-c, p=2)euclidean_similarity = 1 / (1 + euclidean_distance)
-
코사인 유사도
: 두 1-D Tensor 사이의 각도를 측정하여 계산한 값
- 유사도가 1에 가까울 수록 두 Tensor는 유사하다고 판단
- 두 벡터(=1-D Vector) 간 내적을 이용한 코사인 유사도 값 추출
- 내적 : 두 1-D Tensor 간 관계를 하나의 0-D Tensor로 변환
- 두 가지 방법
- 각 Tensor의 요소를 곱함 :
torch.dot(b, c) -
각 Tensor의 길이를 곱함(제이 코사인 법칙, 정사영)
:
torch.dot(b, c) / (torch.norm(b, p=2) * torch.norm(c, p=2))

$θ$는 1-D Tensor $x, y$에 대한 함수로 표현 가능 → $(x, y)$로 작성
- 각 Tensor의 요소를 곱함 :
3. 2-D Tensor의 곱셈 연산
3.1 2-D Tensor의 행렬 곱셈 연산
- 신경망 구현의 핵심 연산
- 고등학교 때 배운 행렬 연산과 동일(옛날 얘기인가,,,)
-
코드 표현
D = torch.tensor([[1, 1, 3], [4, 5, 6], [7, 8, 9]])E = torch.tensor([[1, 0], [1, -1], [2, 1]])가 주어졌을 때, (= D, E는 서로 곱셈 가능)
D.matmul(E)D.mm(E)D@E
3.2 2-D Tensor의 행렬 곱셈 연산 활용
- 흑백 이미지의 좌우 대칭 이동
- 행렬의 곱셈연산을 활용해 대칭 이동 수행 가능(좌우대칭: $y$축 기준)
→ 이미지를 나타내는 대상 행렬 우측에
A = torch.tensor([[0, 0, 1], [0, 1, 0], [1, 0, 0]])를 곱해서
- 행렬의 곱셈연산을 활용해 대칭 이동 수행 가능(좌우대칭: $y$축 기준)
→ 이미지를 나타내는 대상 행렬 우측에
- 흑백 이미지의 상하 대칭 이동
- 행렬의 곱셈연산을 활용해 대칭 이동 수행 가능(상하대칭: $x$축 기준)
→ 이미지를 나타내는 대상 행렬 우측에
B = torch.tensor([[0, 0, 1], [0, 1, 0], [1, 0, 0]])를 곱해서
- 행렬의 곱셈연산을 활용해 대칭 이동 수행 가능(상하대칭: $x$축 기준)
→ 이미지를 나타내는 대상 행렬 우측에
chat_bubble 댓글남기기
댓글남기기