본문 바로가기

728x90

분류 전체보기

(81)
[Python] 난수 생성 시 가중치 (weights) 적용하기 python에서는 random 내장 라이브러리를 사용해서 난수를 쉽게 생성할 수 있습니다. >>> import random >>> random.choice(range(1, 6)) 4 그런데 만약에! 뽑히는 숫자에 확률을 더해주고 싶다면? 즉, 랜덤이긴 하지만 특정 숫자가 자주 뽑히도록 확률을 조정하고 싶다면? 바로 weights을 추가해주면 됩니다! >>> random.choices(range(1, 6), weights = [0.2, 0.3, 0.1, 0.1, 0.3]) [2] weights 변수에 넣어주면 뽑히는 대상이 뽑힐 확률을 적용해줄 수가 있습니다! 만약 한 숫자에 가중치를 몰아주게 되면 랜덤이지만 계속 같은 숫자가 나오는 것을 확인 할 수 있습니다! >>> random.choices(range..
[PyTorch] IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1) torch.nn.CrossEntropyLoss() 를 사용해서 loss를 구하는 과정에서 만난 에러! 다름이 아니라 아무 생각 없이 accuracy를 구할 때처럼 argmax로 target을 넣어 loss를 구해서 난 에러였다! crossentropy의 계산 공식을 생각해보면 말도 안된다는 걸 알 수 있다. 당연히 각 타겟 별로의 confidence 값이 있어야 crossentropy를 구할 수 있는 것인데! 따라서 CrossEntropyLoss를 구할 때에는 argmax로 예측한 target을 넣기 전 confidence 값을 그대로 넣어주어야 한다.
[Python] ImportError: cannot import name 'A' from partially initialized module 'B' (most likely due to a circular import) 코드를 돌리다가 마주친 ImportError! 처음에는 import하려는 코드에 오류가 있어서 안되는건가 했는데 뒤에 설명을 보니 circular import 때문에 나타나는 경우가 많다고 써있었다! 알고보니 A.py 에서는 import B, B.py에서는 import A로 순환식으로 import를 하고 있어서 발생한 문제였다!
모델 일반화를 위한 데이터 전처리 기법 Bias & Variance 학습이 너무 안됐거나, 학습이 너무 됐거나 High Bias : Underfitting High Variance : Overfitting Train / Validation 학습 데이터셋 중 일정 부분을 따로 분리 → valid set으로 활용 학습에 이용되지 않은 데이터셋을 사용하여 일반화됐는지 확인! Data Augmentation 주어진 데이터가 가질 수 있는 Case, State를 다양하게 만들어봄 낮에 찍힌 자동차 사진 → 밤으로 변경, 폭우인 날로 변경 등등 문제가 만들어진 배경과 모델의 쓰임새로부터 힌트 얻을 수 있음! torch vision.transforms 이미지에 적용할 수 있는 다양한 함수 제공 (ex. RandomCrop, Flip) Albumentati..
[Python] TypeError: cannot perform reduce with flexible type (에러 해결 - list_eval, dtype) 데이터프레임을 csv 파일로부터 읽어와 np.mean을 하는데 만난 에러! TypeError: cannot perform reduce with flexible type 테스트 후 저장 할 때까지는 잘 작동했는데 다시 load하니 이런 에러를 만났다. 찾아보니 주로 이 에러는 수치형 데이터가 아닌 데이터로 수치형 연산을 하려할 때 발생한다고 한다. 그래서 확인해보니 나는 분명 수치형 데이터를 저장해주었는데 다시 load하는 과정에서 살펴보니 str 객체로 바뀌어있었다. 왜그럴까?! 찾아보니 pandas의 read_csv 함수 같은 경우 첫 번째 행의 데이터를 기준으로 각 column 별 데이터형 타입을 자동으로 맞추어주는데 종종 잘못 매칭을 해주는 경우가 있다고 한다. 그래서 굳이 데이터타입이 잘못 매칭되..
[BOJ] 9252. LCS 2 (Python) 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 오랜만에 코테 풀기! LCS란 최장 공통 부분 수열을 의미한다. 두 개의 문자열이 있을 때, 최장 공통 부분 수열이란 다음과 같다. ACAYKP CAPCAK ---------> ACAK 그렇다면 어떻게 최장 공통 부분 수열을 구할 수 있을까? 위 예시를 통해 최장 공통 부분 수열을 구하는 법을 살펴보자! 우선 아래와 같은 배열이 존재한다고 가정하자.행에 있는 문자를 기준으로 열에 해당 문자가 존재하는지 체크하고, ..
[Python] Function Annotation (':', '->' 이란?) project_azua github 코드를 분석하던 중 함수에서 -> symbol을 만나게 되었다. 예전에는 그냥 무심코 지나갔었는데 코드를 하나하나 분석하다보니 궁금증이 생겼다. 파이썬은 다른 언어에 비해 문법의 제약이 적은 편이다. 이로인해 유연성이 높고 쉬운 반면 작성된 코드를 봤을 때 해석하기에 비교적 모호할 수가 있다. 예를 들면 파이썬에서는 함수를 선언 할 때 파라미터의 타입을 따로 지정할 필요가 없어 개발자는 신경 쓸 부분이 훨씬 적다. 그러나 코드 작성자가 아닌 다른 개발자는 코드를 봤을 때 어떤 타입형이 들어가야 직관적으로 알기 힘들다. 따라서 이런 문제를 해결해주기 위해 사용하는 기능이 바로 "Function Annotation"이다. (Type hints) 공식 문서의 예시를 통해서 ..
[DGL] 기본 message passing layer 만들기 GNN에서는 message passing을 통해 이웃 노드들의 feature를 통합하고, 이를 기반으로 타겟 노드의 새로운 embedding을 생성합니다. 이 과정을 위해 dgl 라이브러리에서는 여러 built-in function을 제공합니다. 먼저, 이웃 노드의 feature를 통합하여 message 형태로 만드는 역할을 message function, message로 새로운 vector를 만드는 역할을 하는 것을 reduce function이라고 합니다. 대부분의 GNN에서 message passing은 반드시 필요합니다. message passing을 통해서 이웃 노드의 feature를 가지고 오고, 가지고 온 feature들을 통해서 그 노드의 새로운 을 결정합니다. DGL에서는 이웃 노드의 f..

728x90