-
Git LFS (Large File Storage) 사용하기
Git의 용량제한과 LFS 기본적으로 git은 여러개의 작은 소스코드 파일들을 위한 버전 컨트롤 시스템(VCS)이다. 따라서 Github의 경우 50Mb부터 Warning이 표시되고, 100Mb부터는 push시 Error가 발생한다. 그럼에도 불구하고 경우에 따라서 반드시 대용량 파일을 git repo에 포함시켜야하는 상황이 존재할 수 있다(예를 들면 학습된 모델파라미터를 올려야할 때). 이러한 경우에 사용할 수 있는 해결책인 Git LFS(Large File St..
2020.03.30
-
Graph Neural Networks
0. Convolutional Neural Networks의 Graph 해석 Karate club graph, colors denote communities obtained via modularity-based clustering (Brandes et al., 2008) 위와 같은 그래프 형태의 데이터를 학습하기 위한 가장 좋은 네트워크 아키텍쳐는 무엇일까? 바로 Graph Convolutional Networks이다. GCN은 널리 알려진 Convolutional Neural Networks에 Adjacency Matrix를 도입하여 보다 데이터의 structure를 보다 일반화..
2020.01.30
-
Conda로 Python 버전 별 설치, 관리, 삭제하기
Ubuntu에 다른버전의 Python 설치하기 필자처럼 다른 버전의 python을 설치하려고 src부터 빌드하는 것은 절대로 해서는 안될 짓이다. 컴파일 과정이 굉장히 복잡하고 또 엄청나게 오래걸리며, 버전 변경 또한 어렵기 때문이다. 그런데 pyenv를 쓰거나, apt-get도 버전 관리가 안되기 때문에 별로 좋지 않은 방법이다. 결국 가장 좋은 방법은 python을 conda로 설치해서 관리하는 것이다. 왜냐하면 conda는 완전한 동작을 보장..
2020.02.27
-
Python Multiprocessing 가이드
Multiprocessing 가이드 공식 레퍼런스 문서를 참고하여 작성하였다. 다음이 요소들이 multiprocessing의 가장 기본이고, 우선 이 네가지만 잘 알면된다. Process Pool Queue Pipe Process 단일 프로세스를 생성하는 경우, Process()를 사용한다. from multiprocessing import Process, Queue queue = Queue() p = Process(target = my_function) #, args=(queue, 1)) p.start() # p.join() # this blocks until the process ter..
2020.02.20
-
Python 파일을 exe파일로 컴파일하기
Windows anaconda 환경에서 실행 방법 (아나콘다 cmd 상에서) pip install auto-py-to-exe auto-py-to-exe.exe 를 윈도우에서 실행시킨다.(혹은 anaconda prompt에서 실행해도됨) 아래와 같이 해당 python파일의 경로를 입력하고 conver를 누른다. https://pypi.org/project/auto-py-to-exe/
2020.02.04
-
라즈베리파이 OS 포멧/초기화/업데이트
라즈베리파이 OS 초기화하기 라즈베리파이에서 특별한 초기화 기능을 제공하지는 않는다. 검색해보면 shift키를 누른 상태로 재부팅을 하라고 하는데, 암만해도 안된다. 결국 OS초기화를 위한 방법은 간단하다. 라즈베리파이에서 Micro SD 카드를 뽑고, 컴퓨터에 연결한다음 SD카드를 포멧시키고 다시 운영체제 설치부터 시작하는 것이다. https://newsight.tistory.com/287 https://kocoafab.cc/tutorial/view/299 Python 3.7...
2020.06.21
-
Python 코드 안에서 git과 pip 사용하기
Python 코드 안에서 pip install하기 import sys import subprocess def pip_install(package): subprocess.check_call(["sudo", sys.executable, "-m", "pip", "install", package]) def pip_install_requirements(requirements_dir): subprocess.check_call(["sudo", sys.executable, "-m", "pip", "install", "-r", requirements_dir.rstrip(".txt")+".txt"]) https://stackoverflow.com/questions/12332975/installing-pyth..
2020.02.19
-
Windows 10에서 PDF에 펜으로 필기하기
PDF에 디지타이저를 이용해서 필기하기 Inkodo 무료이다. 펜압을 인지하는 펜을 사용하려거든, marker로 변경해주어야한다. 사용해보니 매우 불편하다.... Drawboard PDF 무료버전으로도 충분히 기본적인 필기는 가능 프로버젼은 한달에 7 달러로 유료인 대신 가장 기능이 우수함 드로우보드 상세팁: https://www.clien.net/service/board/lecture/13297353 참고자료 https://gigglehd.com/gg/soft/4403534
2020.06.08
-
Ubuntu 처음 시작하기, 여러가지 설정
Apt와 apt-get의 차이 apt는 좀더 편한 엔드유저용, apt-get은 로우레벨용 https://askubuntu.com/questions/829864/is-apt-get-deprecated Apt remove/auto-remove/purge의 차이 -> man apt를 입력하면 나온다고한다. remove는 반면 해당 패키지가 차지하는 최소한의 항목만 삭제하기 때문에 dependency가 그대로 남아있게 된다. purge는 remove 행동과 더불어 해당 패키지의 configuration file까지 삭제한다. (여전히 depende..
2020.06.24
-
Bayesian Inference
Machine Learning 에서 궁극적으로 추구하는 목표는 P(X'|X) 를 알아내는 것이다. (X' : 예측하고자 하는 데이터 , X : 기존에 관측된 사건의 데이터) 즉, 기존에 관측된 사건의 데이터 X를 이용해서 앞으로 일어날사건 X'에 대해 예측하는 것이다. 만일, X 없이 그냥 P(X')를 계산한다는 것은 기존에 일어난 사건 데이터 전혀 고려하지 않고, 오직 수학적 모델만으로 확류를 계산하겠다는 의미이다. 이는 machine learning이..
2020.01.29
-
Python Audio Processing
Realtime Fast Audio Library: sounddevice 소리를 녹음하거나 재생하려면 sounddevice라는 라이브러리를 사용하는 것이 가장 빠르다. Sounddevice는 PortAudio라는 library의 python wrapper에 해당하며 Audio stream을 numpy로도 다룰 수 있게 해준다. 단, Windows 10의 WSL 1을 사용하는 경우 사운드에 대한 device접근이 불가능해서 동작이 안된다. 이러한 경우 WSL 2(?)가 해당 기능을 제공하거나, 혹은 anaconda를 사용..
2020.05.02
-
Librosa, Numba 에러 해결
Librosa install하기 pip install librosa 혹은 conda install -c conda-forge librosa RuntimeError: cannot cache function '__jaccard': no locator available for file '/opt/conda/lib/python3.6/site-packages/librosa/util/matching.py' 원인 0.7이 넘어가는 librosa에서 numba cache를 사용하는데, numba cache dir에 대한 권한이 없어서 생기는 문제이다, https://github.com/numba/numba/issues/4032 https://github.c..
2020.01.23
-
Real Time C Programming
자료링크 https://www.youtube.com/watch?v=N3XkQqhE6sY
2021.01.28
-
소리에 대한 사람의 인지적인 특성
Mel scale mel scale의 핵심은 사람이 멜로디를 인지하는 방식대로, hz에 대해 log scale을 취하겠다는 것이다. 데시벨 소리의 크기인 amplitude를 log scale로 처리해주는 것. 이는 사람이 자극의 크기(소리의 크기)를 log scale로 인지하는 [베버-페히너의 법칙](https://ko.wikipedia.org/wiki/%EB%B2%A0%EB%B2%84-%ED%8E%98%ED%9E%88%EB%84%88%EC%9D%98_%EB%B2%95%EC%B9%99)에서 기초한다. https://m.blog.naver.com/PostVie..
2021.01.07
-
Decibel과 SPL(Sound Pressure Level)
Decibel과 Sound Pressure Level(SPL) 우선 벨은 단순히 P2과 P1의 비율에 log_10을 취한 것으로 두 값의 상대적인 비율을 나타내는 값이다. 보통 분자인 P2는 output signal을 의미하고, P1은 input signal을 의미한다. 그다음 데시벨은 벨에서 1/10을 한 값이다. 보통의 경우 그냥 Bel은 너무나 큰 값이라서 쓰기가 매우 불편하다. 3 Bel 만해도 1000배를 의미하기 때문에 실제로 사용하려면 소수점이 발생하기 쉽다. 그래서..
2020.12.22
-
Pytorch를 TensorRT로 변환해서 사용하기
TensorRT 설치과정 TensoRT(trt)는 GPU inference 상황에서 최적의 optimization을 제공한다. 경우에 따라서는 거의 10배 이상 inference속도가 향상된다. 이 TensorRT를 사용하려면 조금 번거로운 설치과정을 해야한다. 그러나 설치만 잘 하면 변환 과정자체는 매우 쉽다. 1. CUDA 설치하기 cuda 버전 10.2 ~ 11.1 까지 지원된다. 여기서는 CUDA 11.0 버전을 사용한다. 2. PyCUDA 설치하기 pip install pycuda==2020.1 만약, CU..
2020.11.25
-
Python Profiling
Line Profiler https://lothiraldan.github.io/2018-02-18-python-line-profiler-without-magic/ python script를 한줄 단위로 profiling해줌 아래의 code snippets으로 쉽게 decorator로 구현 가능 https://gist.github.com/kylegibson/6583590 cProfile import cProfile, pstats, io from pstats import SortKey pr = cProfile.Profile() pr.enable() self.train_run() pr.disable() s = io.StringIO() sortby = SortKey.CUMUL..
2020.10.21
-
딥러닝을 위한 장비
한성컴퓨터 TFG257XG http://prod.danawa.com/info/?pcode=11258712 1.9키로인데 RTX2070이 달려있어서 딥러닝 학습도 가능하고, 발열제어가 뛰어나서 학습중에도 75도가 넘지 않는선으로 유지된다.(노트북 뒷판을 들어주는 거치대 사용시) 현재시점(2020년 9월)에서 유일하게 RTX2070 데스크탑버전이 쌩으로 달려있는 노트북이다. V100 한대당 10000달러 정도 하는 것으로 보인다. RTX3080 성능은 V100과 거의 비슷한데, 가격..
2020.09.21
-
AWS Jupyter setting
You need to DNS server registration with 8.8.8.8 꼭 필요하진 않지만, 기본적으로 pip install등을 할 때 DNS를 못찾는 에러가 자주 발생하므로 구글 DNS서버를 등록해주자. sudo vim /etc/resolv.conf 를 하고, 아래 line을 추가해준다. nameserver 8.8.8.8 public jupyter notebook server ssl key를 만들고, 그것을 입력해서 jupyter 서버를 띄워야한다. https://docs.aws.amazon.com/dlami/latest/devguide/setup-jupyt..
2020.09.06
-
Python Callback
Callback Method Callback Method에 변수 전달 방법 callback method에는 오직 global variable만이 전달될 수 있다. 만약 이것이 문제가 될 것 같다면 global variable만 가지고 있는 global class를 만들어서 이를 전달하는 방법이 좋다. https://stackoverflow.com/questions/51959978/how-to-pass-a-value-to-callback-for-anonymization-without-global-variables Callback 함수에 전역 변수를 전달하는 가장 효과적인 방법..
2020.08.13
-
Python Subprocess
Subprocess VS Multi-process Subprocess는 python으로 다른 프로그램을 실행하기 위한 기능이다. 즉 단순히 system command를 실행하기 위함이라고 이해할 수 있다. 따라서 subprocess로 실행된 프로그램과는 오직 stdin/stdout만으로 통신 할 수 밖에 없다. 반대로 multiprocess는 python 내에서 task를 쪼개 여러 cpu에서 실행하며, 좀 더 communication이 용이하다. Subprocess로 System Command 실행하기 python에서 comm..
2020.08.13
-
Smooth Approximation
LogSumExp LogSumExp는 max()의 smooth approximation이다. 그 이유는 exp를 취하게 되면, 숫자가 큰 값의 영향력이 지수적으로 커지게 되는데, 이것들을 덧셈을 하게되면 숫자가 작은 값들은 영향력이 매우 줄어들게된다. 그다음 log를 취해서 다시 exp의 역과정을 하게 되면, 사실상 영향력이 큰 숫자만 의미를 갖게 되므로 max함수와 유사한 기능을 하게 된다. https://en.wikipedia.org/wiki/LogSumExp Softmax softmax는 ar..
2020.08.06
-
Python Function Result Caching by Joblib.Memory
Joblib.Memory Memory를 이용하면 어떤 함수의 return 되는 output을 지정된 디렉토리에 저장해둔다. 그리고 해당 함수를 다시 호출할 경우, 미리 계산해둔 output을 가져와서 로딩을 하게 된다. 그리고 해당 cache는 사용자가 임의로 삭제하지 않으면 계속 유지되며, 다른 프로세스에서도 접근 가능하다고 한다.(확인 필요) 즉 이는 함수의 연산 결과를 하드디스크에 캐싱해두는 방식으로 볼 수 있다. 사용법은 매우 간단하여..
2020.07.24
-
레이더와 라이다
- 레이더(Radar): 전자기파를 방출하고 돌아오는 시그널을 통해 주변의 물체를 파악 - 라이다(Lidar): 레이저를 방출하고 돌아오는 시그널을 통해 주변의 물체를 파악 레이저는 직진하도록 가지런히 모은 전자기파를 의미하며, 따라서 라이다는 레이더에 비해 더 고해상도이다. http://blog.naver.com/e_mobis/221979032096
2020.07.21
-
Ubuntu Process의 Priority와 Niceness 설정하기
PR(Priority) : 값의 범위 = [-100, 39] PR값은 실제로 process가 OS에 의해 동작하게 될 priority를 의미한다. 이 값은 사용자가 바로 지정 할수는 없다. PR값의 범위는 [-100, -2]까지는 realtime process를 의미하고, [0, 39]는 상대적으로 우선순위가 낮은 normal process를 의미한다. PR이 -100에 가까울수록 우선순위가 높아지고, 39에 가까울수록 우선순위가 낮아진다. NI(Nicevalue or Niceness) : 값의 범위 = [-20, 1..
2020.07.18
-
Ubuntu 처음 시작하기, 여러가지 설정
Apt와 apt-get의 차이 apt는 좀더 편한 엔드유저용, apt-get은 로우레벨용 https://askubuntu.com/questions/829864/is-apt-get-deprecated Apt remove/auto-remove/purge의 차이 -> man apt를 입력하면 나온다고한다. remove는 반면 해당 패키지가 차지하는 최소한의 항목만 삭제하기 때문에 dependency가 그대로 남아있게 된다. purge는 remove 행동과 더불어 해당 패키지의 configuration file까지 삭제한다. (여전히 depende..
2020.06.24
-
라즈베리파이 모델 4에 pytorch 설치하기
라즈베리파이에 pytorch 설치하기 Dependency install하기 sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev whl파일 다운받기. 아래에서 적절한 버전을 고른다. (whl파일은 설치시 이름도 매우 중요하다. 반드시 운영체제 이름이랑 동일해야함.) * Nvidia에서 jetson nano용으로..
2020.06.22
-
라즈베리파이 OS 포멧/초기화/업데이트
라즈베리파이 OS 초기화하기 라즈베리파이에서 특별한 초기화 기능을 제공하지는 않는다. 검색해보면 shift키를 누른 상태로 재부팅을 하라고 하는데, 암만해도 안된다. 결국 OS초기화를 위한 방법은 간단하다. 라즈베리파이에서 Micro SD 카드를 뽑고, 컴퓨터에 연결한다음 SD카드를 포멧시키고 다시 운영체제 설치부터 시작하는 것이다. https://newsight.tistory.com/287 https://kocoafab.cc/tutorial/view/299 Python 3.7...
2020.06.21
-
SSH로 접속하기 및 Putty 사용법
Server 세팅 sudo apt-get update sudo apt install openssh-server sudo systemctl enable ssh : 시스템 시작시 ssh 서버 자동 실행하기 sudo systemctl status ssh : ssh 서버 상태확인 sudo systemctl start ssh : ssh 서버 열기 sudo systemctl stop ssh : ssh 서버 닫기 sudo vim /etc/ssh/sshd_config : ssh 서버 설정 sudo service ssh --full-restart : 옛날 방식 서버 열기 https://linuxize.com/post/how-to-enable-ss..
2020.06.21
-
Raspberry Pi Realtime Audio Processing
RtAudio 완전히 C++기반으로 구현된 오디오 라이브러리. 설치방법 on Raspberry Pi sudo apt-get install autoconf libtool automake sudo apt install libasound2 libasound2-dev git clone https://github.com/thestk/rtaudio.git ./autogen.sh make 설치확인 (* 라즈베리파이의 jack에 스피커를 연결하고, USB mic를 연결한다.) cd rtaudio/tests ./audioprobe --> input device id와 output device id확인 ./testall..
2020.06.14
-
Synergy로 윈도우와 Linux를 하나의 키보드, 마우스로 다루기
Synergy 하나의 키보드와 마우스를 이용해 동일한 네트워크에 연결한 여러가지 device를 컨트롤 할 수 있게 해주는 프로그램이다. 현재 유료로 전환되었지만, 구버전을 설치할 경우 아직도 무료로 사용할 수 있다고 한다. 유료인 경우 현재 29달러를 내면 basic을 구매할 수 있고, 개인은 한 번 구매시 평생 이용가능하다. Windows(Server) Download 페이지에서 Windows 64-bit 설치 후 synergy프로그램을 실행한다. (* 만약..
2020.06.14
-
Information Bottleneck
Information Bottleneck Method 한마디로, input X와 latent T의 정보량은 최소가 되면서 동시에 latent T와 target Y의 정보량은 최대가 되어야한다. https://en.wikipedia.org/wiki/Information_bottleneck_method
2020.06.12
-
Pseudo Label
원 모델이 틀린 데이터에 대해서, pseudo-labeling할 때 class를 맞춰야만 유의미한 성능이 증가한다. 모델이 underfitting 된 상황에서만, 이러한 pseudo-labeling이 동작하는게아닐까? 데이터가 부족해서 블러리한 디시전바운더리가 있는 지점의 sharpness를 증가시켜서, 모델의 underfitting을 해결한다. 음어렵다... 근데 이게 블러리한 영역에서 양쪽 방향으로 동일한 개수의 x가 생성되면...? 다만, 여기에 thresholding..
2020.06.12
-
Windows 10에서 PDF에 펜으로 필기하기
PDF에 디지타이저를 이용해서 필기하기 Inkodo 무료이다. 펜압을 인지하는 펜을 사용하려거든, marker로 변경해주어야한다. 사용해보니 매우 불편하다.... Drawboard PDF 무료버전으로도 충분히 기본적인 필기는 가능 프로버젼은 한달에 7 달러로 유료인 대신 가장 기능이 우수함 드로우보드 상세팁: https://www.clien.net/service/board/lecture/13297353 참고자료 https://gigglehd.com/gg/soft/4403534
2020.06.08
-
Windows 10 절전모드 문제 해결
자동 절전 모드가 제대로 동작하지 않을 때 관리자모드로 명령프롬프트를 실행하고, powercfg -requests 을 입력해보면 어떤 device로인해 절전모드가 안들어가지는지 알 수 있다. 그러나 이것으로 모든 문제를 다 확인할 수는 없다. powercfg 관리자권한으로 cmd를 실행한다음, powercfg /energy 위 명령어를 입력하면 컴퓨터에서 cpu를 많이 사용하는 process와 절전모드 관련 문제를 보고해준다. 해결 방법 * 기본 절전모드..
2020.06.08
-
Windows10 심볼릭 링크 생성
심볼릭 링크가 필요한 상황 Dropbox 등의 동기화 폴더 위치가 컴퓨터마다 경로가 똑같지 않은 경우, 여러가지 환경설정 등이 깨질 수 있다. 이럴 때 각 컴퓨터에 동일한 위치로 심볼릭 링크를 만들어두면 드랍박스 폴더를 옮기지 않고도 쉽게 문제를 해결할 수 있다. 방법 1. 명령프롬프트 실행 2. mklink /d "심볼릭링크의 경로" "원본의 경로" ex) mklink /d "D:\Dropbox" "C:\Users\User\Dropbox" https://zetawiki.com/w..
2020.05.28
-
랜섬웨어 대비책
랜섬웨어 랜섬웨어는 사용자의 중요한 파일들을 암호화시켜서 사용할 수 없게 만든다. 현재 시점에서는 랜섬웨어에 걸려버리면 백업해둔 데이터를 복구하는것 이외에는 방법이 없다. 대비책 1. 클라우드 스토리지 백업 드랍박스나 네이버 클라우드, 구글 클라우드 같은 곳에 내 귀중한 자료를 무조건 백업해두자. 사실상 이것이 현재로썬 유일무이한 해결책이다. 여러 클라우드 스토리지를 사용해본 결과, 드랍박스가 압도적인..
2020.05.21
-
Python Audio Processing
Realtime Fast Audio Library: sounddevice 소리를 녹음하거나 재생하려면 sounddevice라는 라이브러리를 사용하는 것이 가장 빠르다. Sounddevice는 PortAudio라는 library의 python wrapper에 해당하며 Audio stream을 numpy로도 다룰 수 있게 해준다. 단, Windows 10의 WSL 1을 사용하는 경우 사운드에 대한 device접근이 불가능해서 동작이 안된다. 이러한 경우 WSL 2(?)가 해당 기능을 제공하거나, 혹은 anaconda를 사용..
2020.05.02
-
Deep Learning Model Fast Serving
Fast Model Inference TensorFlow Lite 빠른 inference를 위한 tensorflow버전. 학습에 필요한 operation이 전부 삭제되어 있다. - TFLite is for mobile devices, works on CPU and a few mobile GPUs, Plus TPUs. Including the Edge TPUs. Pytorch Mobile Pytorch에서도 TF Lite와 동일한 목적의 프로젝트로 Pytorch Mobile을 만들고 있다. https://pytorch.org/mobile/home/ TensorRT TensorRT는 cuda의 wrapper로써 Nvidia..
2020.04.28
-
Probability Calibration
Probability Calibration scikit-learn 사이트에 정말 친절하고 상세하게 잘 설명되어있다. https://scikit-learn.org/stable/modules/calibration.html#calibration 아주 간단히 insight만 적자면 이러하다. 애초에 LogisticRegression처럼 모델 자체가 sigmoid 함수를 이용한 확률을 return하고, 이 확률을 NLL로 학습시키면 자연히 probability분포가 confidence와 동치가 된다. 그런데 SVM같은 모델은 output과 loss가 확률..
2020.04.17
-
한글을 Sub-character level로 파싱하기(python으로 유니코드 파싱)
# -*- coding: utf-8 -*- cho = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ" # len = 19 jung = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ" # len = 21 jong = "ㄱ/ㄲ/ㄱㅅ/ㄴ/ㄴㅈ/ㄴㅎ/ㄷ/ㄹ/ㄹㄱ/ㄹㅁ/ㄹㅂ/ㄹㅅ/ㄹㅌ/ㄹㅍ/ㄹㅎ/ㅁ/ㅂ/ㅂㅅ/ㅅ/ㅆ/ㅇ/ㅈ/ㅊ/ㅋ/ㅌ/ㅍ/ㅎ".split('/') # len = 27 test = cho + jung + ''.join(jong) hangul_length = len(cho) + len(jung) + len(jong) # 67 def is_valid_decomposition_atom..
2020.04.16
-
MongoDB에서 특정 오브젝트 삭제하기
주피터나 python 스크립트를 이용해서 삭제할 수도 있지만, 가능하면 GUI툴을 이용해 보다 안전하게 처리해보자. 먼저 Robomongo 3T라는 gui기반 몽고DB tool을 portable로 설치한다. https://robomongo.org/download 그 다음 query에 아래를 입력하여 원하는 조건의 항목을 나열한다. db.getCollection('ccai_cdr').find({"record_date":"200406"}) 그다음 나열된 항목들을 전체 선택한 뒤 우클릭해서 delete document를 클릭..
2020.04.09