딥러닝 모델: 파이토치(71)
-
Pytorch로 시작하는 딥러닝 입문(03-08. 벡터와 행렬 연산 복습하기)
앞서 독립 변수 x가 2개 이상인 다중 선형 회귀를 배웠다. 이후에 배우게 될 실습인 소프트맥스 회귀에서는 종속 변수 y의 종류도 3개 이상이 되면서 더욱 복잡해졌다. 그리고 이러한 식들이 겹겹이 누적되면 인공 신경망의 개념이 된다. 사용자는 데이터와 변수의 개수로부터 행렬의 크기, 더 나아가 텐서의 크기를 산정할 수 있어야 한다. ♣ 벡터와 행렬과 텐서벡터는 크기와 방향을 가지는 양이다. 숫자가 나열된 형상이며 파이썬에서는 1차원 배열 또는 리스트로 표현한다. 행렬은 행과 열을 가지는 2차원 형상의 구조이다. 파이썬에서는 2차원 배열로 표현한다. 가로줄을 행(row), 세로줄을 열(column)이라고 한다. 3차원부터는 주로 텐서라고 부른다. 텐서는 파이썬에서 3차원 이상의 배열로 표현한다. ♣..
2024.02.24 -
Pytorch로 시작하는 딥러닝 입문(03-07. 커스텀 데이터셋, transform 약간, ToTensor)
파이토치에서는 데이터셋을 좀 더 쉽게 다룰 수 있도록 유용한 도구로서 torch.utils.data.Dataset과 torch.utils.data.DataLoader를 제공한다. 이를 사용하면 미니배치 학습,데이터 셔플, 병렬 처리까지 간단히 수행할 수 있다. 기본적인 사용 방법은 Dataset을 정의하고, 이를 DataLoader에 전달하는 것이다. ♣ Custom Dataset파이토치에서 제공하는 torch.utils.data.Dataset을 상속 받아서 직접 커스텀 데이터셋을 만들 수도 있다. torch.utils.data.Dataset은 파이토치에서 데이터셋을 제공하는 추상 클래스이다. 커스텀 데이터셋을 만들 때, 가장 기본적인 뼈대는 아래와 같다. 기본적인 define이 3가지 있다. __ i..
2024.02.24 -
Pytorch로 시작하는 딥러닝 입문(03-06. 미니배치와 데이터로드)
♣ 미니배치와 배치 크기 앞에서 배운 선형회귀에서는 데이터의 양이 굉장히 적었다. 만약 데이터가 수십만개 이상이라면 전체 데이터에 대해서 경사 하강법을 수행하는 것은 매우 느릴 뿐 아니라 많은 계산량이 필요하다. 메모리의 한계로 계산이 불가능한 경우도 생긴다. 그렇기 때문에 전체 데이터를 더 작은 단위로 나누어서 해당 단위로 학습하는 개념이 등장하였는데, 이 단위를 미니 배치(Mini Batch)라고 한다. 위의 그림은 전체 데이터를 미니 배치 단위로 나누는 것을 보여준다. 미니 배치 학습을 하게 되면 미니 배치만큼만 가져가서 미니 배치에 대한 비용(cost)를 계산하고, 경사 하강법을 수행한다. 그리고 다음 미니 배치를 가져가서 경사 하강법을 수행하고, 마지막 미니 배치까지 이를 반복한다. 이렇게 ..
2024.02.21 -
Pytorch로 시작하는 딥러닝 입문(03-05. 클래스로 파이토치 모델 구현하기)
파이토치의 대부분의 구현체들은 대부분 모델을 생성할 때 클래스를 사용한다. 앞서 배운 선형회귀를 클래스로 구현해보자. 오직 클래스로 모델을 구현한다는 점이 앞서 구현한 코드와 다른 점이다. ♣ 모델을 클래스로 구현하기 앞서 구현했던 단순선형회귀모델을 클래스로 구현한다. 위와 같이 클래스를 사용한 모델 구현 형식은 대부분의 파이토치 구현체에서 사용하고 있는 방식이다. 클래스 형태의 모델은 nn.Module을 상속받는다. 그리고 __init__( )에서 모델의 구조와 동작을 정의하는 생성자를 정의한다. 이는 파이썬에서 객체가 갖는 속성값을 초기화하는 역할로, 객체가 생성될 때 자동으로 호출된다. torch.nn.Linear()를 사용할 때 in_features, out_features, bias=Tru..
2024.02.21 -
Pytorch로 시작하는 딥러닝 입문(03-04 nn.Module로 구현하는 선형 회귀: 다중선형회귀)
단순선형회귀와 비교했을 때 nn.Linear( ) 의 인자값과 학습률만 조절하였다 ♣ 다중선형회귀 구현하기 1. 기본 기능 import 하기 2. 데이터 선언하기 다중선형회귀이기 때문에 3개의 x로부터 하나의 y를 예측한다. 즉 가설 수식은 아래와 같다. 3. 선형회귀모델 구현하기 3개의 입력 x에 대해서 하나의 출력 y를 가지므로 입력 차원은 3, 출력 차원은 1을 인수로 사용하였다. model에는 3개의 가중치 W와 편향 b가 저장되어 있다. model.parameters( ) 함수를 이용하여 가중치와 편향을 확인한다. 첫 번째 출력되는 것이 3개의 W이고, 두 번째 출력되는 것이 b에 해당한다. 두 값 모두 랜덤 초기화되어 있다. 또한 단순선형회귀에서와 마찬가지로 두 가지 모두 학습 대상..
2024.02.14 -
Pytorch로 시작하는 딥러닝 입문(03-04 nn.Module로 구현하는 선형 회귀: 단순선형회귀, optimizer)
이전 챕터까지는 선형 회귀를 좀 더 직접적으로 이해하기 위해 가설, 비용 함수를 직접 정의하여 선형회귀모델을 구현하였으나 이번에는 파이토치에서 이미 구현되어 제공되고 있는 함수들을 불러오는 것으로 더 쉽게 선형회귀모델을 구현한다. 파이토치에서는 선형 회귀 모델이 nn.Linear( )라는 함수로, 또 평균 제곱오차가 nn.functional.mse_loss( )라는 함수로 구현되어 있다. ♣ 단순 선형 회귀 구현하기1. 기본 도구 import하기 2. 데이터 선언하기y=2x 라는 함수를 가정한다. 가중치 W는 2, 편차 b는 0이다. 모델이 이 W와 b를 잘 찾아낼 수 있어야 한다. 3. 선형회귀모델 구현하기 nn.Linear( )는 입력의 차원, 출력의 차원을 인수로 받는다. 단순 선형 회귀이므..
2024.02.14