본문 바로가기

전체보기241

Python Concurrency Programming Multi-thread vs Multi-Processing vs AsyncIO https://code.luasoftware.com/tutorials/python/python3-threading-vs-multiprocessing-vs-asyncio/ Python의 default interpreter인 CPython은 GIL(Global Interpreter Lock)이 걸려 있어서 multi-thread를 구현해도, 여러 thread가 정말로 동시에 실행될 수는 없다. 그래서 대개의 경우 multi-processing을 통해서 병렬성(parallelism)를 구현한다. 그러나 multi-processing은 "almost independent"하게 job을 쪼갤 수 있는 CPU 연산이 heavy한 task.. 2020. 1. 9.
Python 프로젝트 배포 및 다른 패키지 가져오기 Python 프로젝트를 export 또는 import하는 방법 1. pip install을 사용한다. 2. module관리 도구를 사용한다. 3. git clone을 한다. 1. Pip install 사용하기 먼저 pip로 install하게 하기 위해서는 setup.py와 requirements.txt를 작성해야한다. 그 다음으로 해야할 일은 python 에서 import가 가능한 프로젝트를 패키지 구조로 만드는 것이다. 즉 import 의 파이썬 코드로 사용할 수 있도록 그에 맞는 프로젝트의 구조를 만들어야한다. # 패키지 구조 만들기 출처: https://github.com/chakki-works/seqeval 위와 같이 따라서 setup.py와 requirements.txt 등 실제 실행되지 않을 .. 2020. 1. 9.
음성인식 기초 이해하기 # 발음기호와 문자표현- phoneme: 음소, 가장 작은 소리의 단위. 쉽게 말해 영어사전의 발음기호를 생각하면 된다. - grapheme: 자소(=문자소), 가장 작은 문자의 단위. 발음기호로 표현되기 이전의 원래 문자를 의미한다. 그리고 대부분의 경우 알파벳 1개가, phoneme 1개에 대응 된다. ex) help -> h / e / l / p그러나 항상 phoneme과 1:1대응은 아니다. 예를 들어 shop 에서 sh는 2개의 알파벳이 묶어서 ʃ 으로 발음되므로, 2개의 알파벳이 1개의 grapheme에 대응 된다.ex) shop -> ʃ / ɑː / p경우에 따라서 최대 4개의 알파벳이 1개의 graphpeme에 대응 되기도 한다. ex) weight -> w / ei / t - monoph.. 2019. 12. 29.
Python Coding Convention: PEP 8 PEP 8https://www.python.org/dev/peps/pep-0008/ 이름 짓기 - 클래스: ClassName- 예외 처리: WrongNameError- 상수: CONSTANT_VALUE- public 함수나 변수: lower_case- private 함수나 변수: _lower_case- 패키지나 모듈: lower_short - __이름: 은 특별한 python의 기능이 생긴다. 상속된 다른 class의 변수와 이름이 겹치지 않기위한 것으로, 다른이름으로 자동 변경된다. 이름 금지사항- mixedCase- mixedCASE- Capitalized_Words_With_Underscores 기본적인 Coding Convention1. 모든 문자열에는 큰따옴표를 쓴다. 주석에는 """ 을 """.. 2019. 12. 17.
소리 합성 사람 목소리의 주파수목소리의 fundamental frequency의 경우 남성 85~180hz, 여성 165~255Hz이다.그런데 전화통화 기술에서는 목소리의 범위를 300~3400Hz로 가정하고, 이를 voice frequency라고 한다. 그리고 목소리를 전송하는 채널은 4kHz를 쓰며 이에 따라 최소한 2배(Nyquist-Shannon의 샘플링이론에 의해)가 되는 8kHz로 샘플링을 해서 목소리를 pcm으로 변환한다. https://en.wikipedia.org/wiki/Voice_frequency#:~:text=The%20voiced%20speech%20of%20a,frequency%20band%20as%20defined%20above. Voice Synthesis에서의 두가지 큰 방법- con.. 2019. 12. 9.
딥러닝 프로젝트를 위한 클라우드 GPU 자원, Google Cloud Platform GPU Cloud 서비스무료 GPU 서버현재까지 알려진 가장 좋은 무료 GPU 서비스는 Google colab이 유일하다. 그러나 colab은 하루에 12시간까지밖에 GPU를 쓸 수 없는 제약이 있고, 데이터를 지속적으로 서버에 올려둘 수가 없어서 google drive에 데이터를 올리고 이를 mount해서 사용해야하는데 이게 매우 불편하다. 또한 command line interface를 제공하지 않아서, jupyter의 cell에 !을 입력해서 해야하는데, 이 또한 매우 불편하다. 그리고 jupyter notebook도 기존에 사용하던 jupyter와 단축키 및 기능이 조금씩 달라서 적응하는데 꽤 시간이 걸린다. 그럼에도 불구하고 한시간에 1000원정도 하는 T4 GPU를 무료로 쓸 수 있다는 것은 .. 2019. 12. 8.
Google API로 GDrive랑 Gspread 사용하기 구글 계정 접속 권한 얻기 먼저 구글 계정의 접속 권한을 얻기 위한 credential생성이 필요하다. * 원칙적으로 oauth2client는 deprecated되고, 이제 google_auth_oauthlib을 사용해야한다. https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html#replacement 1. 구글 계정 생성 2. https://console.developers.google.com/apis/library? 에서 원하는 API선택 3. 사용자 인증 정보 생성 4. OAuth 동의에서 scope설정 5. json credential 다운로드 6. Flow를 이용해서 authorization_url얻기 7. autho.. 2019. 11. 22.
라즈베리파이 4 Model B 시작하기 작동을 위해 필요한 최소 주변기기 1. USB-C 전원 연결을 위한 충전기(라즈베리파이 공식 충전기 사용해야 안정적인 전원 공급이 가능함) 2. 8기가 이상의 microSD카드(라즈베리파이 공식 카드 사용) 및 리더기 3. 케이스(있는게 매우 좋음) 4. microHDMI 케이블 최소 연결 사항 microSD카드 삽입, 전원 연결, USB키보드 연결, USB마우스 연결, microHDMI연결 방열판 부착하기 은색, 검은색 칩에 붙여주면 된다. 그러나 실질적인 효과는 -1~2도라고 한다.... https://www.youtube.com/watch?v=E-4GaAz7XNM 기본 시작 방법 아래 링크를 천천히 따라합시다. https://projects.raspberrypi.org/en/projects/rasp.. 2019. 11. 8.
AMD CPU 가상화 옵션키기 # AMD에서는 CPU가상화 옵션이 살짝 숨겨져있다. 1. 컴퓨터를 부팅하면서 del키를 연타하여 BIOS setup에 들어간다. 2. M.I.T 에서 Advanced Frequency Settings 3. Advanced CPU Core Settings 4. SVM Mode을 enable https://forum.level1techs.com/t/solved-no-virtualization-support-with-gigabyte-ga-ab350-gaming-3/114171 2019. 11. 8.
WSL 2 특징 및 설치방법 WSL 2의 특징 WSL 2에서야 Windows 10은 진정한 ubuntu와의 결합이 이루어졌다고 말한다. WSL 1은 파일시스템이 제대로 통합되지 않아, 다수의 파일을 처리하는 작업이 매우 느렸는데, 이제 기존보다 훨씬 빠른 파일 시스템을 제공하고, 더 많은 커널함수를 구현하여 ubuntu native docker를 설치할 수가 있다. 그러나 아직까지는 CUDA를 지원하지 않고, 여러 안정화가 덜되어있어서 불편한 사항이 있다. 좋은 점은 모든 인터페이스가 WSL 1과 완전히 동일하여 적응하는 데 거의 코스트가 들지 않는다는 점이다. WSL 2 Public Release 소식(2020.05.21) 드디어 Windows 10에서 정식으로 WSL 2가 release되었다. 이제 불안정한 윈도우즈 참가자 프로.. 2019. 11. 8.
Residual connection 2019. 10. 22.
각종 Normalization technique • Batch Normalization: 개별 feature에 대한 통계를 구한다.(mini-batch내의 모든 데이터와 모든 시공간 dimension을 across out) • Layer Normalization: 개별 instance에 대한 통계를 구한다.(모든 feature와 모든 시공간 dimension을 across out) 특히 각 seq마다 input feature의 스케일이 다를때 유용하다. ex) 시끄러운 wav 파일, 조용한 wav 파일 • Instance Normalization: 개별 instance에서, 개별 feature의 통계를 구한다.(모든 시공간 dimension을 across out) 이것은 사실 통계라고 말하기 힘듦. 그냥 그 값 1개를 가져오는 것임 • Group No.. 2019. 10. 22.
물리학에 기반한 모델 # Ising Mode Ernst Ising에 의해 만들어진 모델로, 원자의 spin을 나타내는 수학적 통계 모형이다. 각각의 변수는 -1 or +1 의 값을 가지고, 일반적으로 격자 형태의 모양에 배열되어 있고, 인접한 이웃과만 서로 영향을 주고 받음 2019. 5. 15.
강화학습, Exponentially weighted average계산하기 https://gist.github.com/imcomking/b1acbb891ac4baa69f32d9eb4c221fb9 def exponentially_weighted_matrix(discount, mat_len): DisMat = np.triu(np.ones((mat_len, mat_len)) * discount, k=1) DisMat[DisMat==0] = 1 DisMat = np.cumprod(DisMat, axis=1) DisMat = np.triu(DisMat) return DisMat def exponentially_weighted_cumsum(discount, np_data): DisMat = exponentially_weighted_matrix(discount, np_data.shape[0.. 2019. 1. 22.
Matplotlib 사용 팁 Jupyter에서 Matplotlib를 이용한 Dynamic plotting거의 몇시간의 검색 끝에 working하는 예제를 찾을 수 있었다.핵심은 %matplotlib notebook 을 쓴다는 것과, fig1.canvas.draw()를 호출해주는 것이었다.그러나 이 방법의 한계는 매번 새로 drawing을 해서 속도가 느리다는 것이다.https://stackoverflow.com/a/55771526/7573626 그래서 아래의 방법으로 set_xdata를 사용하도록 수정해보았다. %matplotlib notebook import matplotlib.pyplot as plt fig1 = plt.figure(figsize=(15,5)) ax1 = fig1.add_subplot(111) ax1.set_xl.. 2018. 11. 27.
PID 제어 # PID Controller: 산업적으로 매우 넓게 사용되는 제어 시스템으로, 수학이나 물리학적으로 유래된 모델이기 보단, 순수히 실용적인 목적으로 만들어져서 널리 사용되고 있는 공학적인 모델이다.https://en.wikipedia.org/wiki/PID_controller#Proportional_term P, I, D 세가지 요소로 우리가 원하는 target value를 만들어내기 위해 최적의 제어 routine을 만들어낸다.예를 들어 에어컨을 틀어서 실내온도를 30도에서 20도로 만들려면 어떻게 해야할까? 너무 과하게 가동하면 자칫 온도가 18도까지 내려갈수도 있고, 너무 살살틀면 20도까지 가려면 한도끝도 없이 기다려야할 것이다.그래서 매우 빠르고 정확하게 20도를 만들어내기 위한 제어가 필요한.. 2018. 11. 13.
딥러닝에서 쓸만한 다양한 Ensemble Method # 앙상블- Soft voting: 각 Softmax확률의 평균을 낸다음 argmax- Hard voting: 각 softmax에서 argmax한 다음 아래와 같은 방법으로 voting* Unanimous voting: 만장일치일 때만 decision함* Majority voting: 다수결로 선택된 decision이 전체의 50%를 넘어야됨.* Plurality voting: 각각의 softmax에대해 argmax한다음 가장 다수의 의견을 따름.(50%를 넘지 않아도 됨)- Weighted voting: Soft 혹은 Hard voting에서 각 softmax에 임의의 weight를 주어서 사용.(확률에 대해선 weighted sum, Hard에 대해서는 2표를 행사할 수 있음)- Staking: 각각.. 2018. 11. 1.
Pandas Pandas 팁 데이터 분석을 하다보면 numpy보다 pandas가 더 편한 경우가 종종있다. 물론 연산 속도는 numpy가 훨씬 빠르다. 1. SettingWithCopyWarning 해결하기 Pandas 에서 특정 row의 특정 column에 value를 집어 넣을 때 흔히 발생하는 에러이다. 이는 문법적으로 iloc함수에 대한 python에서 해석이 불분명하기 때문에 발생한다. Indexing and selecting data - pandas 0.25.0 documentation 해결 방법은 매우 간단하다. 아래와 같이 iloc대신 loc를 사용하면 된다. How to deal with SettingWithCopyWarning in Pandas? # Groupby 특정 column을 지정하고, 해당.. 2018. 6. 29.
Javascript - 자바스크립트에서는 this가 매우 유용하다.- 모든 객체는 Window 밑에 존재하며, 그 밑에 document 와 body등의 children으로 존재한다.- .find() 등의 함수를 이용해 내가 원하는 element를 하위 children에 대해 검색할 수 있다.- 동적으로 모든 object들이 업데이트되므로, 과거에 console.log로 찍은 object도 나중에 업데이트되어 바뀐다. - Javascript에서 Undefined를 검출해내는 것은 쉽지 않은 일이다. https://martin-thoma.com/javascript-wtf/ 2018. 5. 9.
Windows10 에서 화면 녹화하기 # 윈도우10 유저라면 기본 설치된 Xbox 프로그램을 이용해 유료 소프트웨어를 쓰지 않고 화면을 쉽게 녹화할 수 있다.Windows 로고 키+G: 게임 표시줄 열기(또는 Xbox Game Bar를 검색해서 실행)Windows 로고 키+Alt+G: 게임 플레이의 마지막 순간들 녹화(게임 표시줄 > 설정에서 녹화되는 시간을 변경할 수 있습니다.)Windows 로고 키+Alt+R: 녹화 시작/중지Windows 로고 키+Alt+Print Screen: 게임 스크린샷 찍기Windows 로고 키+Alt+T: 녹화 타이머 표시/숨기기Windows 로고 키+Alt+M: 마이크 녹음 시작/중지http://it.donga.com/22257/ - 그러나 위 방식의 단점은.. 하나의 application에 대해서만 녹화를 .. 2018. 3. 12.