목록파이썬 (41)
개발자의 스터디 노트
지난번 포스팅에서 모델을 만들기 위해 Vocabulary, Vectorizer, DataLoader를 만들고 성씨 분류 학습 모델을 만들었습니다. 이번 학습의 출력은 확률로 변환할 수 있는 다중 클래스에 대한 예측 벡터입니다. 이런 출력에 사용할 수 있는 손실 함수는 CrossEntropyLoss()입니다. 주피터 노트북에서 실습할때 지난번 포스팅에 이어서 실습해야 에러 없이 실습할 수 있습니다. 1. 훈련에 앞서 헬퍼 함수를 먼저 생성하겠습니다. def make_train_state(args): return {'stop_early': False, 'early_stopping_step': 0, 'early_stopping_best_val': 1e8, 'learning_rate': args.learning..
성씨 분류를 하기 위하여 데이터를 다운 받습니다. https://www.kaggle.com/pritioli/suranames/tasks?select=surnames_with_splits.csv suranames www.kaggle.com 라이트 버전인 surnames_with_splits.csv 파일을 다운로드 하였습니다. 우선 소스코딩에 필요한 패키지를 import 하겠습니다. from argparse import Namespace from collections import Counter import json import os import string import numpy as np import pandas as pd import torch import torch.nn as nn import torc..
1. MLP(다층 퍼셉트론)는 기본적인 신경망 구성 요소입니다. 첫 번째 단계는 입력 벡터입니다. 입력 벡터를 첫 번째 Linear 층이 은닉 벡터(hidden vector)를 계산합니다. 이 벡터가 두 번째 표현 단계입니다. 입력과 출력 사이에 있는 은닉층의 출력을 은닉 벡터라고 부르고 은닉 벡터의 값은 층을 구성하는 각 퍼셉트론의 출력이라고 이해해도 됩니다. 두 번째 Linear 층은 은닉 벡터를 사용해 출력 벡터(output vector)를 계산합니다. 다중 분류에서는 출력 벡터의 크기가 클래스 개수와 같습니다. 위 그림에서는 은닉층이 하나지만 중간 단계는 여럿일 수 있습니다. 단계마다 각각의 은닉 벡터를 만듭니다. 최종 은닉 벡터는 항상 Linear 층과 비선형 함수를 사용하여 출력 벡터에 매핑됩..
앞서 포스팅으로 학습까지 되었습니다. 학습하기 전에 우리는 학습 모델을 평가하기 위하여 테스트 데이터를 만들어 두었습니다. 이번에는 테스트 데이터로 모델을 평가해 보도록 하겠습니다. 1. 테스트 데이터로 평가하기 # 데이터로 평가하기 # 테스트 세트 평가 dataset.set_split('test') batch_generator = generate_batches(dataset, batch_size=args.batch_size, device=args.device) running_loss = 0. running_acc = 0. classifier.eval() for batch_index, batch_dict in enumerate(batch_generator): #출력을 계산합니다. y_pred = clas..
먼저 포스팅으로 훈련에 필요한 데이터를 로딩하고 가공하는 준비를 하였습니다. 이제부터는 앞에서 만들어 두었던 부품을 가지고 조립을 해보겠습니다. 주피터 노트북을 사용할 경우 앞서 포스팅의 소스파일에 이어서 작업하여야 합니다. 1. 훈련 준비 - args 매개변수로 훈련할 정보를 받아 데이터셋과 모델을 만듭니다. 그리고 마지막으로 손실 함수와 옵티마이저를 만듭니다. import torch.optim as optim import torch def make_train_state(args): return { 'epoch_index' : 0, 'train_loss' : [], 'train_acc' : [], 'val_loss' : [], 'val_acc' : [], 'test_loss' : -1, 'test_ac..
파이 토치에서 제공하는 데이터인 옐프 리뷰 데이터셋의 라이트 버전을 사용하여 퍼셉트론 분류기 학습을 준비합니다. 우선 리뷰 데이터를 아래의 경로에서 다운로드합니다. yelp_light | Kaggle yelp_light www.kaggle.com 라이트 버전인 reviews_with_splits_lite.csv 파일을 다운로드하였습니다. 우선 소스코딩에 필요한 패키지를 import 하겠습니다. from torch.utils.data import Dataset import pandas as pd from collections import Counter import string import torch.optim as optim import numpy as np import string 1. ReviewDat..
1. 모델 성능 올바르게 측정하기 : 평가지표 - 핵심 지도 학습 훈련 반복 이외에 가장 중요한 요소는 모델이 훈련에 사용하지 않은 데이터를 사용해 성능을 측정하는 것입니다. 모델은 평가지표를 하나 이상 사용해 평가됩니다. 가장 널리 사용하는 평가 지표는 정확도(accuracy)이며 이장에서도 사용합니다. 정확도는 훈련하는 동안 만나지 못한 데이터에 대해 올바르게 예측한 비율입니다. 2. 모델 성능 올바르게 측정하기 : 데이터 분할 - 훈련 데이터의 샘플뿐만 아니라 본 적 없는 분포의 샘플에서도 오차를 줄일 때 일반화가 잘된 모델이라고 말합니다. 모델이 훈련 데이터에서 손실을 낮출수록 진짜 데이터 분포에 없는 특징에 적응하여 '과대적합(overfit)'이 될 수 있습니다. - 좋은 일반화를 달성하려면 데..
지도 학습 훈련 순서는 데이터 생성 > 모델 선택 > 손실 함수 선택 > 최적화 알고리즘 설정 > 학습 실행의 순서를 가집니다. 1. 학습 데이터 생성 - 선형적으로 구분할 수 있는 예제 데이터 만들기, 이 분류 작업은 데이터 포인트가 지정된 클래스 중 어디에 속하는지 구별하는 작업입니다. 2. 모델 선택 - 학습 모델은 퍼셉트론을 사용합니다. 퍼셉트론은 어떤 크기의 입력도 다룰 수 있습니다. 일반적인 모델 구축 과정에서 입력 크기는 문제와 데이터에 따라 결정됩니다. 2차원 평면에 들어갈 데이터를 만들면 입력 크기는 2입니다. 클래스가 2 개 있는 문제를 위해 클래스에 인덱스 0과 1을 할당합니다. 출력이 0과 1이기 때문에 퍼셉트론의 활성화 함수는 시그모이드입니다. 퍼셉트론의 출력은 데이터 포인트(x)..