2021. 8. 16. 18:25ㆍAI/Deep learning
- 목차
0차원 텐서
스칼라값을 0차원 텐서
d = np.array(5)
print(d.ndim) # 0
print(d.shape) # () <- tensor의 크기는 없음
1차원 텐서 (1D 텐서)
벡터를 1차원 텐서라고 함
벡터의 차원과 텐서의 차원은 다른 개념
벡터에서의 차원(Dimensionality)은 하나의 축 내 차원들
텐서에서의 차원(Dimensionality)은 축의 개수
d = np.array([1, 2, 3, 4])
print(d.ndim) # 1
print(d.shape) # (4,)
2차원 텐서
행렬(matrix)을 2차원 텐서
d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(d.ndim) # 2
print(d.shape) # (3, 4)
수학적으로 행렬의 열을 열벡터로 부르거나, 열벡터를 열행렬로 부르는 것과 혼동해서는 안 됨
3차원 텐서
2차원 텐서를 단위로 한 번 더 배열하면 3차원 텐서
0차원 ~ 2차원 텐서는 각각 스칼라, 벡터, 행렬이라고 해도 무방
3차원 이상의 텐서부터 본격적으로 텐서
3차원 이상의 배열을 텐서라고 부름 (수학적 정의가 아님)
3차원 텐서의 구조를 이해하지 않으면, 복잡한 인공 신경망의 입, 출력값을 이해하는 것이 쉽지 않음
d = np.array([
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [10, 11, 12, 13, 14]],
[[15, 16, 17, 18, 19], [19, 20, 21, 22, 23], [23, 24, 25, 26, 27]]
])
print(d.ndim) # 3
print(d.shape) # (2, 3, 5)
자연어 처리에서 특히 자주 보게 되는 것이 이 3D 텐서
시퀀스 데이터(sequence data)를 표현할 때 자주 사용
시퀀스 데이터는 주로 단어의 시퀀스를 의미
시퀀스는 주로 문장이나 문서, 뉴스 기사 등의 텍스트가 될 수 있음
이 경우 3D 텐서는 (samples, timesteps, word_dim)
= (batch_size, timesteps, word_dim)
데이터의 개수
samples/batch_size
sequence length
timesteps
단어 표현 vector의 차원
word_dim
ex.
문서1 : I like NLP
문서2 : I like DL
문서3 : DL is AI
각 단어를 벡터화
원-핫 인코딩
워드 임베딩
원-핫 인코딩
단어 One-hot vector
I [1 0 0 0 0 0]
like [0 1 0 0 0 0]
NLP [0 0 1 0 0 0]
DL [0 0 0 1 0 0]
is [0 0 0 0 1 0]
AI [0 0 0 0 0 1]
batch
데이터를 여러개 묶어서 한 꺼번에 입력으로 사용하는 것
(3, 3, 6)의 크기를 지닌 3D tensor
[[[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0]],
[[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0]],
[[0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1]]]
그 이상의 텐서
3차원 텐서를 배열로 합치면 4차원 텐서
...
케라스에서의 텐서
위에서는 Numpy로 각 텐서의 ndim(차원)과 shape(크기)를 출력
케라스에서는
입력의 크기(shape)를 인자로 줄 때 input_shape라는 인자를 사용
input_shape(6, 5)
배치 크기를 32라고 지정
-> 이 텐서의 크기는 (32, 6, 5)을 의미
배치 크기까지 지정해주고 싶다면
batch_input_shape=(8, 2, 10)
그 외에도 입력의 속성 수를 의미하는 input_dim, 시퀀스 데이터의 길이를 의미하는 input_length 등의 인자도 사용합니다. 사실 input_shape의 두 개의 인자는 (input_length, input_dim)라고 볼 수 있음
'AI > Deep learning' 카테고리의 다른 글
Loss 최소화, SGD, 가중치 갱신 방법 (0) | 2022.03.06 |
---|---|
DLFS - CH 3 (0) | 2021.09.27 |
data partitioning, hyper-parameter tuning (0) | 2021.08.16 |
data partitioning, hyper-parameter tuning (0) | 2021.08.16 |
Back-propagation (역전파) (0) | 2021.08.16 |