![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F13Jpl%2FbtsbTopLgRr%2FaGRekKlkaP3plY1K2fjqjK%2Fimg.png)
Google Colab은 기본적으로 무료로 GPU를 쓸 수 있게 해 준다. 물론 Pro급은 훨씬 좋다. GPU을 사용해서 연산을 시도해볼 생각이다. GPU 설정 방법: 런타임 -> 런타임 유형 변경 -> GPU 1) Nvidia 그래픽 카드가 설치된 환경에서 그래픽 카드의 상태를 확인하는 명령어 !nvidia-smi 기본은 Tesal T4이다. 2) Pytorch가 GPU Access 하는지 확인 import torch torch.cuda.is_available() True가 나오면 굿! 3) 현재 GPU의 장치 수를 확인해 보자 torch.cuda.device_count() 실습해 보기 1) device 확인 device = "cuda" if torch.cuda.is_available() else "c..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGUFyy%2FbtsbUpn9BdM%2FKYA3oMVWkKzPZ0CkQ9qmc1%2Fimg.png)
Indexing 1) 인덱스 접근 import torch a = torch.tensor([[1, 2, 3], [4, 5, 6]]) print('a:', a) # 첫 번째 행, 두 번째 열의 원소에 접근 print('a[0][1]:', a[0][1]) print('a[0, 1]:', a[0, 1]) 결과값 a: tensor([[1, 2, 3], [4, 5, 6]]) a[0][1]: tensor(2) a[0, 1]: tensor(2) 2) 슬라이스 import torch a = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print('a:', a) # 첫 번째 차원이 0인 슬라이스에 접근 print('a[0, :, :]:', a[0, :, :]) # 마지막 차원..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9WTAX%2FbtsbTocepCb%2Fsl7i6bpY9XxfImKTR6t8A0%2Fimg.png)
형태 변환 1) Reshape 원하는 형상의 새로운 텐서를 얻을 수 있다. reshape 함수는 원본 텐서의 데이터를 보존하면서 새로운 형상의 텐서를 생성한다. 원본 텐서와 새로운 형상의 텐서는 동일한 메모리를 공유하므로, 하나를 변경하면 다른 하나도 변경된다. 원본 데이터 import torch x = torch.arange(1., 10.) x, x.shape 형태 변환(2차원의 텐서) x_reshaped = x.reshape(1,9) x_reshaped, x_reshaped.shape * 대신 형태를 변환할 때 기존 원본 데이터의 범위 안에서만 가능하다. 형태 변환(3차원의 텐서) x_reshaped = x.reshape(1,1,9) x_reshaped, x_reshaped.shape 동일한 메모리 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtGFut%2FbtsbSFFirgV%2FI5BqV2Wj5QY7DMCM431wYk%2Fimg.png)
합, 뺄셈, 곱 tensor = torch.tensor([1,2,3]) # 합 tensor + 10 torch.add(tensor, 10) # 곱 tensor * 10 torch.mul(tensor, 10) # 뺄셈 tensor - 10 torch.sub(tensor, 10) 행렬곱 tensor * tensor 곱해서 tensor([1, 4, 9]) 행렬로 돌려준다. 두 개의 1차원 텐서를 원소별로 곱한 결과를 반환 torch.matmul(tensor, tensor) tensor @ tensor 곱해서 tensor(14) 전체를 더한 값으로 돌려준다. 두 개의 1차원 텐서를 벡터로 간주하여 내적(dot product)을 계산한 결과를 반환 다만 현재 1차원의 텐서이기에 더한 값을 돌려준 것. ※ matm..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcoa16x%2FbtscfAV1L1P%2FIsrmO890KcId9kirdOtikk%2Fimg.png)
Rand random_tensor = torch.rand(1, 3, 4) random_tensor = torch.rand(3, 4) random_tensor = torch.rand(4) random_tensor = torch.rand(1, 1, 3, 4) random_tensor = torch.rand(10, 10, 10) rand() 함수를 통해 원하는 차원을 만들어 낼 수가 있다. Zeros zeros = torch.zeros(size=(3,4)) zeros = torch.zeros(size=(3, 3,4)) zeros = torch.zeros(size=(3)) zeros() 함수를 통해 0의 값을 같은 차원을 만들 수 있다. * size는 default 값이라 적어도 되고 안 적어도 된다. 텐서끼리..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo1wW6%2FbtsaESsjpVI%2FoceD7kf1Qik3dpWiMbwK61%2Fimg.png)
실행 환경: Google Colab https://colab.research.google.com/ Google Colaboratory colab.research.google.com 런타임 유형: GPU GPU 변경 후 셀에 입력하면 내가 어떤 GPU를 쓰고 있는지 확인할 수 있다. !nvidia-smi 무료버전인 경우: Tesla T4 Torch 버전확인하기 import torch print(torch.__version__) 2.0.0+cu118 그러면 이런 값이 print가 되는데 밑에 내용을 뜻한다. - torch 버전: 2.0.0 - GPU 병렬처리를 위한 CUDA 버전: 11.1.8 Tensor란? PyTorch에서 Tensor는 수학적인 개념으로, 다차원 배열(multi-dimensional a..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpvmLP%2FbtsaPHcC3Uf%2Fx5MCk21LPiXCXZecHN1dfk%2Fimg.png)
PyTorch는 Facebook에서 개발하고 유지보수하는 오픈소스 머신러닝 프레임워크로, PyTorch는 다양한 분야의 머신러닝 모델링을 지원하며, 특히 딥러닝 모델링에 강점을 가지고 있다. PyTorch는 Python을 기반으로 하며, NumPy와 유사한 구조를 가지고 있어서 사용자들이 쉽게 딥러닝 모델을 구현하고 테스트할 수 있으며, 또한 PyTorch는 GPU를 활용한 병렬처리를 지원하여 딥러닝 모델의 학습 및 추론 속도를 높일 수 있다. PyTorch의 가장 큰 특징 중 하나는 동적 계산 그래프(dynamic computation graph)를 사용한다는 것이다. 이는 모델을 정의하면서 동시에 계산 그래프를 만들고, 이를 통해 모델이 학습하는 동안 그래프가 자동으로 업데이트된다는 것을 의미하며, ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4mXE5%2Fbtsca0AEaiz%2FkLumFEvK7Npt1tcgb9pTRK%2Fimg.png)
동적 계산 그래프(dynamic computation graph)는 PyTorch에서 사용하는 특징적인 기술 중 하나로, 동적 계산 그래프는 모델을 정의하면서 동시에 계산 그래프를 만들고, 이를 통해 모델이 학습하는 동안 그래프가 자동으로 업데이트되는 방식이다. 기존의 딥러닝 프레임워크에서는 정적 계산 그래프(static computation graph)를 사용하는 경우가 많았는데, 정적 계산 그래프는 모델을 정의할 때 미리 계산 그래프를 만들어 놓는 방식이다. 이는 모델을 한 번 정의하면 그 이후에는 수정이 불가능하며, 모델을 정의할 때 모든 계산 그래프를 한 번에 만들어야 한다. PyTorch에서는 Autograd라는 자동 미분 기능을 통해 동적 계산 그래프를 구현한다. * Autograd는 모델의 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7p1bI%2FbtsbUQlDR0K%2FKrkOlBE7bVUih8cksVV1c1%2Fimg.png)
GPU를 활용한 병렬처리는 CPU보다 빠른 속도로 대규모 데이터를 처리할 수 있는 기술이다. GPU는 CPU보다 대량의 연산을 더욱 빠르게 처리할 수 있는 구조를 가지고 있기 때문에, 대규모 데이터 처리를 위해 많은 연산을 수행해야 하는 머신러닝 모델의 학습 및 추론에 적합하다. 병렬처리는 CPU와 GPU의 처리 방식에 차이가 있는데, CPU는 일반적으로 시리얼(직렬) 처리 방식으로 동작한다. 이는 하나의 작업을 순차적으로 처리하는 방식이며, 복잡한 작업을 처리할 때는 느리게 동작한다. 반면 GPU는 많은 수의 작은 작업을 동시에 처리하는 병렬 처리 방식으로 동작한다. 이는 대량의 데이터 처리를 빠르게 수행할 수 있도록 한다. PyTorch는 GPU를 활용한 병렬 처리를 지원함으로써 GPU를 활용하여 모..