Skip to content

2주차 과제 #3

Description

@GirinMan

두 번째 과제: PyTorch로 딥러닝 모델 학습하기

회합 자료 링크: #1 (comment)

  • 미리 만들어진 colab notebook을 실행해보면서, 간단한 데이터 분류를 수행하는 모델을 학습시켜 봅시다!
  • 노트북 실행 방법은 지난 회합 자료 마지막 부분을 참고하세요.

Colab Python 노트북을 사용한 모델 학습 실습

  • Google 계정 로그인 후 colab에 접속해서 현재 레포지토리의 /Week2/train_neural_network.ipynb 노트북을 실행해보면서 아래와 같은 단계로 과제를 진행해 주세요.
  • 이번 과제에서 다룰 문제는 이진 분류(Binary Classification) 입니다. 간단하게 2차원 좌표 상에 있는 점들을 특정 기준에 따라 라벨을 1 또는 0으로 부여하고, 새로운 데이터가 들어왔을 때 모델이 적절한 라벨을 유추할 수 있도록 학습시켜 볼거에요!
  • 분류 대상인 데이터는 아래와 같이 생겼습니다.

x < -5 or x > 5 인 값 (x, y)에 대해 label=1
나머지 좌표에 대해서는 label=0

image

Step 1. Layer 1개로 구성된 모델로 이진 분류 학습시키기

  • 하나의 layer는 각각 weight와 bias를 지니고 있어 1차함수를 표현할 수 있습니다.
  • 주어진 데이터를 잘 분류하도록 모델을 학습시켜 봅시다.

Step 2. Layer 2개로 구성된 모델로 이진 분류 학습시키기

  • 하나의 layer밖에 없는 모델은 표현할 수 있는 범위에 한계가 있습니다.
  • Layer를 하나 더 추가해서 조금 더 복잡한 모델을 만들어 학습하고 결과를 확인해 봅시다.

Step 3. 새로운 데이터 분류하기

  • 아래와 같은 데이터들을 분류하는 모델을 만들어 보려고 합니다.
  • Layer가 1개인 모델과 2개인 모델 중 어떤 모델이 더 적합할까요?
  • 조별로 각각의 데이터에 대해 적합한 모델과, 그 이유를 적어주세요.
  • 실습 노트북에서 맨 처음 데이터 부분만 아래 코드로 바꿔서 실행해보면 결과를 알 수 있어요!

1번 데이터: x + y > 0 인 경우 label=1, 나머지 label=0

image

import random
import numpy as np

# 재현을 위해 seed 고정
random.seed(42)
np.random.seed(42)

x1_train=[]
x2_train=[]
y_train=[]

# 데이터 개수
m = 10000

for i in range(m):
    x1_train.append(random.uniform(-10, 10))
    x2_train.append(random.uniform(-10, 10))
    if x1_train[-1] + x2_train[-1] > 0:
        y_train.append(1)
    else:
        y_train.append(0)

x = np.array([x1_train, x2_train]).transpose()
y = np.array(y_train).reshape(-1, 1)

print(f"X: {x.shape}\n {x}")
print(f"Y: {y.shape}\n {y}")

2번 데이터: x * y > 0 인 경우 label=1, 나머지 label=0

image

import random
import numpy as np

# 재현을 위해 seed 고정
random.seed(42)
np.random.seed(42)

x1_train=[]
x2_train=[]
y_train=[]

# 데이터 개수
m = 10000

for i in range(m):
    x1_train.append(random.uniform(-10, 10))
    x2_train.append(random.uniform(-10, 10))
    if x1_train[-1] * x2_train[-1] > 0:
        y_train.append(1)
    else:
        y_train.append(0)

x = np.array([x1_train, x2_train]).transpose()
y = np.array(y_train).reshape(-1, 1)

print(f"X: {x.shape}\n {x}")
print(f"Y: {y.shape}\n {y}")

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

assignment각 주차별 조별 과제 기록

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions