LSTM Attention 알고리듬을 살펴보wk. hs 벡터에 포함된 각 단어 별 중요도를 나타내는 확률 가중치 벡터 a와 hs 벡터를 아마디르 곱셈 후 특정 축을 중심으로 합산하여 shape을 변경하는 기법을 볼 수 있다. 이 과정을 학습하자.
텐서플로우 리스트 데이터 A에 대해서 shape 과 argmax 값을 살펴보자.
일차원적 리스트 구조의 데이터는 (5,)로 표현된다.
argmax(A)에서 numpy=2는 A의 최대값이 위치한 30의 위치를 나타낸다.
1 | import tensorflow as tf A = tf.constant([2, 20, 30, 3, 6]) print(A.shape) tf.math.argmax(A) |
텐서플로우 2차원 리스트 데이터 B에 대해서 shape 과 argmax 값을 살펴보자.
2차원적 리스트 구조의 데이터는 (3,5)로 표현된다.
argmax 연산 결과는 최대값을 가지는 위치를 니타낸다.
2 | B = tf.constant([[2, 20, 30, 3, 6], [3, 11, 16, 1, 8],[14, 45, 23, 5, 27]]) print(B.shape) tf.math.argmax(B) |
다음과 같이 리스트 데이터 B를 정렬하여 출력해 보자. 매트릭스로 관점에서 보면 행이 3이고 열이 5인 3X5 가 된다. argmax(B)는 argmax(B,0) 즉 axis=0 조건과 같으며 axis=0은 아래 왼쪽 그림에서처럼 컬럼을 뜻한다. 따라서 각 컬럼의 최대값 위치는 [2, 2, 0, 2, 2]가 된다.
argmax(B,1) 에서 숫자 1 은 axis=1 즉 윗 그림에서처럼 행 즉 row를 뜻한다. 따라서 각 행의 최대값 위치는 [2, 2, 1]이 된다.
reduce_sum() 명령에서 axis = 0과 axis =1을 적용해 보자.
2 | B = tf.constant([[2, 20, 30, 3, 6], [3, 11, 16, 1, 8],[14, 45, 23, 5, 27]]) print(tf.reduce_sum(B,axis=0)) print(tf.reduce_sum(B,axis=1)) tf.Tensor([19 76 69 9 41], shape=(5,), dtype=int32) tf.Tensor([ 61 39 114], shape=(3,), dtype=int32) |
아래 그림의 axis 방향을 참조하여 합을 계산해 보자.
Tensor를 numpy() 로 상속받아 shape 과 결과를 출력해보자.
shape이 Tensor와 동일하며 결과 C는 Tensor에서 파이선 NumPy의 array([19,76,69,9,31])로 변환되었음을 알 수 있다.
3 | C = tf.reduce_sum(B,axis=0).numpy() print(C.shape) C |
'자연어처리' 카테고리의 다른 글
Attention 알고리듬 이해를 위한 Sequence To Sequence 알고리듬 (0) | 2023.03.05 |
---|---|
ChatGPT로 살펴보는 새로운 경쟁 (0) | 2023.01.23 |
word2vec, CBOW (Continuous Bags of Words) (0) | 2023.01.03 |
Simple Bow 알고리듬에서의 Back-propagation of Matrix Multiplication (0) | 2023.01.03 |
IMDB 영화 리뷰 데이타 베이스 Sentiment 분석 (0) | 2022.12.19 |