![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b5Kc57/btqvfkOF3Ov/Aotfw5EsdMW5wk4hb3ROn1/img.gif)
본 게시물에서 사용된 대부분의 이미지는 아래 링크로부터 첨부되었으며 해당 자료를 통해 많은 영감을 얻었습니다. http://iscslp2018.org/images/T4_Towards%20end-to-end%20speech%20recognition.pdf 하루가 멀다하고 기계가 인간을 뛰어넘는 분야가 늘어나고 있습니다. 구글 딥마인드를 필두로 여러 분야가 정복되고 있는데 2017년 알파고는 절대 정복 할 수 없다고 평가되던 바둑 분야에서 이세돌 9단을 상대로 승리를 거뒀으며 알파스타의 등장으로까지 이어졌습니다. 알파스타는 세계 1위에 프로게이머를 상대로 거둔 승리는 아니었지만 게임 분야에서 충분한 가능성을 보여줬습니다. 아무튼, 여러분야에서 두각을 나타내고 있는 기계학습은 이미지 인식의 경우에는 2015년..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ciT6Qq/btqu9nshZ0S/OvMKMZgQuJChNcoYqDplJ1/img.png)
4월에 Next'19 Cloud Hero를 놓쳐서 아쉬워하던차에 5월에 진행된 I/O에도 Cloud Hero 게임이 오픈되었다. 뒤늦게 알아차려서 7일은 넘어갔지만 모든 날짜에 진행되는 게임 내용은 같다. 쉽게 이야기하자면 점수가 각 날자별로 다르게 측정된다고 생각하면 된다. 게임은 전세계에 있는 모든 사람들과 경쟁하는 시스템이고 퀵랩(Qwiklabs)에서 진행된다. 다만 일반적인 링크가 아닌 Cloud Hero 게임을 위한 링크가 제공되고 그 위에서 미션을 진행하는 시스템이 되겠다. 그 미션은 아래와 같다. 총 세 가지 미션이 주어지는데 모두 Google Cloud Platform 위에서 서비스를 만들어가는 것인데 기본적인 것은 GCS(Google Cloud Storage)를 생성하고, 생성한 stor..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c3NLSP/btqve5rtE1z/jlYxw033xN6QknkhXee5F0/img.png)
GPU를 사용하는 머신러닝 환경을 구축하기 위해서는 virtualenv, anaconda 등 파이썬의 가상환경을 통한 다양한 방법이 제시되는데 이와 같은 환경에는 문제가 하나 있다. 바로 다양한 버전의 CUDA를 사용하는데 상당히 제한적이라는 것인데, 이게 왜 문제가 되는가 하면 여려가지 전제를 이야기 할 필요가 있다. 보통 다양한 버전의 CUDA를 필요로 하는 경우는 여러개의 프로젝트를 병행으로 개발하는 상태이고 한개의 워크스테이션(혹은 클라우드 인스턴스)에 여러명의 엔지니어가 접속해서 작업을 진행하게 된다. 이때 A라는 엔지니어가 잘못 건드린 글로벌한 CUDA 설정이 B 개발자에게까지 영향을 줄 수 있는 상황이 충분히 존재한다. 이건 혼자 사용하는 머신이라도 마찬가지다. 참담하게도 이런경우에는 시스템..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bXWmLo/btquYpcvLFN/2D2Eh3jHJ62m7X4NgoKWkK/img.png)
한글 자소분리를 처리하기 위해서는 Unicode에 대한 이해가 필요합니다. 우선 위키피디아에 정의되어 있는 한글 음절에 대해 살펴보도록 하시죠. https://ko.wikipedia.org/wiki/한글_음절 우선 여기서 잘 확인하고 넘어가야 하는 부분이 초성, 중성, 종성을 이루는 문자들과 그 개수입니다. 초성 : ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ (19개) 중성 : ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ (21개) 종성 : ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ (28개) 종성의 경우에는 종성이 없는 경우를 위해서 빈 문자도 포함해서 28로 취급합니다. 예를들면 "가", "우", "소" 등이 종성이 없는 경우가 있겠죠. 또한 위 링크에서 확인한 한글문자코드의 범위는 0xAC00(가) ~ ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bf9huj/btquSh7m6S2/6o9TTb79zLg9Jp7qWihF61/img.png)
작년 Next'18 Extended에서 발표를 한게 엊그제 같은데 벌써 1년이 지났다. 매년 구글은 샌프란시스코에서 Google Cloud에 새로운 기술을 공식적으로 발표하고 announce하는데 그것이 세계 각지에서 Extended라는 이름의 행사로 다시 태어난다. 대개는 GDG, 혹은 사용자 그룹 커뮤니티에 의해서인데 이번 Next'19 직후 세계 Extended 현황을 보면 다음과 같다. 작년에는 발표자로 참석했었는데 올해는 GDG Cloud Korea의 organizer로 행사 준비와 발표를 동시에 진행하게 되었고, 그로인해서 여러가지 것들을 신경써야 했고 더 뜻 깊게 보낼 수 있었던 것 같다. 준비하는 과정에서 스트레스가 없었다면 그건 거짓말이지만 결과적으로 순조롭게 행사를 잘 마무리 할 수 있..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cyxkgA/btquJHLLg5C/I0rsZAaIKLr5Lc8GUkYxk0/img.png)
본 포스팅에서는 링크드인에 코세라 자격증을 추가하는 방법을 알아보도록 합니다. 우선 코세라에 본인 계정으로 로그인 후에 [나의 강좌]로 이동합니다. 그리고 아래 이미지처럼 "성취도"로 표시되어 있는 카테고리를 선택하도록 합니다. 해당 페이지에서는 그동안 본인이 이수했던 강좌 목록을 확인할 수 있습니다. 많이 보이시나요? 아니면 더 분발해야겠다는 생각이 드시나요? 일단 여기서는 제가 수료한 Launching into Machine Learning 강좌를 예로 들겠습니다. 이제 링크드인에 게시할 강좌에 "LinkedIn에 추가"를 선택합니다. 그럼 아래와 같이 링크드인에 자격정보 등록을 위해 필요한 입력 값들이 모두 출력됩니다. 이제 이 값들을 링크드인에 하나씩 복사해서 붙여넣기 해주시면 됩니다. 위에서 복..
>>> import tensorflow as tf ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' ImportError: numpy.core.multiarray failed to import The above exception was the direct cause of the following exception: Traceback (most recent call last): File "", line 968, in _find_and_load SystemError: returned a result with an error set ImportError: numpy.core._multiarray_umath failed to import I..
docker container 내부에서 pytorch 로 기계학습을 진행하는 도중에 아래와 같은 에러메시지가 발생되는 경우가 있습니다. RuntimeError: DataLoader worker (pid 13881) is killed by signal: Bus error. 위 에러는 도커로 컨테이너를 생성하게 되면 호스트와 컨테이너는 공유하는 메모리 공간이 생기게 되는데 이 공간에 여유가 없어서 발생되는 에러입니다. 리눅스의 경우에는 컨테이너 내부에서 아래와 같이 df 명령어로 확인이 가능합니다. (base) root@2a48ab5fd651:~/ml# df -h Filesystem Size Used Avail Use% Mounted on overlay 427G 59G 347G 15% / tmpfs 64M ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/xXaa2/btqt3Iwt7KL/oCZ3IVktkAbDKJ9CKADyi0/img.png)
Colab의 사용권한을 신청하고 accept 되어야만 사용할 수 있었던 시절이 있었는데 이제는 너무나 보편화 되었고 K80 GPU는 물론 TPU까지 마음껏 굴려볼 수 있는 상태가 되었습니다. 참고글: Google Colaboratory를 아시나요? 하지만 막상 찾아보면 TPU 사용예제가 많이 안보이는데 TensorFlow 공식 예제가 너무 잘되어 있기 때문일까요? 아무튼 한글 자료는 턱없이 부족한데 도움이 될 누군가를 위해 메모로 남겨두도록 합니다. 이 글은 tf 1.13 버전을 기반으로 하고 있기 때문에 keras가 공식적으로 tensorflow 안에 모듈로 자리 잡고 있는 상태입니다. 다음은 TensorFlow 공식 홈페이지에 있는 MNIST 예제코드입니다. import tensorflow as tf..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/u6ji6/btqt0bfwsGE/gLYDpctioFIEUuKgQYCBzK/img.png)
오래전에 C/C++ 로 만든 모듈을 python 에서 가져다 사용할 수 있는 것을 보고 깜짝 놀랐던 기억이 있는데 이제는 웹에서도 그렇게 할 수 있다는 사실에 한번 더 깜짝 놀랐습니다. 사실 web assembly 기술은 새로울 것도 없지만 마침 사용할 일이 있어서 파내다 보니 이제서야 신세계를 맛보는중이겠습니다. 자 지금부터 web assembly의 첫 걸음을 떼고 hello world를 출력해봅시다. Emscripten 설치 C/C++ 로 작성한 모듈을 웹 어셈블리로 컴파일 하기 위해서는 여러가지 툴이 논의 될 수 있겠지만 여기서는 Emscripten을 소개하고 사용해보기로 합니다. 우선 Emscripten SDK (emsdk) 를 GitHub 에서 다운로드 받도록 합니다. git clone http..
이미 잘 구현되어 있는 소스코드와 데이터를 사용한 머신러닝의 경우에는 모델 내에 shuffle 자체가 구축되어 있는 반면에 데이터 수집과 정제, 모델 구축까지 밑바닥에서부터 쌓아 올리다보면 여러가지 난관에 봉착하게 된다. python 을 친숙하게 다루는 사람이라면 데이터를 다루는데 어려움이 없겠으나 수학적 지식이나 모델링쪽만 전문으로 했던 사람에게는 shuffle 자체도 쉬운게 아닐 것이다. random.shuffle 예제를 살펴보면 대부분 1차원 array 를 섞는것 뿐이라 우리의 (x, y) 데이터 쌍에서는 일반적인 방식으로는 사용할 수 없다. 여기서는 이런 상황에서 데이터셋을 shuffle 하는 방법 하나를 제시한다.예를들어 손글씨 인식을 할 때 사용하는 대표적인 MNIST 의 데이터를 우리가 직접..
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explic..
우리가 작업하는 다양한 소스코드는 때로는 서로 다른 버전의 cuda 를 사용하기도 합니다. 그리고 물리적으로 한 대의 머신을 공유해서 사용한다고 했을 때 여러 버전의 cuda 를 이용하는 것은 매우 당연한 일이겠습니다. 이번 글에서는 어떻게 그것이 가능한지에 대한 이야기를 짧게 공유합니다. 1. cuda 설치 ( https://developer.nvidia.com/cuda-downloads )링크에 접속해서 cuda 를 다운로드 받습니다. OS 부터 하나씩 선택해나가면 최종적으로 아래와 같은 화면을 볼 수 있습ㄴ다. 이 글이 작성된 시점 기준으로는 cuda 10.1 이 최신버전이라 위에 링크에 접속하면 다음 버전으로 가이드가 됩니다.다운로드 받은 cuda 는 위에 설명에 있는 것처럼 터미널에서 실행해주면..
아래와 같이 tensorflow-gpu 를 설치하였고, pip install tensorflow-gpu==1.9코드상에서 import 를 하려고하니 에러가 발생했습니다. (tensorflow_p36) $ python Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) [GCC 7.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf Traceback (most recent call last): File "/home/caley/anaconda3/envs/tensorflow_p36/lib/python3..
지난주에 다녀온 AI with Google 행사의 한박자 늦은 후기를 적어본다. 아니, 후기라고 하기에는 거창하고 참석하지 못한 사람들을 위해 행사장 사진 공유를 통해 행사를 들여다보자. 행사는 3호선 동대입구역에 있는 신라호텔에서 진행되었는데 행사장에는 촬영 나온 미디어 기자들로 가득차 있었다. 아마도 오전 세션은 초대받은 사람들과 기자들만 출입이 가능한 느낌이었고 오후부터는 현장 등록까지 가능하게 여러 세션이 준비 된 느낌. 말하자면 오전은 미디어 홍보를 위한 자리라는 생각이 들었다. 본인은 운좋게 초대장을 구해서 오전부터 참석할 수 있었다.얼추 행사 시작인 10시에 맞춰서 도착했는데 이미 인산인해를 이루고 있었다. 데모 부스와 다과, 커피까지 다양한 먹거리가 준비되어 있었다. 일단 따뜻한 아메리카노..
http://kaldi-asr.org/ 이 글을 읽고 있다는 것은 sample 스크립트 학습을 끝냈다는 이야기인데 일단 축하드립니다. 이번 글에서는 학습시킨 데이터를 기반(은 이미 공개되어 있는 모델셋)으로 demo 를 해볼텐데 kaldi 에 있는 voxforge 에서는 두 가지 방식으로 데모를 지원합니다. 여기에는 1) microphone 의 입력에 따라 실시간으로 음성을 text 로 변환하는 live 모드와 2) 음성파일을 text로 변환하는 simulated 모드가 있습니다.일단 egs/voxforge 로 이동해서 보면 다음과 같이 세 개의 디렉터리가 존재합니다. $ tree -L 1 . ├── gst_demo ├── online_demo └── s5 3 directories, 0 files s5 ..
# TL;DR git remote add upstream ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git git fetch upstream git merge upstream/master # 들어가며GitHub 에서 좋은 프로젝트를 발견했고 유용하게 사용을 하다보면 Contribution 하고 싶은 상황이 생깁니다. 개발자라면 보통 그래요. 이제 Contribution 을 마음먹었으니 프로젝트를 fork 하고 열심히 수정을 합니다. 그리고 Pull Request 를 날리겠죠. 며칠 후에 기분 좋은 메일이 왔습니다. Merged 되었다는 내용이죠 :-)여기까지는 좋습니다. 그리고 시간이 흘러 같은 프로젝트에 또 Contribution 하고 싶은게 생기게 됩니다. 여기서 문제가 생기게 되..
https://conda.io/en/master/ python 을 가상환경으로 사용할 수 있도록 지원하는 프로젝트중 하나인 conda 를 실무에서 빠르게 사용 할 수 있도록 살펴보도록 합니다. ( 또 다른 가상환경 프로젝트인 virtualenv 는 이쪽을 참고하세요 ) 우선 우리가 사용하는 OS 에 맞게 다음 링크에서 아나콘다를 다운로드 받도록 합니다 https://www.anaconda.com/download/ 설치가 끝나면 터미널에서 conda 명령어를 통해서 모든 조작이 가능한데 필수적인 옵션을 하나씩 살펴보도록 합시다. ( 실행 화면 등이 포함되어 있기 때문에 PC 버전에서 최적화 되어 있습니다 ) # 버전 확인 : 사용하고 있는 conda 패키지의 버전을 확인한다.$ conda --version..
http://kaldi-asr.org/ 이번 글에는 Kaldi 에서 제공하는 샘플 스크립트를 통해 기본적인 테스트를 진행하는 과정을 살펴봅니다. 테스트를 진행하기 전에 잠깐 Kaldi 의 디렉터리 구조를 살펴볼 필요가 있는데요, 소스코드를 내려받고 살펴보면 아래와 같은 구조를 확인할 수 있습니다. $ tree -L 1 . ├── COPYING ├── INSTALL ├── README.md ├── egs/ ├── misc/ ├── scripts/ ├── src/ ├── tools/ └── windows/ 6 directories, 3 files 6개의 디렉터리와 3개의 파일로 구성되어 있군요. 파일은 설치 과정이 메모되어 있는 INSTALL 과 프로젝트 소개가 있는 README.md, 그리고 카피라이트인 ..
http://kaldi-asr.org/Kaldi Speech Recognition Toolkit 의 동작에 대한 기본 테스트를 MacOS 에서 진행한 경험을 기록 합니다. 보통의 오픈소스를 살펴보면 READMD.md 와 같은 파일을 두고 그 안에서 설치 가이드를 제공하고 있는데 Kaldi 는 README 에서 그런 언급을 하지 않고 대신 INSTALL ( plain-text ) 파일을 제공합니다. 그럼 이제 INSTALL 파일을 확인하고 설치를 진행해보도록 합니다.우선 GitHub 을 통해 공개되어 있는 Kaldi 소스코드를 내려 받습니다. git clone https://github.com/kaldi-asr/kaldi.git 소스 디렉터리 홈에 있는 INSTALL 파일을 열어보면 다음과 같은 내용이 쓰..
- Total
- Today
- Yesterday