본문 바로가기

전체보기241

SSH로 서버 설정 및 Putty 접속 Server 세팅sudo apt-get updatesudo 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-ssh-on-ubuntu-18-04/https://askubuntu.com/question.. 2020. 6. 21.
Raspberry Pi Realtime Audio Processing RtAudio완전히 C++기반으로 구현된 오디오 라이브러리. 설치방법 on Raspberry Pisudo apt-get install autoconf libtool automakesudo apt install libasound2 libasound2-devgit clone https://github.com/thestk/rtaudio.git./autogen.shmake 설치확인(* 라즈베리파이의 jack에 스피커를 연결하고, USB mic를 연결한다.)cd rtaudio/tests./audioprobe --> input device id와 output device id확인./testall./duplex 1 44100 [input device id] [output device id] Extreme Latenc.. 2020. 6. 14.
Synergy로 윈도우와 Linux를 하나의 키보드, 마우스로 다루기 Synergy하나의 키보드와 마우스를 이용해 동일한 네트워크에 연결한 여러가지 device를 컨트롤 할 수 있게 해주는 프로그램이다.현재 유료로 전환되었지만, 구버전을 설치할 경우 아직도 무료로 사용할 수 있다고 한다.유료인 경우 현재 29달러를 내면 basic을 구매할 수 있고, 개인은 한 번 구매시 평생 이용가능하다. Windows(Server)Download 페이지에서 Windows 64-bit 설치 후 synergy프로그램을 실행한다.(* 만약 오직 window OS간의 마우스/키보드를 공유하고 싶다면, 무료 프로그램인 Microsoft Garage Mouse without Borders를 사용해도 좋다.) Configure Server를 클릭하고 우측위의 모니터 아이콘을 드래그해서 적절한 스크린.. 2020. 6. 14.
Information Bottleneck Information Bottleneck Method 한마디로, input X와 latent T의 정보량은 최소가 되면서 동시에 latent T와 target Y의 정보량은 최대가 되어야한다. https://en.wikipedia.org/wiki/Information_bottleneck_method 2020. 6. 12.
Pseudo Label 원 모델이 틀린 데이터에 대해서, pseudo-labeling할 때 class를 맞춰야만 유의미한 성능이 증가한다. 모델이 underfitting 된 상황에서만, 이러한 pseudo-labeling이 동작하는게아닐까? 데이터가 부족해서 블러리한 디시전바운더리가 있는 지점의 sharpness를 증가시켜서, 모델의 underfitting을 해결한다.음어렵다... 근데 이게 블러리한 영역에서 양쪽 방향으로 동일한 개수의 x가 생성되면...? 다만, 여기에 thresholding을 해서 좀 더 확실한 클래스에 대해서만 학습을한다면? 근데이건 애초에 블러리하지 않다는건데..게다가 overconfident문제가 있음.. 2020. 6. 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. 6. 8.
Windows 10 절전모드 문제 해결 자동 절전 모드가 제대로 동작하지 않을 때관리자모드로 명령프롬프트를 실행하고, powercfg -requests 을 입력해보면 어떤 device로인해 절전모드가 안들어가지는지 알 수 있다.그러나 이것으로 모든 문제를 다 확인할 수는 없다. powercfg관리자권한으로 cmd를 실행한다음, powercfg /energy 위 명령어를 입력하면 컴퓨터에서 cpu를 많이 사용하는 process와 절전모드 관련 문제를 보고해준다. 해결 방법* 기본 절전모드 세팅https://www.technipages.com/windows-10-wont-sleep#:~:text=Select%20%E2%80%9CChange%20advanced%20power%20settings,%E2%80%9CPrevent%20idling%20to.. 2020. 6. 8.
Windows10 심볼릭 링크 생성 심볼릭 링크가 필요한 상황Dropbox 등의 동기화 폴더 위치가 컴퓨터마다 경로가 똑같지 않은 경우, 여러가지 환경설정 등이 깨질 수 있다. 이럴 때 각 컴퓨터에 동일한 위치로 심볼릭 링크를 만들어두면 드랍박스 폴더를 옮기지 않고도 쉽게 문제를 해결할 수 있다. 방법1. 명령프롬프트 실행2. mklink /d "심볼릭링크의 경로" "원본의 경로"ex) mklink /d "D:\Dropbox" "C:\Users\User\Dropbox" https://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EC%8B%AC%EB%B3%BC%EB%A6%AD_%EB%A7%81%ED%81%AC_%EC%83%9D%EC%84%B1 2020. 5. 28.
랜섬웨어 대비책 랜섬웨어랜섬웨어는 사용자의 중요한 파일들을 암호화시켜서 사용할 수 없게 만든다. 현재 시점에서는 랜섬웨어에 걸려버리면 백업해둔 데이터를 복구하는것 이외에는 방법이 없다. 대비책1. 클라우드 스토리지 백업드랍박스나 네이버 클라우드, 구글 클라우드 같은 곳에 내 귀중한 자료를 무조건 백업해두자. 사실상 이것이 현재로썬 유일무이한 해결책이다.여러 클라우드 스토리지를 사용해본 결과, 드랍박스가 압도적인 사용 편의성을 제공한다. 2. Appcheck앱체크는 행위기반 랜섬웨어 방지프로그램이라고 볼 수 있다. 대규모 파일 삭제/변경이 일어나면 일단 행동을 중지시켜서 매우 안전한 대신 오작동을 가끔한다.기존의 백신과 충돌이 거의 일어나지 않으므로, 보조 백신으로 활용할 수 있다.https://www.checkmal.c.. 2020. 5. 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를 사용해야한다. https://www.reddit.com/r/learnpython/comments/9cpkql/fastest_possible_implementation_for_recording/ht.. 2020. 5. 2.
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 MobilePytorch에서도 TF Lite와 동일한 목적의 프로젝트로 Pytorch Mobile을 만들고 있다.https://pytorch.org/mobile/home/ TensorRTTensorRT는 cuda의 wrapper로써 Nvidia GPU에서만 동작하는 방식이다. TensorFlow에서도 TensorRT를 backend로 지.. 2020. 4. 28.
Probability Calibration Probability Calibrationscikit-learn 사이트에 정말 친절하고 상세하게 잘 설명되어있다.https://scikit-learn.org/stable/modules/calibration.html#calibration 아주 간단히 insight만 적자면 이러하다. 애초에 LogisticRegression처럼 모델 자체가 sigmoid 함수를 이용한 확률을 return하고, 이 확률을 NLL로 학습시키면 자연히 probability분포가 confidence와 동치가 된다. 그런데 SVM같은 모델은 output과 loss가 확률 및 NLL과 관련이 없어서, probability가 confidence를 갖지 않고, 항상 bias를 갖는 prediction 분포가 생긴다. 그래서 이러한 문제를.. 2020. 4. 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(x): return x in test def decompose(x): in_char = x if x < ord('가') or x > ord.. 2020. 4. 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를 클릭하면 안전하게 데이터를 삭제할 수 있다. 물론 db.getCollection('ccai_cdr').remove({"record_date":"200406"}) 로 한방에 삭제할 수도 있지만, .. 2020. 4. 9.
Linux 운영체제별 사용 팁 리눅스 버전 확인uname -o cat /proc/version CentOSapt-get 대신 yum을 사용한다. Ubuntuyum대신 apt-get을 사용한다. 기본 패키지 설치 방법 - apt-get 설치wget http://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_2.0.1_amd64.deb - dpkg 설치yum install dpkg 2020. 4. 6.
Git LFS (Large File Storage) 사용하기 Git의 용량제한과 LFS기본적으로 git은 여러개의 작은 소스코드 파일들을 위한 버전 컨트롤 시스템(VCS)이다. 따라서 Github의 경우 50Mb부터 Warning이 표시되고, 100Mb부터는 push시 Error가 발생한다. 그럼에도 불구하고 경우에 따라서 반드시 대용량 파일을 git repo에 포함시켜야하는 상황이 존재할 수 있다(예를 들면 학습된 모델파라미터를 올려야할 때). 이러한 경우에 사용할 수 있는 해결책인 Git LFS(Large File Storage)을 소개한다. git lfs가 정상적으로 적용된 경우, 아주 큰 파일에 대해서도 git push와 pull이 가능해진다. 기본적인 사용방법은 다음 블로그에서 가져왔다.https://leimao.github.io/blog/Git-Larg.. 2020. 3. 30.
CSV파일 인코딩(Encoding) CSV파일 인코딩(Encoding) 문제 해결하기 1. 현재 가지고 있는 csv파일에서 encoding이 무엇인지 알아내기 import chardet import pandas as pd filename = "Data_kr_v2.0.0_no_label_all_train3.csv" with open(filename, 'rb') as f: result = chardet.detect(f.readline()) # or read() if the file is small. print(result['encoding']) 이와 같은 방식으로 해당 라인의 encoding이 무엇인지 알아낼 수 있다. 2. Excel에서 csv 저장할 때 encoding변경하기 그런데 실제로 이렇게 옵션을 주고 해봐도, 제대로 encodin.. 2020. 3. 23.
On demand와 On the fly On demand: As soon as possible유저의 요청을 하면, 그 즉시 시작해서 최대한 빨리 return 해주는 시스템 On the fly: While in progress유저가 요청을 하면, 그 과정에서 멈추지 않고 무언가를 처리해서 return 해주는 시스템 https://ell.stackexchange.com/questions/140402/how-to-describe-the-difference-between-on-demand-and-on-the-fly ML에서의 예시On demand 전처리 : 유저가 학습 버튼을 클릭하면, 그 즉시 전체 데이터에 대한 전처리가 이뤄짐On the fly 전처리 : 유저가 학습 버튼을 클릭하면, 전체 데이터에 대한 전처리가 끝날 때까지 기다리지 않고 즉시(.. 2020. 3. 19.
Forward Looking Problem, Omniscient(Oracle) Forward Looking Problem기본적으로 time-series데이터를 이용한 future forecasting task에서는 절대적으로 미래의 정보가 예측 모델(함수)의 input으로 들어가는 것이 엄격히 금지된다.특히 금융 모델의 경우, 미래 주가를 validation셋으로 사용하고, 여기서 구한 단순 1차 통계(mean값)를 사용해 과거의 데이터인 training셋을 normalize하기 위해서 사용하는 것 만으로도 엄청난 문제가 된다. 그 정도로 future 정보는 엄격히 사용이 금지되어야 하는 것이 원칙적으로는 맞다. Time-series Cross-validation그래서 이러한 종류의 time-series forecasting하는 task에서 cross-validation을 할 때에.. 2020. 3. 16.
ML Python 프로젝트의 test code만들기(feat. Pytest) Test Code의 필요성ML뿐만 아니라, 거대한 규모의 프로그램을 개발할 때에는 반드시 테스트 코드가 필요하다. 물론 협업을 하고, 대규모 프로젝트를 오랜 기간 서비스하기 위해서도 테스트 코드는 반드시 필요하다. 머신러닝 코드는 특히나 numerical한 연산을 다루기 때문에 버그를 잡기가 쉽지 않고, 엄청나게 많은 configuration이 존재하고, 학습의 재현성이 필요하기 때문에 코드의 검증이 오래 걸린다. 또한 협업을 하다보면 누군가가 추가하면서 바꾼 기능 때문에 내가 예전에 쓰던 코드가 동작하지 않는 일이 너무나 빈번하다. 이러한 일을 막고 버그를 줄이는 방법은 테스트 코드를 작성하는 것이다. Test for ML project머신러닝 프로젝트에 대해서도 공동 개발을 할 경우에는 pytest를.. 2020. 3. 16.