일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 개발자
- 티스토리챌린지
- 오블완
- 개인 PT
- github
- 영화 비평
- 체스트프레스
- 코딩테스트
- 하체운동
- 디버깅
- 바디프로필
- pytorch
- Knowledge Tracing
- 연구 시작
- 운동
- 개인 피티
- 덤벨운동
- 코드
- 개인 운동
- 코테준비
- 암풀다운
- 라섹 수술 후기
- 바프준비
- 프로그래머스
- 코테 공부
- 다이어트
- PT 운동
- 건강
- 데드리프트
- 논문 리뷰
- Today
- Total
목록인공지능 대학원생의 생활/동료 코드 따라잡기 (17)
치즈의 AI 녹이기
핵심 최단거리 탐색은 BFS(큐)로! (DFS는 스텍으로) 큐, 스택은 list말고 deque(데크) 사용하기! 문자열 지정 문자 찾기 .index('x'), .rindex('x') 이진화: bin(x), 십진화 : int(x, 2) 1. 게임 맵 최단 거리 최단거리 탐색은 항상 BFS(넓이 우선 탐색)으로. DFS(깊이 우선 탐색)으로 했다간 긴 경로를 짧은 경로로 인식할 수 있다. myGraph = { 'A': ['B'], 'B': ['A', 'C', 'H'], 'C': ['B', 'D'], 'D': ['C', 'E', 'G'], 'E': ['D', 'F'], 'F': ['E'], 'G': ['D'], 'H': ['B', 'I', 'J', 'M'], 'I': ['H'], 'J': ['H', 'K'],..
코테 날짜가 임박해서 lessen 5부터는 각 레슨마다 마지막 문제를 풀어보기로 했다. 핵심 dict를 사용하는 것은 시간 소비가 큼. -> 지양할 것. 리스트 정렬 sorted, sorted(reverse=True) GenomicRangeQuery # 구간별로 분할되는 배열에서 가장 작은 값 출력하는 문제. # 시간 복잡도 O(NXM), 정답률 62% def solution(S, P, Q): dna = {'A': 1, 'C':2, 'G':3, 'T':4} new_s = [dna[i] for i in S] ans = list() for p, q in zip(P, Q): ans.append(min(new_s[p:q+1])) # print(new_s[p:q+1] ,p, q) return ans # min을 ..
며칠 전, 연구실 선배로부터 네이버 인턴할 때 코딜리티를 이용해서 코테를 봤다는 팁을 얻고 바로 코딜리티에 로그인하여 코딩 테스트를 준비하고 있다. https://app.codility.com/programmers/ Developer Training | Test Coding Skills Online - Codility Find longest sequence of zeros in binary representation of an integer. app.codility.com 내가 사용하는 언어는 python으로, 문제를 풀면서 활용하기 좋았던 여러 내장 functions들을 정리해본다. lesson 1~4 핵심 list: pop(), insert(index, element) set: add(element)..

kwargs는 dict 타입으로 복수 개의 인자들을 한번에 넣을 수 있어 함수 초기화를 할 때 간단화할 수 있다는 장점이 있습니다. kwargs의 위치는 항상 마지막에 있어야 하며, kwargs라는 이름 말고 다른 이름으로 변경해도 괜찮습니다.

state_dict란 이름 그대로 Python 사전(dict) 객체 입니다. 오늘은 state_dict에 어떤 것을 저장할 수 있을 지 알아보겠습니다. Best 모델 저장하기 학습 도중에 가장 좋은 성능을 가지는 모델을 저장 한다면, 학습을 중단한 뒤에도 해당 모델을 불러와 학습을 재개할 수 있습니다. 저장하는 지점 아래의 동료 코드를 보면, 현재 사용하고 있는 metric인 'ndcg 5'를 기준으로 best 수치를 갱신할 때마다 새롭게 정의한 함수 save_checkpoint를 통해 여러 매개변수 및 하이퍼 파라미터들을 저장하고 있습니다. 저장하는 방법 save_checkpoint 함수를 보면, state이라는 이름으로 dict 타입의 변수를 하나 만들어 인자에서 전달받은 매개변수 및 하이퍼 파라미터..

오늘은 nn.DataParallel를 사용하여 데이터 병렬처리하는 코드를 가져왔습니다. 데이터 병렬처리란, 다수의 GPU에서 모델을 병렬로 실행하여 작업할 수 있도록 처리하는 것입니다. 먼저 torch.cuda.device_count()를 이용하여 갖고 있는 GPU 개수를 num_gpus에 저장합니다. 그 다음 원하는 모델을 불러 온 후, 갖고 있는 GPU 개수가 2개 이상이면 nn.DataParallel을 사용하여 모델을 wrapping할 수 있습니다. 이렇게만 해주면 알아서 모델 내에 들어오는 데이터를 각 GPU에 할당하여 처리하도록 해줍니다. 특정 모델의 학습 매개변수를 불러와 inference를 하고 싶은 경우, 다음과 같이 isinstance(model, nn.DataParallel)을 활용하여..

오늘은 Transformers 라이브러리에서 제공하는 pre-trained model들을 가져와 내맘대로 커스터마이징하는 방법을 소개합니다. HuggingFace란, 자연어처리(NLP) 분야에서 유명한 오픈소스 커뮤니티입니다. 특히 이곳에서 구축한 Transformers 라이브러리는 BERT, RoBERTa, GPT-2 or DistilBERT 등의 여러 NLP 모델들을 단순한 코드로도 실행할 수 있도록 만들었습니다. 아래 링크에서 Transformers 라이브러리에 구현된 모델들 코드를 확인할 수 있습니다. https://github.com/huggingface/transformers/tree/master/src/transformers/models huggingface/transformers 🤗 Tra..

오늘 가져온 것은 Embedding 클래스입니다. 위 코드에서 제가 주목한 점은 nn.Embedding으로 self.emb 변수를 초기화하는 46번 줄의 코드입니다. sparse argument를 사용하고 있어 이에 대해 구글링 해보았습니다. 해당 동영상을 참고하여 sparse = False일 때와 True일때를 비교해 보면, 위 코드를 작성해서 나온 결과, 처음에 10 x 10으로 초기화했던 embedding의 매개변수들의 변화도(gradient)값입니다. 이번엔 sparse=True로 두었을 때 결과값을 보겠습니다. 즉, 변화도에서 0이 아닌 것만 weight 업데이트 되도록 해줍니다. memory 절약에 도움이 될것 같습니다. Embedding 코드의 출처는 앞선 글에서 언급하였습니다.