전체 글(137)
-
Pytorch로 시작하는 딥러닝 입문(04-03. nn.Module 로지스틱 회귀 구현하기)
선형 회귀모델의 가설식은 H(x) = Wx+b 이다. nn.Linear( )를 이용해서 이 가설식을 구현할 수 있다. 로지스틱 회귀의 가설식은 H(x) = sigmoid(Wx+b) 이고, 파이토치에서는 nn.Sigmoid( )를 이용해서 시그모이드 함수를 구현하므로 결과적으로 nn.Linear( )의 결과를 nn.Sigmoid( )를 거치게 하면 로지스틱 회귀의 가설이 된다. ♣ nn.Linear와 nn.Sigmoid로 로지스틱 회귀 구현하기1. 훈련 데이터를 텐서로 선언하기 2. nn.Sequential을 이용하여 로지스틱 회귀 구현하기nn.Sequential( )은 nn.Module 층을 차례로 쌓을 수 있도록 한다. 뒤에서는 이를 이용하여 인공신경망을 구현한다. nn.Sequential( )은 W..
2024.02.27 -
CCW(Counter Clock Wise, 백준 알고리즘 11758번)
♣ CCW 세 점 A, B, C가 존재할 때, 특정 선분에 대하여 특정 점이 왼쪽에 있는지(시계 방향) 오른쪽에 있는지(반시계 방향)를 판별할 수 있는 알고리즘이다. 아래 그림을 예로 들어보자. C -> B -> A로 진행하는데, 첫 번째 그림은 시계방향, 두 번째 그림은 직선, 세 번째 그림은 반시계 방향을 나타낸다. 즉 선분 CB에 대한 점 A의 위치라고 생각하면 점 A는 선분 CB에 대해 각 그림에 따라 시계방향, 직선, 반시계 방향에 위치하는 것이다. CCW(Counter Clock Wise)는 이렇게 세 점을 이었을 때의 방향을 판단하는 데 유용하게 쓸 수 있는 알고리즘이다. 점 A, B, C를 보면 선분 CB에 대한 점 A의 위치(방향)을 구하는 것이므로 점 C를 (x1, y1), 점 B를 (..
2024.02.26 -
Pytorch로 시작하는 딥러닝 입문(04-02. 파이토치로 로지스틱 회귀 구현하기)
♣ 파이토치로 로지스틱 회귀 구현하기 1. 데이터를 텐서로 구현하기 입력 데이터가 x_train, 출력 데이터가 y_train이고 WX = Y를 성립하기 위해서는 가중치 W가 2×1 크기여야 한다. 2. W와 b 선언하기 3. 가설식 세우기 앞선 W와 b는 torch.zeros를 통해 전부 0으로 초기화된 상태이다. 실제값 y_train과 크기가 동일한 6×1의 크기를 가지는 예측값 벡터가 나오는데 모든값이 0.5이다. 이미 파이토치에서 시그모이드 함수를 구현하여 제공하고 있기 때문에 가설식을 더 간단하게 구현할 수도 있다. 이는 앞선 식과 본질적으로 동일한 식이다. 4. 비용함수값(cost) 구하기 우선 현재의 예측값과 실제값을 출력해보자 여섯 개의 원소가 존재하지만 하나의 원소에 대해서만 오차를 구하..
2024.02.25 -
Pytorch로 시작하는 딥러닝 입문(04-01. 로지스틱 회귀: Logistic Regression, 시그모이드 함수)
두 개의 선택지 중에서 정답을 고르는 문제를 이진 분류(Binary Classification)이라고 한다. 그리고 이진 분류를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀가 있다. 로지스틱 회귀의 알고리즘 이름은 회귀이지만 실제로는 분류 작업에 사용할 수 있다. ♣ 이진 분류(Binary Classification)시험 성적에 따라 합격, 불합격이 기재된 데이터가 있다고 가정한다. 성적이 x라면 합격/불합격 결과는 y이다. 위의 데이터에서 합격을 1, 불합격을 0이라고 할 때 그래프를 그리면 아래와 같다. 이 그래프는 알파벳의 S자 형태로 표현된다. 이러한 x와 y의 관계를 표현하기 위해서는 Wx+b와 같은 직선 함수가 아니라 S자 형태로 표현할 수 있는 함수가 필요하다. 이런 문제에 직선을 사용할..
2024.02.25 -
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