본문 바로가기

R, Python10

[Python, AI] 효율적인 리스트 연산 파이썬에서 리스트는 내부적으로 많은 연산이 정의된 데이터 구조 클래스이다. 딥러닝을 하다보면, 특히 자연어 처리에서 데이터셋 클래스를 구현할 때 리스트 연산을 많이 사용하게 된다. 사전에 초기화 함수에서 모든 리스트를 만들어두는 경우가 많지만 데이터가 엄청 큰 경우 메모리에 전부 적재하기가 쉽지 않다. 또한, RoBERTa와 비슷하게 학습 시에 랜덤하게 데이터 객체를 조작하는 경우, 학습 시에 리스트 연산을 하게 될 수 있다. 그렇지만 대규모 학습은 많은 학습 횟수로 이어지므로 하나의 batch를 얻는데 시간을 줄이는 것은 필수적이다. 동일한 결과를 내놓는 다음 실험의 5가지 변형을 통해 간단하게 조사해보았다. 실험 내용) 고정된 길이의 리스트가 있을 때, 어떤 가변 길이의 리스트의 길이만큼은 1로 채우.. 2022. 1. 19.
[Pytorch] scatter_add_ 함수 이해 Tensor.scatter_add_ 함수에 대해 이해해보자. parameter는 dim, index (LongTensor), src다. 이 함수의 기능은 dim-axis를 따라 self 텐서의 index에 src를 더해주는 함수다. 원본 문서에서 다음과 같이 좋은 예시를 보여주고 있다. 다음과 같이 src와 index 텐서를 매개변수로 함수를 호출했다고 하자. src = torch.ones((2,5)) # [2x5] index = torch.tensor([[0,1,2,0,0]]) # [1x5] torch.zeros(3,5,dtype=src.dtype).scatter_add_(0,index,src) """ tensor([[1., 0., 0., 1., 1.], [0., 1., 0., 0., 0.], [0.,.. 2021. 12. 3.
[PyQt5] Pytorch3D를 이용한 Mesh Viewer 구현 Pytorch 3D 라이브러리를 연구에 사용하기 위해 미리 익혀보고자 간단한 Mesh Viewer를 만들었다.마우스 드래그를 이용해 객체 회전이 가능하며, 마우스 휠을 이용해 객체 확대/축소가 가능하다.현재는 카메라를 이용한 것만 있지만, 추후 light 조정, texture mapping 등을 추가할 예정이다. 4/23 키보드를 이용한 조명 위치 변경 추가 코드는 다음과 같다.https://github.com/yeongjoonJu/Mesh-Viewer-using-pytorch3d 2020. 4. 13.
[python] PyQt5로 이미지 뷰어 만들기 (간단한 라벨링 툴 만들기 1단계) 2019-11-13-pyqt5 키보드 입력으로 이전 다음 이미지를 볼 수 있고 추가로 해당 이미지에 라벨링하는 이미지 라벨링 툴을 만들어보자. 이번 편에서는 이미지 뷰까지만 다루고 다음 편에 각종 라벨링 기능을 추가하는 것을 다루어보겠다.먼저 PyQt5를 설치해주자.pip install pyqt5 그 다음 ImageViewer 클래스를 만들고 QMainWindow를 상속받는다. 그 다음 __init__ 함수에서 폴더 경로라던가 색상 테이블 등의 변수를 선언해주면 되고 액션 생성, 창 제목 및 크기도 설정해주면 된다. 나머지 함수는 스크롤 기능과 이미지를 윈도우 크기에 최적화 하여 보여주기 위한 함수들이다.xfrom PyQt5.QtCore import QDir, Qtfrom PyQt5.QtGui impor.. 2019. 11. 14.
[C/C++/C#] 콘솔에서 글자 색 변경하기 (예시: KMP 알고리즘) 2019-11-05-console-color-change Visual studio에서 디버깅을 할 때 기본적으로 제공하는 디버깅 기능을 이용하지만, 중간 결과들을 출력해서 보는게 더 빠를 때가 많다. 이때 그냥 보면 헷갈리거나 난잡하게 보이는 경우가 많다. 그래서 변경된 부분만 다른 색상으로 출력하면 괜찮겠다 싶었다.다음은 문자열 탐색 알고리즘인 KMP 알고리즘을 통해 찾은 것이 정확한지 보는 예시다.KMP 알고리즘vector kmp(string txt, string pattern) { // make table int table[101] = { 0 }; vector pos; // k는 찾을 문자열의 인덱스 int k = 0; for (int i = 1; i 0 && pattern[k] != pattern.. 2019. 11. 5.
[python] 네이트판 웹 크롤러를 만들어보자! 2019-02-13-web_crawler 자연어 처리를 공부하던 중 문득 인터넷 상의 글들을 긁어모아서 학습해보면 재밌겠다 싶어서 웹 크롤링을 공부했다. 최근 게시물의 경향은 이미지 위주의 글이기 때문에 글 위주의 게시물이 있는 곳이 없을까 생각하다가 네이트판을 떠올렸다.간단한 웹 크롤링은 requests 모듈과 bs4의 BeautifulSoup 모듈만 있으면 가능하다.pip 모듈을 이용해 라이브러리를 설치해주자.pip install requestspip install bs4 웹 크롤링을 하기에 앞서 크롤링을 하고자 하는 웹 페이지의 구조를 분석해야 한다. 크롤링하려는 네이트판 랭킹 페이지 주소는 다음과 같다.https://pann.nate.com/Talk/Ranking?rankingType=total분.. 2019. 2. 13.
[Python] 5분만에 음성 인식 구현하기 2019-02-04-speech_recognition 이 글은 David Amos님의 The Ultimate Guide To Speech Recognition With Python 글을 참고하였습니다. 여러 음성인식 API를 사용하여 파이썬에서의 음성 인식을 손쉽게 할 수 있게 하는 SpeechRecognition 패키지를 소개하고자 합니다. python3에서의 설치는 pip를 이용해서 간단히 설치할 수 있습니다.pip install SpeechRecognitionpython2에서의 설치는 약간의 추가적인 단계가 필요하니 python2는 여기를 참고하세요. 위 명령어를 통해 설치를 했으면, 다음 코드를 실행해서 잘 설치되었는지 확인해보세요.import speech_recognition as srsr.__.. 2019. 2. 5.
python 로딩(애니메이션) 쉽게 구현하기 pip를 이용해서 패키지를 설치하거나 케라스를 이용하여 모델을 학습시킬 때, 다음과 같이 콘솔에서 애니메이션처럼 로딩 화면을 출력하는 것을 볼 수 있다. tqdm 모듈을 이용하면 깔끔하지만 본인 입맛에 맞게 출력해주고자 한다면, print 함수의 end 인수의 기본 값인 개행을 다른 값으로 변경해주면 된다. 그런 다음 \r을 이용해서 커서를 맨 앞으로 보낼 수 있다는 점을 이용해 출력해주면 끝이다. for cur, doc in enumerate(docs): if cur % 200 == 10: print("\rcomplete %.2f" % ((float(cur)/total) * 100), end="") 반복문의 진행정도를 알고 싶은거라면 그냥 tqdm을 사용하자. 그렇지 않고 수식의 계산 결과도 같이 보여.. 2019. 1. 23.
R을 이용한 텍스트 마이닝 및 워드 클라우드(word cloud) 만들기 2018-12-07-text-mining-R-twice 트와이스에 대한 문서로 텍스트 마이닝을 해보자.먼저, 트와이스 관련 문서를 pdf로 다운로드 받아준다. 위키피디아 페이지에서 Download as PDF로 들어가서 해당 페이지를 pdf로 다운로드할 수 있다. 1. PDF 파일을 단일 문자열로 만들기pdftools를 이용해 pdf 파일을 불러오고 stringr 패키지를 이용해서 텍스트 분석을 할 것이다.xxxxxxxxxx# 패키지 설치install.packages("pdftools")install.packages("stringr")​# 패키지 부착library(pdftools)library(stringr)twice_text % # 구두점 제거 str_replace_all("[[:punct:]]+", .. 2018. 12. 7.
Tistory에 markdown으로 글쓰기 필자도 그러하지만, 깃 블로그에서 티스토리로 이동하는 경우가 많이들 있는 것 같다. 깃 블로그에 공부하면서 올린 게 다른 분들에 비하면 얼마 안 되지만 그래도 하다보니 쌓여서 버리기 좀 아까워서 쉽게 티스토리로 옮기지 못 했다. 그러다 내가 Markdown으로 작성한 문서를 다른 사람에게 보내줘야 할 일이 생겨서 Typora를 이용해서 pdf로 내보낸 뒤 보내주었다. 그 때 HTML 문서로도 내보낼 수 있는 것을 보았고 그걸 이용해보기로 했다. 위와 같이 파일 - 내보내기 - HTML 문서를 통해 HTML 코드로 변환을 시킬 수 있고 티스토리 글 작성 화면의 우측 상단에 에디터를 HTML로 변경하여 그대로 코드를 복사하면 Typora로 작성된 문서와 똑같이 작성된 것을 확인할 수 있다. 이미지는 따로 올.. 2018. 10. 12.