일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 일귀
- Tensor
- Machine Learning
- conda오류
- conda
- pytorch tensor
- 리눅스
- Ai
- 공부
- ML
- 머신러닝
- conda: command not found
- pyTorch
- torch
- 텐서
- anaconda오류
- 리눅스 오류
- essential deep learning paper reading
- Today
- Total
Centric Software
딥러닝에서 "tensor" 란, 본문
핵심 요약
"한마디로, Tensor는 수치화된 데이터를 저장하는 방식이다."
"한마디로, Tensor는 Rank, Shape, Data Type 의 요소로 구분된다."
"Tensor은 pytorch 라이브러리에서 정의한 ML계산용 클래스라 여겨도 무방할 듯 하다." -- 추후 깨달음 얻을 시 수정하겠음
pytorch 등 라이브러리를 사용하다보면 "tensor"라는 자료구조가 자주 등장된다.
배열인가? 싶으면서도 묘하게 다르고 아닌것같다.
Q1. 그렇다면, AI를 공부하는 사람으로서 tensor를 어떻게 정의할 수 있어야할까?
Q2. 배열과 비슷해보이는데 차이점은 무엇일까?
의 의문점이 우선 든다.
우선 pytorch 홈페이지의 설명을 보자.
https://tutorials.pytorch.kr/beginner/basics/tensorqs_tutorial.html
에서 공부한 내용 :
tensor는 GPU에서 사용할 수 있는 array, matrix와 유사한 "자료구조"이다.
NumPy를 알고있다면, numpy.ndarray 와 유사하다.
그리고 자동미분에 최적화 되어있다 어쩌구...
이것만 보곤 감이 오지 않는다...
Tensor의 정의
https://medium.datadriveninvestor.com/what-is-the-tensor-in-deep-learning-77c2af7224a1
에서 공부한 내용 :
Tensor란, 머신러닝에서 사용하는 자료구조이다.
Tensor란, 수치 데이터를 다루기위한 컨테이너이다.
Tensor란, 우리가 시스템에서 사용할 information을 저장하는 방식이다.
정리하면, 숫자계산만 가능한 컴퓨터이기에 내가 가진 데이터를 어떤 숫자로 저장을 해야하는데, 이 '데이터를 저장하는 방식'이 tensor이란 것 이다.(= tensor라는 Class로 내가 가진 다양한 data를 객체로 다룬다는 것) 그리고 머신러닝에서 데이터 계산에 이 Tensor을 이용한다.
"한마디로, Tensor는 수치화된 데이터를 저장하는 방식이다."
(그리고, 다차원 배열과 동일한 정의를 가지지만 torch에서 정의한 tensor라는 class는 연산에 GPU를 사용할 수 있다는 태생적(?)차이가 있다.)
tensor에 대한 정의는 완료했다. 그런데, 앞의 링크에서 tensor의 주요 특징을 더 설명한다. 봐야겠다. 여기서 얻을 인사이트는 무엇일까?
https://medium.datadriveninvestor.com/what-is-the-tensor-in-deep-learning-77c2af7224a1
에서 공부한 내용 :
1. tensor의 3가지 특성
< 선형대수의 Rank 개념이해해야 이해 가능! >
tensor 는 3가지 primary attributes 에 의해 정의된다.
1. Rank
2. Shape
3. Data type
예를 들어가며 3가지 특징을 접근해보자.
>> tensor([[1, 2, 3], [3, 4, 5]]) 가 있다.
이 텐서의 Rank는? --> 2이다.
이 텐서의 Shape는? --> (2x3)
이 텐서의 Data type은? --> int32(일거다)
1 2 3 3 4 5
>> tensor([[1, 2, 3, 4, 5], [3, 4, 5, 6, 7]]) 가 있다.
이 텐서의 Rank는? --> 2이다.
이 텐서의 Shape는? --> (2x5)
이 텐서의 Data type은? --> int 32
1 2 3 4 5 3 4 5 6 7
>> tensor([
[[0.123, 0.323], [0.846, 0.117], [0.146, 0.063]],
[[0.123, 0.323], [0.846, 0.117], [0.146, 0.063]]
]) 가 있다.
이 텐서의 Rank는? --> 3이다.
이 텐서의 Shape는? --> (2x3x2)
이 텐서의 Data type은? --> float32
Further Thinking
Shape를 줄일수록 계산량이 줄겠군.
Rank를 줄일수록 데이터의 정확도(해상도)는 떨어지겠지만, 계산량또한 줄겠구나.
데이터의 차원을 줄이면(Dimension Reduction) tensor의 Shape와 Rank또한 변하겠군.
"한마디로, Tensor는 Rank, Shape, Data Type 의 요소로 구분된다."
2. Common tensor 의 표현
Vectors : 1D -> (features)
Sequences : 2D -> (timesteps, features)
Images : 3D -> (height, width, channels[RGB])
Videos: 4D -> (frames, height, width, channels[RGB])
이다.
하지만, ML에선 batch로 쪼개 데이터를 다루기때문에,
Vectors : 2D -> (batch_size, features)
Sequences : 3D -> (batch_size, timesteps, features)
Images : 4D -> (batch_size, height, width, channels[RGB])
Videos: 5D -> (batch_size, frames, height, width, channels[RGB])
이다.
"핵심은, 우리가 주로 ML에서 다루는 데이터의 tensor들은 위와같은 Rank를 가진다."
사전질문 답변
Q1. 그렇다면, AI를 공부하는 사람으로서 tensor를 어떻게 정의할 수 있어야할까?
A1. tensor란, 머신러닝에서 사용되는 '자료구조'로, container of numerical data 이다.
Q2. 배열과 비슷해보이는데 차이점은 무엇일까? 왜 굳이 쓸까?
A2. tensor는 multi-dimensional array와 같으며, 사용하는 이유는 torch 라이브러리에서 정의한 이 자료형이 GPU에 연동해서 편리한 연산을 가능하게하기 때문에 사용한다. 또, torch 라이브러리의 autograd 함수들(자동미분)과 연동성이 있기에 다양한 ML의 수학적 계산을 편리하게 할 수 있는 것 같다.
핵심 요약
"한마디로, Tensor는 수치화된 데이터를 저장하는 방식이다."
"한마디로, Tensor는 Rank, Shape, Data Type 의 요소로 구분된다."
"Tensor은 pytorch 라이브러리에서 정의한 ML계산용 클래스라 여겨도 무방할 듯 하다." -- 추후 깨달음 얻을 시 수정하겠음
'AI > Deep Learning' 카테고리의 다른 글
PyTroch DataLoader의 병렬 프로세싱! (0) | 2023.10.30 |
---|---|
LayerNorm 과 BatchNorm 의 차이 (5) | 2023.05.17 |