전체 글(137)
-
순열(백준 알고리즘 10973번)
♣ 순열(permutation) 순열은 서로 다른 n개의 대상에서 r개를 뽑아 일렬로 배열한 것을 말한다. 이때 나올 수 있는 경우의 수를 수학식으로 아래와 같이 표현한다. 이때 배열의 순서를 고려해야 한다. 순서가 다르면 서로 다른 순열이다. 만약 [1, 2, 3, 4] 중 3개를 뽑아 배열하는 경우의 수를 구한다면 아래와 같다. 이와 같이 여러 수의 순서를 고려하여 배열하는 '순열'을 파이썬 코드로 만들 수 있다. ♣ 백준 알고리즘 문제 이해 1부터 N까지의 수로 이루어진 순열이 있고, 입력에서 주어진 특정한 수열의 바로 전 순열을 출력한다. 예를 들어 1부터 5까지의 수가 있고, 특정한 순열 5 4 3 2 1 의 바로 앞에 있는 순열은 5 4 3 1 2 이다. ♣ 문제풀이 방법1(순열 정의하기) 첫..
2024.02.21 -
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 -
Pytorch로 시작하는 딥러닝 입문(03-03 다중선형회귀:Multivariable Linear regression)
앞서 배운 x가 1개인 선형 회귀를 단순선형회귀(Simple Linear Regression)이라고 한다. 다수의 x로부터 y를 예측하는 다중선형회귀에 대해 이야기해보자. ♣ 데이터 3개의 퀴즈 점수를 이용하여 최종 점수(Final)을 예측하는 모델을 만들려고 한다. 독립변수 x가 3개이므로 수식으로 표현하면 아래와 같다. ♣ 파이토치로 구현하기1. 필요한 도구를 import하고 랜덤 시드 고정하기 2. 훈련 데이터 선언하기단순선형회귀와 달리 x를 3개 선언한다. 3. 가중치 w와 편향 b 선언하기x가 3개이므로 가중치도 3개이다. 4. 가설, 비용함수, 옵티마이저를 선언하고 경사하강법을 1000회 반복하기 ♣ 벡터와 행렬 연산으로 바꾸기x의 개수와 가중치의 수가 늘어나는 경우, 이를 일..
2024.02.12