본문 바로가기

전체보기198

Python 프로젝트의 배포를 위한 패키지화 / 다른 패키지 가져오기 개발한 python 프로젝트를 배포하는 방법들1. pip install로 설치할 수 있게 한다.2. submodule로 사용할 수 있게 한다.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.
음성인식 이해하기 # 기본 개념# Acoustic model 오디오 --> phoneme(혹은 grapheme 등)을 예측해주는 모델 # Phoneme Dictionary word -> phoneme가 기록된 정보 # G2P model 대규모 dictionary를 학습해서, 임의의 word에 대한 phoneme을 예측해주는 모델 (dictionary와의 차이점은, dictionary에 없는 word에 대한 phoneme 예측도 가능함) # Pitch: 음의 높낮이(진동수 Hz의 크고 작음과는 다르다) Pitch는 보다 추상적인 개념으로, 사람이 인지할 수 있는 Hz의 변화가 저주파일때 더 민감하고, 고주파로 갈수록 둔감해지는 just-noticeable differences에서 출발한 개념이다.즉 사람이 인지하는 음의 높.. 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.
소리 합성 # 기본 개념 - Mono vs Stereo: 마이크 2개에서 녹음하고, 정확히 mono 2개의 정보를 저장하면 스테레오. - Sampling rate: data point의 x축 해상도. 즉 1초에 몇번이나 data point를 찍을지, - Bit depth: data point의 y축 해상도. 각 찍힌 점들이 구분될 수 있는 amplitude의 단계. 만약 2 bit rate이면 오직 4단계의 y축 해상도만 존재함. - Bit rate: Sampling rate * Bit depth, 위 두가지 measure를 동시에 고려하는것. 초당 bits전송량https://www.reddit.com/r/explainlikeimfive/comments/4d4krv/eli5_what_is_the_difference.. 2019. 12. 9.
소규모 프로젝트를 위한 GPU 자원, GCP # 무료 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. authorization_url에 접속 후 로그인하여 au.. 2019. 11. 22.
라즈베리파이 4 Model B 시작하기 # 작동을 위해 필요한 최소 주변기기 1. USB-C 전원 연결을 위한 충전기(라즈베리파이 공식 충전기 사용) 2. 8기가 이상의 microSD카드(라즈베리파이 공식 카드 사용) 및 리더기 3. 케이스(있는게 매우 좋음) 4. microHDMI 케이블 # 방열판 부착하기 은색, 검은색 칩에 붙여주면 된다. 그러나 실질적인 효과는 -1~2도라고 한다.... https://www.youtube.com/watch?v=E-4GaAz7XNM # 기본 시작 방법: 아래 링크를 천천히 따라합시다. https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up # 운영체제 설치하기 아래 링크에서 원하는 이미지를 다운받는다. https://www.raspber.. 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.
WSL2 설치하기 # WSL2의 특징 WSL2에서는 진정한 ubuntu와의 결합이 이루어졌다. 기존보다 훨씬 빠른 파일 시스템을 제공하고, 더 많은 커널함수를 구현하여 ubuntu native docker를 설치할 수가 있다. 그러나 아직 GPU를 지원하지 않고, 안정화가 덜되어있어서 설치 등에서 불편한 사항이 있다. 사용 인터페이스는 WSL 1과 완전히 동일하여 적응하는 데 문제는 없다. # 약 2주간 사용후기 WSL2자체에도 아직 몇가지 문제가 있었고, Windows Insider Program에 가입해서 강제로 beta버전의 빌드를 써야해서 윈도우즈 자체가 매우 심각하게 불안정해지는 문제(정상 종료가 안되거나하는)가 있었다. 업데이트를 롤백을 하고 싶었으나 업그레이드 후 1주일이 지나면 롤백을 할 수도 없었다. be.. 2019. 11. 8.
Residual connection 2019. 10. 22.
각종 Normalization technique • Batch Normalization: 개별 input feature에 대한 통계를 구한다.(mini-batch내의 모든 데이터와 모든 시공간 dimension을 across out) • Layer Normalization: 개별 instance에 대한 통계를 구한다.(모든 feature와 모든 시공간 dimension을 across out) 특히 각 seq마다 input feature의 스케일이 다를때 유용하다. ex) 시끄러운 wav 파일, 조용한 wav 파일 • Instance Normalization: 개별 instance에서, 개별 input feature의 통계를 구한다.(모든 시공간 dimension을 across out) 이것은 사실 통계라고 말하기 힘듦. 그냥 그 값 1개를 가져오는 것.. 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 에서 한글 font로 출력하기 1. 한글 폰트를 다운받고 압축을 푼다. https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%82%98%EB%88%94%ED%8F%B0%ED%8A%B8_%EC%84%A4%EC%B9%98 2. 해당 경로로 matplotlib font를 설정해준다. https://financedata.github.io/posts/matplotlib-hangul-for-osx.html import matplotlib.font_manager as fmfont_list = font_manager.findSystemFonts(fontpaths='/nfs/user/DonghyunKwak_NFS/DonghyunKwak/NanumFont', fontext='ttf')print(font.. 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도를 만들어내기 위한 제어가 필요한데, 그럴 때 사용되는 것이 바로 PID 제어이다.. 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을 지정하고, 해당 c.. 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: 게임 표시줄 열기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.
윈도우즈10 파일 탐색창 왼쪽 메뉴의 바로가기 수정하기 # Registry를 건드릴 수밖에 없다.1) Window+R 키를 누르고 regedit을 입력해서 실행한다. 2) 레지스트리 편집기에서 HKEY_CLASSES_ROOT\CLSID을 선택한 다음, 해당 디렉토리에 대해 ctrl+F 를 눌러 찾기를 실행 후 System.IsPinnedToNameSpace 을 검색한다. 3) System.IsPinnedToNameSpace 값이 1이면 탐색창 메뉴가 보이고, 0이면 보이지 않는다. 4) 어떤 key 값이 어떤 프로그램을 가리키는지 알기 어려우므로, 일일이 1로 되어있는 키를 0으로 바꿔보면서 탐색창에서 없어지는지 확인한다. 5) 레지스트리를 편집할 수 없다는 에러가 뜨면 무시하고 다른 F3을 눌러 다음찾기를 통해 다른 값을 바꿔본다. - NCS drive 키.. 2018. 3. 11.