반응형

Python 377

[Pytorch] 파이토치 과적합 방지(Early Stopping) 구현 방법 정리

파이토치 학습 과정에서 각 epoch가 끝나는 시점에서 validation loss 혹은 validation accuracy 등의 성능 지표를 측정하여 과적합이 의심되는 특정 시점을 넘어가는 경우 조기에 학습을 종료하는 early stopping 기능을 구현하는 방법들을 정리해보도록 하겠습니다. 1. 직접 구현 각 epoch가 끝나는 시점마다 evaluation을 진행 후, 성능 개선 여부를 감시하는 식의 코드를 간단하게 구현해볼 수 있습니다. 예시 pseudo-code의 형태는 다음과 같습니다. best_loss = 10 ** 9 # 매우 큰 값으로 초기값 가정 patience_limit = 3 # 몇 번의 epoch까지 지켜볼지를 결정 patience_check = 0 # 현재 몇 epoch 연속으로..

Python/Pytorch 2022.09.08

CLS 토큰이란? / 파이썬 BERT CLS 임베딩 벡터 추출 예제

[CLS] 토큰이란? BERT, RoBERTa 등의 언어 모델에서 문장 토큰들이 인코딩된 결과를 활용하는 것이 유용한 경우가 많은데 가장 첫 위치에 문장 공통 토큰인 [CLS]를 두어 해당 위치의 임베딩 결과를 대표 임베딩으로 주로 사용하게 되었습니다. BERT-base 크기의 모델의 경우 토큰 길이는 512이고 각 토큰 위치에서의 임베딩 결과는 768 차원 벡터로, 문장 input 1개에 대한 총 output 텐서의 shape는 512 * 768이 됩니다. 이 중 가장 앞 위치의 768 차원 벡터를 가져와 해당 문장의 대표 임베딩 결과로 활용하는 것이고, 흔히 NLP 관련 논문에서 CLS 토큰 임베딩으로 일컫는 것이 바로 이것입니다. CLS 임베딩 벡터 추출 코드 예제 먼저, BERT-base 모델을 ..

Python/NLP Code 2022.09.03

[Tensorflow] TFDV 활용 파이썬 데이터 EDA 실습 예제

Python EDA by tensorflow_data_validation 오늘은 파이썬 텐서플로우에서 제공하는 TFDV 모듈을 활용하여 데이터에 대한 EDA 과정을 유용하게 진행하는 방법에 대하여 간략하게 정리해보겠습니다. 데이터셋 로드 이번 실습에서는 예시로 타이타닉 데이터셋에 대하여 EDA를 진행해보겠습니다. 아래의 코드로 해당 데이터프레임을 바로 불러올 수 있습니다. import seaborn as sns import pandas as pd df = sns.load_dataset('titanic') df TFDV 모듈 설치 이번 글에서는 tensorflow_data_validation(TFDV)를 활용하여 EDA를 진행하는 방법을 살펴볼 것이기에 해당 모듈이 설치되지 않았다면 설치가 필요합니다. 아..

Python/Tensorflow 2022.08.30

[Sklearn] 파이썬 단어 개수 세기 예제 : CountVectorizer 함수

Python scikit-learn word count method 파이썬의 사이킷런 모듈을 활용하여 단어의 개수를 손쉽게 셀 수 있는 CountVectorizer 메소드에 관하여 사용 예제를 간략하게 정리해보도록 하겠습니다. 우선, 아래와 같은 문서들의 리스트가 있다고 가정하고 문서별로 단어 개수를 세보겠습니다. d1 = '바나나 사과 딸기 딸기 참외' d2 = '수박 바나나 딸기 바나나 딸기' d3 = '딸기 수박 참외 사과 사과 수박' d4 = '사과 사과 사과 사과 참외 참외' corpus = [d1, d2, d3, d4] 단어 개수 세기 기본 예시 CountVectorizer를 사용하여 단어 개수 벡터화를 진행해 보겠습니다. 기본 값으로 사용 시 공백 기준으로 단어를 나눠 개수를 카운팅하게 되며..

Python/Sklearn 2022.08.29

RuntimeError: The expanded size of the tensor (1002) must match the existing size (512) at non-singleton dimension 1. Target sizes: [8, 1002]. Tensor sizes: [1, 512] 해결

Transformers token size error debugging transformers 모듈로 모델 학습 과정 중 너무 긴 토큰 사이즈로 인해 발생가능한 에러를 고치는 방법에 대하여 간략하게 다루어보도록 하겠습니다. 오류 원인 trainer로 bert 모델을 학습하는 과정 도중 학습이 잘 진행되다가 중간에 특정 데이터에 도달했을 때, 다음과 같은 오류 메시지가 발생하였습니다. (batch size = 8이었으며, batch 내 문제가 되는 데이터가 포함된 것으로 보입니다.) trainer.train() # RuntimeError: The expanded size of the tensor (1002) must match the existing size (512) at non-singleton dim..

Python/Debugging 2022.08.26

[Matplotlib] 파이썬 산점도 텍스트 label 추가 방법

Python scatter plot 라벨 추가하기 예제 파이썬의 matplotlib(plt) 모듈로 산점도를 그린 뒤, 산점도의 각 점에 텍스트 레이블을 추가하는 방법을 간략하게 정리해 보겠습니다. 예시로, 다음과 같은 데이터프레임 df 정보에 대하여 산점도를 그려보겠습니다. import pandas as pd a = {'이름' : ['AA', 'BB', 'CC', 'DD', 'EE', 'FF'], 'x' : [0.7, 0.4, 1.2, 0.5, 1.3, 0.8], 'y' : [0.6, 1.0, 1.1, 0.5, 0.3, 0.9]} df = pd.DataFrame(a) df 우선, 각 행의 x 및 y 값을 기준으로 산점도를 그려본 결과는 아래와 같습니다. import matplotlib.pyplot as..

Python/Matplotlib 2022.08.24

[Pandas] 파이썬 판다스 요일 추출 방법 정리(weekday, day_name(), 한글 요일 이름)

Python pandas 데이터프레임 요일 구하기 파이썬의 판다스 모듈로 데이터프레임 내의 날짜 정보를 다룰 때, 요일 정보를 추출하는 여러 가지 방법들에 대하여 정리해보도록 하겠습니다. 이해를 돕기 위하여 아래와 같은 데이터프레임 df를 예시로 가정해보도록 하겠습니다. 참고로, 먼저 아래 코드로 시간 정보가 있는 열을 datetime 자료형으로 변환해주어야 합니다. df['시간'] = pd.to_datetime(df['시간']) 1. dt.weekday : 요일 정보를 숫자로 추출 datetime 자료형에서 dt.weekday 속성을 통하여 요일 정보를 숫자로 가져올 수 있습니다. 0은 월요일, 1은 화요일, ..., 6은 일요일을 의미합니다. df['weekday'] = df['시간'].dt.week..

Python/Pandas 2022.08.23

구글 코랩(Colab)에서 파일을 업로드하는 3가지 방법

Google Colaboratory 파일 불러오기 방법 정리 구글 코랩을 사용할 때 코딩 환경 내에 텍스트, 이미지 등의 파일을 올리는 대표적인 방법 3가지를 정리해보도록 하겠습니다. 1. 로컬 환경에서 직접 드래그 가장 간단한 방법으로 로컬 환경에서 원하는 파일을 드래그하여 코딩 환경 내에 파일을 불러오는 방법입니다. 먼저, 코랩을 실행 후 왼쪽의 폴더 모양 아이콘을 클릭해줍니다. 이후, 원하는 파일을 드래그하여 좌측 아래의 빈 공간에 놓거나 혹은 가장 왼쪽의 화살표 모양이 그려진 버튼을 클릭하여 직접 파일을 지정해줍니다. 원하는 파일이 아래처럼 파일 목록에 잘 존재하면 업로드가 완료된 것입니다. 해당 방법의 장단점은 다음과 같습니다. 장점 : 가장 간편하다. 단점 : 파일이 너무 큰 경우 업로드가 어..

Python/Utils 2022.08.23

파이썬 활용 pdf 파일 내 텍스트 추출 방법 정리(pypdf2, tika)

Python pdf text 읽기 파이썬으로 pdf 파일에서 텍스트를 추출해내는 방법에 대하여 다루어보도록 하겠습니다. 여기에는 매우 다양한 방법이 있지만 여기서는 간편한 방법 예시 2가지로 pypdf2 모듈과 tika 모듈을 활용한 예제를 살펴보겠습니다. 이 두 모듈이 설치되어 있지않다면 먼저 아래 명령어로 사용할 모듈을 설치해주세요. !pip install pypdf2 !pip install tika 아래의 매우 간단한 텍스트 두 줄이 있는 pdf_1.pdf 파일을 예시로 설명하겠습니다. pypdf2 모듈 활용 방법 먼저, PdfFileReader를 활용하여 아래의 형식으로 파일 디렉토리와 읽기 모드(rb) 부분을 지정해줍니다. from PyPDF2 import PdfFileReader pdf1 = ..

Python/Utils 2022.08.22

파이썬 예약어 종류 출력 방법, 예약어의 의미(변수명 지정 불가)

Python 예약어 확인하기 / 예약어란? 현재 버전의 파이썬에서 예약어의 종류를 출력해보고 예약어가 갖는 의미에 대하여 정리해보도록 하겠습니다. 예약어 종류 print 방법 파이썬에서 예약어 종류를 출력하는 방법은 간단합니다. keyword 모듈을 import한 뒤, kwlist 속성을 출력해주시면 됩니다. import keyword print(keyword.kwlist) # 출력 결과 예시 : 파이썬의 버전마다 약간씩 다를 수도 있습니다. ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', ..

반응형