본문 바로가기

전체

(156)
[프로그래머스/C++] 불량 사용자(DFS) 푸는 방법은 크게 두가지 인 것 같다. 1)DFS 2)비트마스크 나는 비트마스크를 몰라서 DFS로 풀었고 중복없이 담아주는 set container를 이용하여 조합을 만들었고, set container의 size를 return했다. set은 처음 써봤는데 유용하다!! 유사문제로 백준 1987번 알파벳문제가 있다. #include #include #include #include using namespace std; bool visit[8]; //방문처리 set ansList; //답이 되는 조합을 담는 set -> 크기를 return하면 된다. bool starcmp(string ban, string user){ /* banned_id와 user_id가 일치하는지 판단 */ if(ban.size()!=us..
[프로그래머스/C++] 튜플(문자열) 더럽게 풀었지만 초반 풀이. 1) {}만 제거하고 문자열 형식으로 vector에 담는다. ex) {{20,111},{111}} -> ["20,111","111"] 2) 문자열의 길이 순으로 sort한다. ex) ["20,111","111"] -> ["111", "20,111"] 3) ,을 기준으로 숫자로 변환하고 모두 vector에 담는다. 4) 중복을 제거한다. (정렬없는 중복제거 인터넷에서 찾아서 그냥 했음) #include #include #include #include #include template ForwardIterator remove_duplicates( ForwardIterator first, ForwardIterator last ) { auto new_last = first; for (..
[프로그래머스/C++] 크레인 인형뽑기 게임(스택) 제일 쉬운 문제로 stack 자료구조를 쓸 줄 아는가를 묻는 문제였다. #include #include #include #include using namespace std; int solution(vector board, vector moves) { stack s; s.push(0); int answer = 0; int map_size = board[0].size(); for(int i=0;i
불안 돌아보면 별 것도 아닌 일에 뭐가 그렇게 불안했는지, 툭 털고 일어나서 다시 달려야겠다.
[PyTorch] Dataset과 Dataloader 설명 및 custom dataset & dataloader 만들기 Custom dataset/dataloader 가 필요한 이유 점점 많은 양의 data를 이용해서 딥러닝 모델을 학습시키는 일이 많아지면서 그 많은 양의 data를 한번에 불러오려면 시간이 오래걸리는 것을 넘어서서 RAM이 터지는 일이 발생한다. 데이터를 한번에 다 부르지 않고 하나씩만 불러서 쓰는 방식을 택하면 메모리가 터지지 않고 모델을 돌릴 수 있다. 그래서 모든 데이터를 한번에 불러놓고 쓰는 기존의 dataset말고 custom dataset을 만들어야할 필요가 있다. 또한 길이가 변하는 input에 대해서 batch를 만들때나 batch 묶는 방식을 우리가 정해주어야할 때 dataloader에서 batch를 만드는 부분을 수정해야할 필요가 있어 custom dataloader를 사용한다. 이번 ..
DACON 음성중첩 데이터 분류 경진대회 후기 모델 구성과 상위권 풀이 분석 그리고 느낀점을 동아리에서 간략하게 발표했다.
[PyTorch] Weight Decay (L2 penalty) Weight decay를 하는 이유 한마디로 말하자면 overfitting을 방지하기 위해 weight decay를 한다. overfitting은 train dataset에 과도하게 맞춰져서 generalization성능이 낮은 것을 의미한다. 그래서 처음 본 test set에서 성능이 안좋게 나오는 경우이다. overfitting을 막고 test set에서도 좋은 성능을 내게 하기 위한 여러 방법들 중 하나가 weight decay이다. Weight decay와 L2 penalty Weight decay는 모델의 weight의 제곱합을 패널티 텀으로 주어 (=제약을 걸어) loss를 최소화 하는 것을 말한다. 이는 L2 regularization과 동일하며 L2 penalty라고도 부른다. (L2 re..
[PyTorch] Gradient clipping (그래디언트 클리핑) Gradient clipping을 하는 이유 주로 RNN계열에서 gradient vanishing이나 gradient exploding이 많이 발생하는데, gradient exploding을 방지하여 학습의 안정화를 도모하기 위해 사용하는 방법이다. Gradient clipping과 L2norm 내용이 사실 굉장히 간단하다. clipping이란 단어에서 유추할 수 있듯이 gradient가 일정 threshold를 넘어가면 clipping을 해준다. clipping은 gradient의 L2norm(norm이지만 보통 L2 norm사용)으로 나눠주는 방식으로 하게된다. threshold의 경우 gradient가 가질 수 있는 최대 L2norm을 뜻하고 이는 하이퍼파라미터로 사용자가 설정해주어야 한다. 논문에..