네이버 부스트캠프 학습 정리 41

[PyTorch] PyTorch 알쓸신잡

모델 불러오기 model.save() - 학습의 결과를 저장하기 위한 함수 - 모델 형태와 파라메터를 저장 - 모델 학습 중간 과정의 저장을 통해 최선의 결과모델 선택 - 만들어진 모델을 외부 연구자와 공유 가능 checkpoints - 학습의 중간 결과를 저장하여 최선의 결과 선택 - earlystopping 기법시 이전 학습의 결과 저장 - loss와 metric 값을 지속적으로 확인 저장 - epoch, loss, metric를 함께 저장 pretrained model Transfer learning - 다른 데이터셋으로 만든 모델을 현재 데이터에 적용 - 대용량 데이터셋으로 만들어진 모델의 성능을 높임 - 현재 가장 일반적인 기법 PyTorch 기록 monitoring Tensorboard - T..

[PyTorch] PyTorch의 데이터

파이토치는 대규모 데이터를 통해 딥러닝을 학습하는 경우 사용하는 툴인 만큼 그 대량의 데이터를 모델에 먹이는 과정이 중요하다. 이를 다루는 것이 datasets 와 dataloaders이다. PyTorch의 데이터를 위한 모듈들 - torch.utils.data : 데이터셋의 표준을 정의하고, 자르고, 섞는데 쓰는 도구들이 들어있는 모듈. 데이터셋의 표준을 torch.utils.data.Dataset에 정의 후 이를 상속하는 파생 클래스는 torch.utils.data.DataLoader 인스턴스의 입력으로 사용함 - torchvision.dataset : torch.utils.data.Dataset을 상속하는 이미지 데이터셋의 모음으로 MNIST나 CIFAR-10 등의 CV 예제에 기본이 되는 데이터셋..

[PyTorch] parameter & buffer

parameter torch.nn.parameter 클래스를 통해 자동미분이 가능한 torch.Tensor 객체들을 만들 수 있다. 이 클래스는 torch.Tensor 클래스를 상속받은 자식 클래스이며 torch.nn.Module 클래스의 attribute로 할당하는 경우 model.parameters()에 자동으로 추가된다. 예를 들어 linear transformation \(y = xw + b\)의 식에서 x는 torch.Tensor로 구현할 수 있지만 가중값 w와 편향 b는 만들 수 없다. 이 경우 nn.Module 내의 미리 만들어진 tensor를 보관할 수 있는 nn.Parameter 모듈을 사용한다. import torch from torch import nn from torch.nn.par..

[PyTorch] nn.Module

torch.nn.Module 딥러닝을 구성하는 Layer의 base class로 input, output, forward, backward를 정의하고 학습의 대상이 되는 parameter도 정의하는 모듈 ex) Linear 함수를 구현 import torch from torch import nn from torch import Tensor class MyLiner(nn.Module): def __init__(self, in_features, out_features, bias=True): super().__init__() self.in_features = in_features self.out_features = out_features self.weights = nn.Parameter( torch.randn..

[PyTorch] 파이토치의 기본

PyTorch? 텐서플로우와 함께 대표적인 딥러닝 프레임워크이며 근래 유저의 사용량이 텐서플로우를 넘어서고 있음. Define by Run 실행을 하며 그래프를 생성하는 방식으로 텐서플로우와 가장 비교되는 파이토치의 생성 방식. 이 때문에 교육용과 연구용 모두에서 파이토치를 사용하는 사람의 비중이 늘어나고 있음. numpy + AutoGrad numpy와 같은 구조를 가지는 Tensor 객체로 다차원 Array를 표현함. (numpy의 ndarray와 동일) import numpy as np n_array = np.arange(10).reshape(2,5) print(n_array) print("ndim :", n_array.ndim, "shape :", n_array.shape) # [[0 1 2 3 ..

1주차 회고

부스트캠프를 시작하고 첫 1주가 지났다. 기초적인 파이썬과 AI에 관련된 수학 강의들을 들었는데, 강의량이 너무 많아 강의에 치이기도 했고 첫 주라 적응기간에 적응할 여러 일들이 많아 후딱 지나갔다. AI math 관련 학습 회고는 더 할게 남아있지만 시간의 상황과 아직 내가 경사하강법, 확률론에 대해 이해를 못한 것 같아 추후 학습 후 따로 남기기로 했다. 같이 진행하는 팀들은 너무도 좋은 분들을 만났고, 덕분에 같이 학습하며 한 주를 보냈다. 논문리뷰등은 아직 익숙하지 않고 심화 과정도 힘들었지만, 이런 어려운 학습도 적응하도록 빨리 발전해야겠다.

[AI math] 벡터와 행렬

벡터 숫자를 원소로 가지는 리스트 또는 배열로 $$x = \begin{bmatrix}1\\7\\2 \end{bmatrix}$$ 라는 벡터가 있을 때 이를 열벡터라고 하며 파이썬에서 이를 표현할 경우 x = [1, 7, 2] x = np.array([1, 7, 2]) 로 표현한다. 보통 넘파이 라이브러리를 통해 다루는 일이 많기 때문에 후자의 방식으로 표기한다. 벡터는 공간에서의 한 점을 나타내며 원점으로부터의 상대적 위치를 표현함 벡터에 스칼라(상수)를 곱하는 경우 길이가 변하며 두 벡터의 덧셈은 다른 벡터로부터의 상대적 위치이동을 표현, 뺼셈 역시도 같음 Norm 벡터의 노름은 원점에서부터의 거리를 말함. \(L_1\) norm 과 \(L_2\) norm이 있으며 $$L_1 = ||x||_1 = \su..

[Python] arg/configparser

configparser - 프로그램의 실행 설정을 파일에 저장 - Section, Key, Value 값의 형태로 설정된 설정 파일 사용 - 설정파일을 Dict 자료형으로 호출 후 사용 ~~.ini 파일을 처리할 때 사용하는 모듈 ini 파일? ini 파일은 프로그램 정보를 저장하는 텍스트 문서로, [섹션]과 그 섹션에 해당하는 키 = 값으로 구성된다. configparser는 이러한 형식의 ini 파일을 처리할 때 사용하는 모듈이다 [DEFAULT] USERNAME = hyeongwoo PASSWORD = 123456 로 구성된 config.ini 파일을 만드는 경우 import configparser config = configparser.ConfigParser() config.read('config..

[Python] OOP

Object Oriented Programming (객체 지향적 프로그래밍) 너무도 유명하고 많이 들었던, 파이썬을 대표하는 성질. 클래스 = 붕어빵 틀, 객체 = 각종 붕어빵 자동차 예제 등등.. 너무도 많이 봤다. 그런거 말고 새로 안것들 정리 OOP를 통한 모델링에서 필요한 3가지 1. Inheritance(상속) 부모 클래스로부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것으로 class a(object): def __init__(self, name): self.name = name 을 만들었을 때 class b(a): pass 를 통해 a의 클래스 속성, method 전부를 물려받은 자식 클래스 b를 생성 가능하다. 2. Polymorphism(다형성) 같은 이름 메소드의 내부 로직..

[Python] Pythonic Code

Pythonic Code란? 다른 언어와 다르게 파이썬만의 특별한 코딩 스타일로 효율도 좋지만, '간지'가 난다. 주로 알고리즘 문제 사이트에 파이썬의 다른 사람 코드를 보면 단 한 줄의 코딩으로 문제를 푼 사람들이 있는데, 이런 코드의 댓글에는 사람들의 감탄이 주로 보인다. 간지나네요, 우와 파이써닉하네요 등등.. Split & Join 알고리즘 문제를 풀 때 엄청나게 썼던 작업. Split - string type의 값을 "기준값"으로 나눠서 List 형태로 변환 Join - string으로 구성된 리스트를 다시 하나의 string으로 변환 List Comprehension 역시 알고리즘 문제 풀이 때 코드를 짧게 할 수 있는 가장 큰 이유로, 제일 간지라고 생각한다.. 보이십니까? 코드 길이의 차이..