파이썬(Python)
파이썬과 관련된 내용에 대해 소개하는 페이지입니다!
-
1. 재귀(Recursion) 이란? 자료구조에서 재귀(recursion)는 함수의 실행 과정에서 자기 자신을 호출하는 함수를 의미합니다. Example : Factorial Function 재귀의 간단한 예시는 팩토리얼(Factorial) 함수를 예로 들 수 있습니다. 팩토리얼 함수를 수식으로 표현하면 다음과 같습니다. $$ f(n) = \begin{cases} 1 & n = 0 \newline n \cdot f(n-1) & else \end{cases} \quad where \ n \in \mathbb{Z}^+$$ 위 수식을 Python으로 구현하면 다음과 같이 구현해 볼 수 있습니다. 2. 재귀 함수 구현 시 주의사항 다음으로는 재귀함수를 작성할 때 반드시 포함되어야 하는 부분은 (1) Base c..
[자료구조] 재귀(Recursion) 정리1. 재귀(Recursion) 이란? 자료구조에서 재귀(recursion)는 함수의 실행 과정에서 자기 자신을 호출하는 함수를 의미합니다. Example : Factorial Function 재귀의 간단한 예시는 팩토리얼(Factorial) 함수를 예로 들 수 있습니다. 팩토리얼 함수를 수식으로 표현하면 다음과 같습니다. $$ f(n) = \begin{cases} 1 & n = 0 \newline n \cdot f(n-1) & else \end{cases} \quad where \ n \in \mathbb{Z}^+$$ 위 수식을 Python으로 구현하면 다음과 같이 구현해 볼 수 있습니다. 2. 재귀 함수 구현 시 주의사항 다음으로는 재귀함수를 작성할 때 반드시 포함되어야 하는 부분은 (1) Base c..
2024.02.16 -
보통 transformers에서 커스텀 LLM 모델을 만들 때, tokenizer도 미리 pretrained되어있는 모델을 주로 사용한다. 예를들어 RobertaTokenizer를 사용한다고 가정해보자. from transformers import RobertaTokenizer #tokenizer tokenizer = RobertaTokenizer.from_pretrained('roberta-base',sep_token = '') 보통은 텍스트 데이터를 모델에 입력할 때, 모든 텍스트의 길이를 통일시켜 주는 경우가 많다. 하지만 문장의 길이가 모두 다르기 때문에 통일을 시켜 주는데, 이때 해주는 작업이 padding 작업이다. Padding은 짧은 문장을 길게 늘일때 사용하는 기법으로, 예를들어 입력 문..
[Hugging Face🤗] Padding & Truncation 정리보통 transformers에서 커스텀 LLM 모델을 만들 때, tokenizer도 미리 pretrained되어있는 모델을 주로 사용한다. 예를들어 RobertaTokenizer를 사용한다고 가정해보자. from transformers import RobertaTokenizer #tokenizer tokenizer = RobertaTokenizer.from_pretrained('roberta-base',sep_token = '') 보통은 텍스트 데이터를 모델에 입력할 때, 모든 텍스트의 길이를 통일시켜 주는 경우가 많다. 하지만 문장의 길이가 모두 다르기 때문에 통일을 시켜 주는데, 이때 해주는 작업이 padding 작업이다. Padding은 짧은 문장을 길게 늘일때 사용하는 기법으로, 예를들어 입력 문..
2023.06.28 -
모델을 돌릴 때 OutofMemory error가 발생하는 경우가 있다. 보통은 이런 경우에는 - 커널을 재시작하기(나도 모르게 모델이 여러개 올라가 있는 경우가 있다) - 사용하지 않는 변수를 제거하기 - Batch size를 줄여서 학습해보기 - 모델 자체의 네트워크 사이즈를 줄여보기 - inference 단계에서는 자동미분(torch.no_grad()) 사용하기 를 하는 경우가 일반적이지만, torch에서 캐쉬를 지워주는 함수도 사용해 볼 수 있다. 사용 방법은 torch.cuda.empty_cache()를 실행시켜 주면 된다.
GPU 메모리 확보하기모델을 돌릴 때 OutofMemory error가 발생하는 경우가 있다. 보통은 이런 경우에는 - 커널을 재시작하기(나도 모르게 모델이 여러개 올라가 있는 경우가 있다) - 사용하지 않는 변수를 제거하기 - Batch size를 줄여서 학습해보기 - 모델 자체의 네트워크 사이즈를 줄여보기 - inference 단계에서는 자동미분(torch.no_grad()) 사용하기 를 하는 경우가 일반적이지만, torch에서 캐쉬를 지워주는 함수도 사용해 볼 수 있다. 사용 방법은 torch.cuda.empty_cache()를 실행시켜 주면 된다.
2023.06.13 -
이번 포스트에서는 Selenium으로 국내 온라인 커뮤니티중 하나인 DC Inside(디시인사이드)를 크롤링하는 방법에 대해 정리하고자 합니다. 일반적으로 웹에서 데이터를 가져올 때 해당 사이트에서 제공하는 공식 API가 있으면 가장 좋지만, 그렇지 않은 경우에 request와 BeautifulSoup을 이용해서 크롤링을 진행할 수 있습니다. 하지만 request를 사용하는 경우 sleep()을 사용했음에도 불구하고 접속 차단을 하는 사이트가 존재합니다. 또한 크롤링 타깃 사이트가 동적페이지인 경우, request를 이용하여 동적 페이지를 크롤링 못하는 건 아니지만(예시 : 네이버 데이터랩 크롤링) 개인적으로 다른 사이트에 적용 해 보았을 때 잘 안 되는 경우가 있었습니다. 이러한 경우에는 request..
Selenium으로 웹사이트(디시인사이드) 크롤링하기이번 포스트에서는 Selenium으로 국내 온라인 커뮤니티중 하나인 DC Inside(디시인사이드)를 크롤링하는 방법에 대해 정리하고자 합니다. 일반적으로 웹에서 데이터를 가져올 때 해당 사이트에서 제공하는 공식 API가 있으면 가장 좋지만, 그렇지 않은 경우에 request와 BeautifulSoup을 이용해서 크롤링을 진행할 수 있습니다. 하지만 request를 사용하는 경우 sleep()을 사용했음에도 불구하고 접속 차단을 하는 사이트가 존재합니다. 또한 크롤링 타깃 사이트가 동적페이지인 경우, request를 이용하여 동적 페이지를 크롤링 못하는 건 아니지만(예시 : 네이버 데이터랩 크롤링) 개인적으로 다른 사이트에 적용 해 보았을 때 잘 안 되는 경우가 있었습니다. 이러한 경우에는 request..
2023.04.15 -
__call__ method는 파이썬의 매직 메소드(Magic method) 중 하나입니다. __call__ method는 클래스의 객체도 호출할 수 있도록 만들어주는 메소드 입니다. 예를 들어 다음과 같은 클래스를 만들었다고 가정해봅시다. class Cal: def __init__(self): self.message = "number : " print(self.message) def __call__(self,a): self.n1 = a return self.message + str(self.n1**2) 이 클래스의 message라는 변수는 문자열 'number : '로 초기화되며, 이후 해당 문자열을 출력합니다. __call__ 메소드는 a라는 숫자를 받으면 제곱을 하고 message변수와 합쳐져서 리..
__call__ method의 사용법__call__ method는 파이썬의 매직 메소드(Magic method) 중 하나입니다. __call__ method는 클래스의 객체도 호출할 수 있도록 만들어주는 메소드 입니다. 예를 들어 다음과 같은 클래스를 만들었다고 가정해봅시다. class Cal: def __init__(self): self.message = "number : " print(self.message) def __call__(self,a): self.n1 = a return self.message + str(self.n1**2) 이 클래스의 message라는 변수는 문자열 'number : '로 초기화되며, 이후 해당 문자열을 출력합니다. __call__ 메소드는 a라는 숫자를 받으면 제곱을 하고 message변수와 합쳐져서 리..
2023.01.05 -
자료구조를 공부하다 보면 반드시 배우는 개념이 Stack & Queue입니다. # Stack Stack은 선입 후출 방식으로 가장 나중에 들어오는 데이터를 제일 먼저 반환하는 방식입니다. 파이썬으로 구현하는 방법은 리스트에 자료를 넣고 빼는 방식으로 구현하면 되며 자료를 넣을 땐 append함수를 이용하면 리스트에 넣는 순서대로 데이터가 들어가기 때문에 간단히 구현할 수 있습니다. 반대로 stack에서 데이터를 빼내는 과정은 가장 마지막 자료부터 빼야 합니다. 이때, 빼낸 자료는 리스트에 없어야 합니다. 이때 사용하는 함수는 pop 함수를 이용합니다. # Queue 다음으로 Queue는 Stack과는 다르게 선입선출 방식으로써 먼저 들어온 데이터를 먼저 처리하게 됩니다. 데이터를 넣는 방식은 Stack과..
[Python] Stack(스택) 과 Queue(큐) 정리 및 예제자료구조를 공부하다 보면 반드시 배우는 개념이 Stack & Queue입니다. # Stack Stack은 선입 후출 방식으로 가장 나중에 들어오는 데이터를 제일 먼저 반환하는 방식입니다. 파이썬으로 구현하는 방법은 리스트에 자료를 넣고 빼는 방식으로 구현하면 되며 자료를 넣을 땐 append함수를 이용하면 리스트에 넣는 순서대로 데이터가 들어가기 때문에 간단히 구현할 수 있습니다. 반대로 stack에서 데이터를 빼내는 과정은 가장 마지막 자료부터 빼야 합니다. 이때, 빼낸 자료는 리스트에 없어야 합니다. 이때 사용하는 함수는 pop 함수를 이용합니다. # Queue 다음으로 Queue는 Stack과는 다르게 선입선출 방식으로써 먼저 들어온 데이터를 먼저 처리하게 됩니다. 데이터를 넣는 방식은 Stack과..
2022.08.23 -
코딩을 하다가 'pytorch-lightning' 이라는 라이브러리를 사용해보려고 설치했는데 무슨 "Segmentation fault (core dumped)" 라는 에러가 뜨기도 하고 "Import error ~ undefined symbol ~~" 과 같은 에러도 발생해서 StackOverflow,Github, 등등을 돌아다니던 중 유용한 코드가 있길래 가져왔습니다! $python -m torch.utils.collect_env 위 커맨드를 입력하면 Pytorch의 버전은 물론 CUDA 버전 및 torch.cuda.is_available() 의 정보도 알려주며 torch와 관련된 라이브러리의 버전 정보까지(중요) 알려줍니다. 상당히 종합적인 정보를 볼 수 있어서 버전 충돌과 같은 이슈를 해결하는데 어..
Pytorch 버전 확인하기코딩을 하다가 'pytorch-lightning' 이라는 라이브러리를 사용해보려고 설치했는데 무슨 "Segmentation fault (core dumped)" 라는 에러가 뜨기도 하고 "Import error ~ undefined symbol ~~" 과 같은 에러도 발생해서 StackOverflow,Github, 등등을 돌아다니던 중 유용한 코드가 있길래 가져왔습니다! $python -m torch.utils.collect_env 위 커맨드를 입력하면 Pytorch의 버전은 물론 CUDA 버전 및 torch.cuda.is_available() 의 정보도 알려주며 torch와 관련된 라이브러리의 버전 정보까지(중요) 알려줍니다. 상당히 종합적인 정보를 볼 수 있어서 버전 충돌과 같은 이슈를 해결하는데 어..
2021.11.05 -
어느 날 평화롭게 코드를 짜던 도중 예상치 못한 오류가 발생했다. 에러의 내용을 살펴보면 새롭게 설치한 라이브러리가 하나 있는데, 해당 라이브러리를 설치하는 과정에서 기존에 설치한 라이브러리의 버전을 바꾸게 되었고, 그 결과로 기존에 깔려있던 다른 라이브러리와 버전 호환이 안된다는 내용이었습니다..ㅜㅜ 지금까지 그냥 하나의 환경에서 잘 쓰고 있던 나에게는 당장 급하게 가상 환경을 세팅 해야만 했습니다. 그래서 이왕 가상 환경을 세팅하는 겸, 나중에 또 찾아볼것이 명확하기에 이참에 정리 해 보고자 합니다. 본 포스트에서 다루는 내용은 다음과 같습니다. 가상환경 생성 및 실행 (종료 포함) 가상환경 복사 설치한 가상환경 목록 확인 가상환경 삭제 1. 가상환경 생성 및 실행(종료) 새로운 가상환경을 만들기 위..
[Python] 가상환경(Virtual Environment) 세팅하기어느 날 평화롭게 코드를 짜던 도중 예상치 못한 오류가 발생했다. 에러의 내용을 살펴보면 새롭게 설치한 라이브러리가 하나 있는데, 해당 라이브러리를 설치하는 과정에서 기존에 설치한 라이브러리의 버전을 바꾸게 되었고, 그 결과로 기존에 깔려있던 다른 라이브러리와 버전 호환이 안된다는 내용이었습니다..ㅜㅜ 지금까지 그냥 하나의 환경에서 잘 쓰고 있던 나에게는 당장 급하게 가상 환경을 세팅 해야만 했습니다. 그래서 이왕 가상 환경을 세팅하는 겸, 나중에 또 찾아볼것이 명확하기에 이참에 정리 해 보고자 합니다. 본 포스트에서 다루는 내용은 다음과 같습니다. 가상환경 생성 및 실행 (종료 포함) 가상환경 복사 설치한 가상환경 목록 확인 가상환경 삭제 1. 가상환경 생성 및 실행(종료) 새로운 가상환경을 만들기 위..
2021.08.04