2019의 게시물 표시

윈도우에 tensorflow gpu를 돌리기

이미지
안녕하십니까. 이번 포스팅에서는 윈도우상에서 텐서플로우를 GPU를 통하여 돌리는 것을 포스팅 하려고 합니다. 목적 window 컴퓨터 위에서 딥러닝 프레임워크인 tensorflow를 그래픽 카드를 사용하여 돌릴 수 있도록 환경을 구축 한다. 필요 요건 그래픽 카드를 구매하시고 장착을 잘 하신다음 아래와 같이 장치 관리자의 디스플레이 어뎁터에서 그래픽 카드가 인식 되도록 합니다. 아래에서 UHD 630은 내장 그래픽 카드이고 GT 730은 외장 그래픽 카드 입니다. 그래픽 카드 장착 완료 cuda 설치 cuda는 GPU를 사용하는데에 도움을 주는 라이브러리 입니다. cuda를 설치하지 않고 tensorflow를 실행시키려고 할시에는 아래와 같은 에러를 리턴 합니다. (tensorflow_gpu) C:\Users\mgim>python Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 14:00:49) [MSC v.1915 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow 2019-12-23 14:55:23.325444: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found 그렇기에 cuda를 설치 합니다. https://developer.nvidia.com/cuda-downloads 위의 링크에서 cuda를 다운 받습니다. 최신 버전을

누적 합 Cumulative Sum cumsum 구현에 대하여

이미지
안녕하십니까. 이번 포스팅에서는 누적합 cumsum에 대하여 다루려고 합니다. Keras 오픈소스 Contributing 케라스의 오픈소스를 공부하는 도중에 contribute를 하고 싶어서 issue들을 보고 있었습니다. 그중 어렵지 않아 보이는 이슈인  https://github.com/keras-team/keras/issues/12163  를 발견 하였었고 해당 이슈를 처리해보기 위해서 코드를 보고 있었으나 안타깝게도 이미 누군가 처리하신 흔적이 있어서 해당 코드를 알아보았습니다. 요구 사항 요구 사항은 다음과 같이 keras에 CNTK backend에서 사용할 수 있는 cumsum과 cumprod를 구현해 달라는 것입니다. cumsum과 cumprod가 cntk 위에 돌아가게 구현해주세요. keras는 시중 딥러닝 오픈소스를 사용하기 쉽게 감싼 오픈소스 이며 그 대상중 하나가 마이크로 소프트의 CNTK 입니다. 다른 backend 오픈소스인 텐서플로우, Theano 보다는 CNTK를 사용하는 사람이 적기 때문에 해당 이슈가 아직도 open 된것으로 보입니다. cumsum cumsum은 누적합(Cumulative Sum) 입니다. 이는 행렬 같은 구조체에 대하여 각 엘리먼트에 대하여 iteration 하면서 누적 합을 한 새로운 행렬을 리턴하는 간단한 수식 입니다. 예를 들어서 (1 2) (3 4) 와 같은 행렬이 있으면 결과값은 (1 2) (1+3 2+4) 가 되는 간단한 수식 입니다. 만약 내가 구현한다면? 만약 제가 구현한다면 for문을 통해서 각 row element를 iteration 하면서 더할것 같습니다.  대부분의 사람이 그렇게 할듯 합니다. 실제 구현된 방식은? 아래 코드가 다른분이 keras에 구현하신 코드 입니다. def cumsum (x , axis= 0 ): dim = x.shape[axis] U = C.cons

python pytest unrecognized arguments: -n error

pycharm을 통해서 pytest를 하려고 하니 아래의 에러가 발생하였다. 해당 에러는 pycharm의 고유 에러는 아닌듯 하다. (keras) C:\repo\keras\mgim>pytest ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...] pytest: error: unrecognized arguments: -n inifile: C:\repo\keras\pytest.ini rootdir: C:\repo\keras (keras) C:\repo\keras\mgim> 알아보니 아래의 링크를 발견 하였다. https://github.com/nipy/nipype/issues/2677#issuecomment-412087164 해결 법으로는  pytest-xdist 라는 파이썬 패키지를 설치하니 에러가 발생하지 않는다. pip install pytest-xdist

Ubuntu에 Hadoop Single Cluster Pseudo Distributed Operation 설치 하기

이미지
안녕하십니까. 이번 포스팅에서는 Ubuntu에 Hadoop Single Cluster를 Pseudo Distributed Operation으로 설치를 하고 word count 예제를 다루려고 합니다. hadoop 참고 링크 :  https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation Hadoop 다운로드 Apache Download Mirrors 에서 Hadoop을 다운로드 받습니다.. 저는 편의상 home 밑에 hadoop 폴더로 이름을 변경하였습니다. SSH 설치 확인 아래와 같이 SSH를 설치 합니다. 아마 localhost를 접속하기 위함인듯 합니다. $ sudo apt-get install ssh $ sudo apt-get install pdsh Java 설치 하기 자바를 설치 하고  etc/hadoop/hadoop-env.sh 아래에 설치한 java 위치를 아래처럼 한줄 추가해 줍니다. $JAVA_HOME/bin/java 위치에 java가 있어야 동작 합니다. # set to the root of your Java installation export JAVA_HOME=/usr/java/latest 이상이 없다면 아래 커맨드에서 에러가 발생하지 않습니다. $ bin/hadoop 설정 파일 etc/hadoop/core-site.xml라는 위치에 아래 파일을 생성 합니다. <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>

git fork된 repository에서 remote merge 하기

이미지
안녕하십니까. 오픈소스를 자주 참여 하다 보니 원본 repository에서 fork를 하고 제가 코드를 수정하는 경우가 종종 있습니다. 이때 원본 repository에서 수정이 있을 경우 저의 fork된 repository에서 해당 코드를 pull 한후에 merge를 해야하는데요. 이 과정을 포스팅 하려고 합니다. Fork 생성 하기 아래와 같이 원본 repository에서 fork 버튼을 클릭을 하면 개인 깃허브 계정에 해당 repository의 복사본이 생깁니다. Clone 그 이후에 git clone <나의 로컬 URL>을 통해서 해당 repository를 컴퓨터에 코드를 받습니다. Origin 확인 git remote -v 명령어를 통해서 연결된 원격 저장소를 확인 합니다. 이전에 추가하시지 않았다고 하면 origin <fork한 개인 repository URL> 만 있으실겁니다. 원본 repository 추가 git remote add <원하는 이름> <원본 repository URL>로 원본 repository를 연결 합니다. 예를 들어서 저는 git remote add remote  https://github.com/tensorflow/tensorflow 이런식으로 텐서플로우 공식 repository를 연결하였습니다. fetch 연결 한 후에 git fetch <원하는 이름>을 통하여 remote의 데이터를 가져옵니다. Pull & Push 가져온 데이터를 git pull remote master 명령어를 통하여 나의 저장소에 merge 합니다. 그 후 git push origin master를 하면 드디어 원본 repository와 나의 repository의 형상이 맞게 됩니다.

Wide & Deep Learning for Recommender Systems 리뷰

이미지
링크 :  https://arxiv.org/pdf/1606.07792v1.pdf ABSTRACT 1. INTRODUCTION contributions • The Wide & Deep learning framework for jointly training feed-forward neural networks with embeddings and linear model with feature transformations for generic recommender systems with sparse inputs. • 구글 플레이 위에 직접 구현이 되어 있음. • TensorFlow 공식 홈페이지에 오픈소스화 . While the idea is simple, we show that the Wide & Deep framework significantly improves the app acquisition rate on the mobile app store, while satisfying the training and serving speed requirements. 2. RECOMMENDER SYSTEM OVERVIEW 아래의 Figure 2가 전체적인 시스템 overview 이다.  유저가 방문하면 해당 컨텍스트를 통하여 쿼리를 생성 한다.  유저 데이터를 통하여 어떤 앱이 가장 효율이 좋을지에 따라 리스팅을 한다.  milion의 앱이 있기 때문에 10 밀리 세컨드에 리턴하는 것은 좀 어려운 문제라고 한다. 따라서 사람이 정한 룰 + 머신 러닝을 통하여 처음에 100개로 줄인다. 그후 랭킹을 매긴다. The scores are usually P(y|x), the probability of a user action label y given the features x, including user features (e.g., country, language, demographics), contextual featur

Factorization machines 리뷰

이미지
논문 링크 :  https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf Abstract 이 논문에서는 SVM과 Factorization Model의 장점을 결합한 새로운 모델을 다룬다. 두개의 모델 모두 feature vector를 다루지만 FM은 factorized 파라미터를 사용하고 이를 통해서 sparse한 데이터를 SVM 보다 더욱 잘 다룬다고 한다. FM은 SVM에 비하여 선형 시간을 가진다고 한다. 일반적인 MF 모델은 general한 인풋에는 적절하지 않아서 이를 해결하려고 한다. SVM은 prediction을 하려면 데이터가 어느정도 저장이 되어야 하지만 MF는 factorization 함. I. INTRODUCTION SVM이 sparse하고 convex(비선형)한 kernel space에서는 효과적이지 않음을 다루려고 한다. FM 모델은 일반적인 데이터에는 적용하기 어렵다. 이 둘의 장점을 결합한 Factorization Machine을 소개한다. 또한 이는 선형적으로 계산이 가능하며 선형적인 파라미터가 필요 하다. In total, the advantages of our proposed FM are: FMs allow parameter estimation under very sparse data where SVMs fail.  FMs have linear complexity, can be optimized in the primal and do not rely on support vectors like SVMs. We show that FMs scale to large datasets like Netflix with 100 millions of training instances.  FMs are a general predictor that can work with any real valued feature vector. In contrast to this

if kakao 2일차 AI 후기 공유

이미지
세부 내용들은 추후 if.kakao.com에 올라오면 확인 가능하십니다. 2일차 2019 08 30 코엑스 키노트 오전 10시 카카오 AI 2018 외부 확장 2019 kakao i엔진을 모바일에서도 사용 현대 자동차와 연계 블루투스 연계 이전에는 AI 인터페이스 → 확장을 했다면 이제는 사용자의 needs interactive ai 단순한 질문 쿼리를 연장해서 상호 작용 하도록 MRC : 사람처럼 하기 위함. minimi : small talk. 심심해 → 노래를 듣는건 어떨까요? 이런거 아직 딥러닝으로는 잘 안되고 있어서 rule based로 하고 있음. simpson : 질문 답변과의 유사도를 통해서 고객 센터 일을 진행. rule based → conversational ai → contextual ai DFLO : 기존 인터페이스 AI의 한계를 처리하고 고도화 그라운드 X 블록체인 디지털 농노제 cambridge analytica가 페이스북 데이터를 긁어와서 선거에 사용. 개인정보 보호법 EU 데이터 노동. 데이터를 통해서 우리도 경제적으로 분배 받아야 한다. 이렇게 정보를 개인화 해야하며 블록 체인 기반의 게임에서는 진행 되고 있다. 디지털 사진의 재산화 코닥에서 진행중. 디지털 아이템은 복제가 가능 → 블록 체인을 통해서 해결. 첫번째 결과가 klaytn 대규모 서비스. 기업에 최적화. 빠른 속도와 확장성 4000tps 하이브리드 블록 체인 금융 사기 잡는 카카오뱅크의 데이터 사이언스 FDS 카카오의 데이터 사이언티스트 금융 평가 등 데이터 사이언스의 역할 금융 사기 스미싱 보이스피싱 파밍 대포 통장 등등. 이런 사기를 예방하기 위해서 FDS를 구축 FDS 전자 금융 FDS와 체크카드 FDS 기계 학습 활용 시계열 기반 사기 탐지. 사기 데이터가 1프로 미만이기 때문에 비율을 맞춰야함 아래와 같이 임베딩을 하고 ANN을 통하여