본문 바로가기

Study doc.

(37)
[Python] 모듈 사용법, pip의 원리 지난 포스팅에서 비슷한 코드의 작성을 피하기 위해 클래스가 필요하다고 했습니다. 오늘은 이 클래스를 파일로 저장하고, 필요할 때마다 호출해서 사용하는 방법을 공부해보겠습니다. 클래스와 함수들을 모아둔 파일(.py)을 모듈이라고 합니다. 코딩을 시작하기 전 import numpy as np 혹은 import pandas as pd 를 작성해본 적 있으시죠? 이게 쉽게 말하면 내 컴퓨터에 저장되어 있는 numpy.py 라는 파일과 pandas.py 라는 파일을 호출하는 것입니다. 나는 컴퓨터에 그런 파일을 저장한 적이 없으시다구요? numpy와 pandas의 경우에는 아주 기본적인 모듈이기 때문에 파이썬을 설치하면 자동으로 컴퓨터 저장됩니다. 그래서 따로 저장할 필요가 없었던거죠. 새로운 모듈의 경우에는 별..
딥러닝 입문자를 위한 모델 구조 (Computer Vision) 머신러닝을 처음 공부할때 어려웠던 점 중 하나는 지금 어떤 부분을 공부하고 있는지 몰랐던 겁니다. 예를 들어, tree 기반 알고리즘을 공부할때 '불순도' 라는 개념을 공부했을 것입니다. 그 당시에는 불순도가 이런거고, gini계수랑 엔트로피가 이런거구나!! 했지만, 전체적인 머신러닝 모델 관점에서 봤을때는 이 개념이 왜 필요한지, 어디 부분인지를 몰랐습니다. 하지만 머신러닝에 대한 지식이 어느 정도 쌓인 지금은 대답할 수 있습니다. 전처리, 모델링, 학습 및 평가 중 모델링에 속하고, 모델링의 알고리즘에는 로지스틱, 랜덤포레스트, XGBoost 등 다양한 알고리즘이 존재하지만, 그 중 tree 기반의 알고리즘에서 노드가 분할하기 위한 기준으로 불순도가 사용된다는것을요! 만약 불순도를 처음 공부할 때 이..
[Python] 파이썬 클래스, 이거 한 번만 읽어봐! Q. 야, 클래스가 뭐야? 왜 필요해? A. 썼던 내용들 반복 안하려고! 미리 정의해두고 필요할 때만 호출해서 쓰려고! Q. 그럼 그냥 함수를 만들어서 쓰면 되잖아!! A. 맞아, 근데 클래스가 함수들을 모아둔거야! 머신러닝 알고리즘 써봤어? 로지스틱 알고리즘 사용할 때 model = LogisticRegression() 쓴거 기억나? 이게 사실은 LogisticRegression 이라는 클래스를 호출해서 model이라는 객체에 넣은거야. 그리고 model.fit(X_train, y_train) 했었지? 여기서 fit이 LogisticRegression 클래스 안에 있던 하나의 함수였던거지! Q. 야, 어떤 사람이 클래스 쓴거 봤는데 init이랑 양옆에 underbar( __ )랑 self랑 처음 보는 ..
[cs231n] Recurrent Neural Network (RNN) 지난 시간까지 딥러닝의 한 분야였던 CNN에 대해서 공부했습니다. 이미지를 처리할때 어떻게 하는지, 어떤 layer를 어떤 구조로 얼마나 쌓을지 등을 공부했었죠! 오늘은 딥러닝의 또 다른 방법인 RNN에 대해서 알아볼게요. CNN은 Neral Network에서 Convolution을 적용한 개념이었다면, RNN은 NN에서 Recurrent를 적용한 개념이라고 생각하면 될 것 같습니다. recurrent 라고 하니 약간 재귀적이니 느낌이 나죠? 그럼 한 번 자세히 알아볼게요!! 순서 RNN 종류 RNN 작동 원리 RNN 을 이용한 예시 Language Model Image Captioning Visual Question Answering Long Short Term Memory (LSTM) 1. RNN 종..
[cs231n] CNN Architecture 지금까지 CNN의 전체적인 프로세스와 그 속에 있는 layer들을 자세히 공부했습니다. convolutional layer를 지나고 batch normalization를 지나고 다시 conv layer를 지나고,, 이렇게 층을 쌓아 마지막에 FC layer를 통해 score를 냅니다. 이제는 conv layer를 어떤 filter size로 언제 몇번 할지, batch normalization을 얼마나 언제 할지, drop out 을 할지, pooling 을 할지, learning rate는 얼마로 할지 등을 고려해서 CNN의 전체 구조를 세워야 합니다. 하지만 저희는 아직 딥러닝 초보자 입니다. 성능 좋은 구조를 처음부터 끝까지 뚝딱뚝딱 만들기가 현실적으로 불가능하죠. 따라서 사람들에게 널리 알려진, ..
[Python] os, pathlib, pickle 더 이상 모르는척 하지 말자 컴피티션의 상위권 커널을 보면 항상 등장하는 os,pathlib, pickle 모듈!! 경로를 지정해주는 것 같은데, 운영체제니 뭐니 이름부터 거부감들고 어려워보여서 여태 모르는척 했습니다. 하지만 딥러닝을 공부하고 있는 요즘,, 더이상 피할수가 없더라구요,, 그래서 한 번 해보자!! 하고 공부하고 정리해봤습니다. 모듈에 있는 모든 문법을 다뤄보려했으나, 다른 블로거 분들이 너무 설명을 잘해두셔서 저는 가장 많이 쓰이는 문법들에 대해서 간단하게 정리했습니다. 그리고 추후에 여러 커널들을 공부하며 해당 모듈들을 잘 활용한 사례가 있다면 내용을 계속해서 추가하도록 하겠습니다. 순서 os pathlib pickle 1. os os(operating system)는 운영체제 라고 합니다. (저는 운영체제로 wi..
[cs231n] Neural Network - part 2 지난 파트에 이어 이번 파트에서는 최적화(Optimization) 알고리즘의 종류, regularization의 종류 그리고 transfer learning에 대해서 공부해 보겠습니다. 바로 시작해볼게요! 순서 Optimization Stochastic Gradient Descent (SGD) SGD + Momentum Nesterov momentum AdaGrad RMSProp Adam Regularization Dropout Batch Normalization Data Augmentation Transfer Learning 1. Optimization 1-1. Stochastic Gradient Descent (SGD) 지금까지는 최적화의 방법으로 SGD(Stochastic Gradient Desce..
[cs231n] Neural Network - part 1 지난 포스팅에서는 Neural Network의 한 종류인 CNN에 대해서 공부하며 전체적인 프로세스를 익혔습니다. 이번 포스팅에서는 그 과정에 있는 다양한 선택지들과 추가적으로 고려해야 할 사항들을 중심으로 공부해보겠습니다. 포스팅은 총 두 파트로 이루어져있고, 첫 번째 파트에서는 활성함수의 종류, 데이터 전처리, 가중치 초기화 방법, 정규화 방법 등 모델링 하기 전의 셋팅과 하이퍼 파라미터 튜닝 등 학습 도중에 다뤄야 할 과정을 중심으로 작성하겠습니다. 두 번째 파트에서는 최적화(Optimization) 알고리즘의 종류, regularization의 종류 등 다양한 선택지들을 중심으로 다뤄보겠습니다. 그럼 시작해볼까요?? 순서 Activation Functions Data Preprocessing We..