Theano 설치

Theano 설치
이곳의 자료는 Theano Install guide에서 일부 발췌한 내용임을 밝힙니다.

Theano 설치 관련 자료

python으로 Theano 설치 기본
pip install Thaeno
Python 업데이트
pip install –upgrade thaeno
위 명령은 관련 라이브러리 또한 같이 업데이트

pip install –upgrade –no-deps theano
위 명령은 Theano 라이브러리만 업데이트
scipy, numpy 라이브러리 버젼에서 충돌이 생길수도 있음.

scipy, numpy 라이브러리에서 충돌이 발생이 하는것은
기존에 설치된 Theano라이브러리 캐시와 이미 설치된 라이브러리가 충돌하는 경우가 있음
이를 위해 Theano 라이브러리를 다음과 같은 명령으로 정리
원문

If you installed NumPy/SciPy with yum/apt-get, updating NumPy/SciPy with pip/easy_install is not always a good idea. This can make Theano crash due to problems with BLAS (but see below). The versions of NumPy/SciPy in the distribution are sometimes linked against faster versions of BLAS. Installing NumPy/SciPy with yum/apt-get/pip/easy_install won’t install the development package needed to recompile it with the fast version. This mean that if you don’t install the development packages manually, when you recompile the updated NumPy/SciPy, it will compile with the slower version. This results in a slower Theano as well. To fix the crash, you can clear the Theano cache like this: theano-cache clear
개발자 버젼 Theano 설치 하기
stable 버젼(안정 버젼)이 아닌 개발자 버젼을 설치 하고자 할때 다음과 같이 설치

pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git
또는 git으로 코드를 다운 받아서 python을 통해 직접 설치 가능.

git clone git://github.com/Theano/Theano.git
cd Theano python setup.py develo

주의.

theano setup.py 소스코드는 python 3.x 버젼에 맞지 않음.
기존의 python2 python3 변환기를 통해 수동으로 변환 시켜야 함.

설치 완료 테스트
import theano theano.test()
위의 코드를 통해 실행 테스트

주)

CUDA를 이용할 경우 사용하는 그래픽카드가 표시 되고
중간에 nvcc stdout으로 시작하는 메세지가 같이 표시 되면 정상
중간에 cuda library installed but device not found 메세지가 나오면
cuda에서 제공하는 nvcc 파일이 있는 패스를 python에서 제대로 인식 못해서
나오는 에러일 경우가 많음 이런 경우, 패스를 확인
GPU를 사용하기
다음과 같은 환경 변수 설정이 필요.

CUDA_ROOT
Theano 환경 설정파일에서 cuda 관련 설정 정의 필요.
Theano 환경 설정
사용자 홈 디렉토리
linux : /home/username/.theanorc
windows : C:\C:\Users\username.theanorc.txt

해당 파일에 다음과 같은 추가
[global]
device = gpu
floatX = float32
[cuda]
root = CUDA_ROOT 패스(컴퓨터마다 다름)

위의 코드는 저자의 본인 환경(윈도우) 리눅스 일 경우 다른 경로임.

윈도우에서 Theano 설치 하기

#윈도우에서 Theano 설치 하기

##1. python 설치 하기
Theano를 위해서는 pyCuda와 같은 라이브러리를 컴파일 해야 하기 때문에 일반적인 Python이 아니라 WinPython이라는 패키지로 설치. 이 패키지의 장점은 컴파일 하기 위한 설정이 준비 되어 있다는것.(웹에서 그렇게 말하니 뭐 ^^) 다운로드 위치 : http://winpython.sourceforge.net/

##2. CUDA 설치
NVIDIA에서 CUDA 툴킷을 다운로드 받아서 설치. 가장 최근 버젼 : 7.0 버젼 설치시 드라이브가 제대로 설정 안되어 있어서 뭐 어쩌고 저쩌고 메세지 나옴 가볍게 무시하고 설치. PATH에서 CUDA 경로 추가.

##3. Visual Studio 설치
python 패키지 설치를 위해서는 visual Studio나 MinGW 같은 컴파일러가 필요하나… Visual Studion 2012를 설치. MS 홈페이지 Visual Studio 2012 Express 버젼을 설치.

##4. Visual Studio 일부 수정.
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin 디렉토리 밑에 x86_amd64 디렉토리를 복사 amd64로 이름 바꿈. vcvarsx86_amd64.bat 파일명을 vcvarsx86_amd64.bat로 수정.

##5. MinGW 설치
컴파일을 위해 설치 아래 url에서 다운로드 http://sourceforge.net/projects/mingw-w64/ 첨부한 MSYS-20111123.zip파일을 다운로드 받고 설치된 경로에 압축 해재 msys 디렉토리 안에 msys.bat 최상단에 call “c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat” 라인 추가. @echo Off 라인 바로 아래에 다음 라인 추가. set HOME=%USERPROFILE%

##6. Theano 설치
pip install Theano로 설치

##7. Theano 환경 변수 설정
c:\User\사용자명\.theanorc.txt 파일 설정 [gcc] 탭에 cxxflags = -shared -I[MinGW 디렉토리]\include -L[파이썬 디렉토리]\libs -lpython34 -DMS_WIN64 외와 같이 설정

##8. Theano 설정
ipython 에서 import theano theano.test()

python -c “import theano;theano.test()”

위와 같은 코드가 정상 동작 되면 오케이.

참고 사이트 http://rosinality.ncity.net/doku.php?id=python:installing_theano

이 사이트의 5번 항목은 winPython을 설치하면 굳이 할 필요 없음.

Centos에서 Caffe 설치하기

http://git.zjulearning.org/soariez/caffe/raw/05314ffbf499481214596cccb1458cb109fd0c4f/docs/installation.md

Caffe는 Theano랑은 다른 Deep learning 라이브러리 입니다.

이 라이브러리를 설치하고 난후 pyCaffe를 설치하면 python을 통해 사용할 수 있습니다.

설치하기 위해서는 다음과 같은 라이브러리가 필요로 합니다.

Caffe has several dependencies.
CUDA is required for GPU mode.
library version 7.0 and the latest driver version are recommended, but 6.* is fine too
5.5, and 5.0 are compatible but considered legacy
BLAS via ATLAS, MKL, or OpenBLAS.
Boost >= 1.55
OpenCV >= 2.4 including 3.0
protobuf, glog, gflags
IO libraries hdf5, leveldb, snappy, lmdb
Pycaffe and Matcaffe interfaces have their own

pyCaffe를 설치하기 위해서는 python 2.7이상 버젼이 필요로 합니다.

시스템 라이브러리는 다음과 같이 설치 합니다.

$yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-deve

$git clone https://github.com/BVLC/caffe
#caffe를 다운 로드 받습니다.
$cd python
$for req in $(cat requirements.txt); do pip install $req; done
#python 디렉토리에가서 필요한 라이브러리를 설치합니다.

centos에서 protoc와 glog, gflags는 다음과 같이 설치 합니다.

protoc command not found 발생하면 다음과 같이 합니다.
wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.bz2
tar xfj protobuf-2.4.1.tar.bz2
pushd protobuf-2.4.1
./configure
make
sudo make install
# glog
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make && make install

# gflags
#주의 사항. cmake 툴이 안 깔려 있으면 깔아야 함.
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip master.zip
cd gflags-master
mkdir build && cd build
cmake .. make && make install

#open-cv 설치
http://opencv.org/ 다운로드
zip 압축 해제.
mkdir build && cd build
cmake .. make && make instal

#leveldb 설치
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/leveldb-1.7.0-2.el6.x86_64.rpm
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/leveldb-devel-1.7.0-2.el6.x86_64.rpm
rpm –install leveldb-1.7.0-2.el6.x86_64.rpm
rpm –install leveldb-devel-1.7.0-2.el6.x86_64.rpm

#lmdb 설치
https://gitorious.org/mdb/mdb.git 에서 git clone
make install
위와 같은 라이브러리가 설치 된후

build 디렉토리로 가서 cmake .. 명령으로 make을 작성하는데..

atlas 경로를 제대로 찾지 못합니다.

find . -name FindAtlas.cmake로 해당 파일을 찾으신 후

set(Atlas_LIB_SEARCH_PATHS
/usr/lib/atlas
/usr/lib/atlas-base

저렇게 두줄로 되어 있는 중간에
/usr/lib64/atlas 를 추가 합니다.

그리고

find_library(Atlas_LAPACK_LIBRARY NAMES alapack_r alapack lapack_atlas PATHS ${Atlas_LIB_SEARCH_PATHS})

저 라인에 lapack을 추가 합니다.

find_library(Atlas_LAPACK_LIBRARY NAMES alapack_r alapack lapack_atlas lapack PATHS ${Atlas_LIB_SEARCH_PATHS})

바꾸면 위와 같이 됩니다.

그리고 c++ boost 1.4.7 이상의 라이브러리를 필요로 하니 저 이하버젼인 분은 boost.org에서 최신 릴리즈 버젼을 받아서 설치하세요

그렇게 하고 난후 cmake ..을 실행시키면 정상적으로 make파일이 생성 됩니다.

build 디렉토리 밑에서 make && make install을 실행 시키면 정상적으로 설치가 됩니다.

make install 이 끝나면

install/python 디렉토리 밑에 pyCaffe가 있는데

경로 잡기가 애매해서

/usr/local/lib/python2.7/site-package 로 복사하고

install/lib 및에 있는 라이브러리는 /usr/local/lib64/로 복사해 놓으면

ipython에서 바로 뛰울 수 있습니다.

예제 코드가 있어서 좀 봤는데 전혀 실행이 안되네요… T_T

아참 open-cv가 설치에 제법 시간이 걸립니다. 참고 하세요 ~

집단지성 스터디 1회

## 집단지성

동영상[https://www.youtube.com/watch?v=NjKdQznkw1g]

집단지성 관련 소설 마이클크라이튼 먹이[http://www.dgupress.com/news/articleView.html?idxno=1385]

추적자

황소 무게에 대한 이야기[http://neblog.com/1101]

##사전적 의미

집단적 지적 능력을 통해 개체적으로는 미미하게 보이는 박테리아, 동물, 사람의 능력이 충의를 모으는 과정을 통한 결정 능력의 다양한 형태로 한 개체의 능력 범위를 넘어선 힘을 발휘할 수도 있다고 주장한다.

##활용 분야

###추천 시스템

왓차 https://watcha.net/ 영화 추천 시스템

추천 시스템[http://www.ddaily.co.kr/news/article.html?no=102913]

넷플릭스[https://www.netflix.com/global]

###장바구니 추천 시스템

아마존 도서 구입시 추천 서적

recommandation

###생물공학

염기분석과 선별기술의 발전으로 다양한 종류의 대량 데이터 세트가 생성.DNA 순여, 단백질 구조체, 복합물 선별, RNA 발현 데이터 세트 등

https://fold.it/portal/

Foldit은 사람이 컴퓨터를 사용하여 풀기 어려운문제-생물학에서는 단백질접힙 [ protein folding , 蛋白質~ ]이라 불림-를 푸는 온라인 게임입니다.
http://ko.foldit.wikia.com/wiki/Foldit_%EC%9C%84%ED%82%A4

아이와이어

https://www.youtube.com/watch?v=tKXBSbpvdHQ
http://blog.eyewire.org/ko/
https://eyewire.org/signup
게임을 통해 뇌구조를 파악하는 집단 지성 게임

###주식시장

http://www.dbpia.co.kr/Journal/ArticleDetail/2742859
인터넷 주식 게시판을 통한 집단지성과 주식시장과의 상관 관계 연구
인터넷을 통해 기업에 대한 평가 정보를 수집하고 그 결과와 주식의 상승 하강에 대한 관련 연구

##그외 등등등~ (너무 많아서 생략)

#어떻게 만들까? ( 개인화 추천을 예제로)

### 1. 대상을 선정한다

###2. 데이타를 수집한다.

###3. 데이타를 정리 및 가공

###4. 데이터를 군집화

###5. 사용자가 속하는 군집에서 추천할 항목을 점수화 시켜서 추천

##데이타 수집

####수작업으로 수집을 하거나, 자동화된 툴을 통해 수집

자동화된 툴 예
[http://greennuri.info:9190/admin/stat/scrapingStat.jsp],
crawler4j[https://code.google.com/p/crawler4j/]
scrapy[http://scrapy.org/]

##가공, 군집화, 추천 -> 기계학습

#기계학습을 쓰는 이유?

###1. 데이터가 너무 많다. -> 수작업으로 연산하기엔 오래 걸린다

largedata

###2. 예측이 가능해야 한다

bigdataNML

#기계학습


machine-learning

추천 시스템 만들기.[http://www.slideshare.net/kwnam4u/02-41434707]

추천시스템 Slide [http://www.slideshare.net/ssuser2fe594/1-ppt-33990067]

추천 시스템 예제 [http://www.greennuri.info:8888/notebooks/build_machine_learning_system_with_python/ch08/ch08-2.ipynb]

 

Build Machine Learning System With Python 스터디 1일차

#기계학습#
기계학습이란 기계에게 스스로 작업을 수행할 수 있도록 가르치는 일.
기계학습의 목표 :
기계에게 몇가지 예를 주고 작업을 수행 하도록 가르치는 것.

#파이선#
대화형 고차원 프로그램 언어
C언어로된 라이브러리를 통해 플랫폼 독립적, 빠름

기계학습과 파이선
기계에게 손쉽게 작업을 스스로 작업을 수행 할 수 있도록 가르키기에 적합.

#이책에서 알려주는 내용#
과 알려주지 않는 내용

기계학습 소프트웨어를 작성하는 과정
1. 데이타 읽기와 정리
2. 입력 데이터의 탐구와 이해
3. 기계학습 알고리즘을 위해 어떻게 최적으로 데이터를 나타낸지에 대한 분석
4. 적절한 모델과 학습 알고리즘 선택
5. 수행 정확도 측정

프로그래밍 과정은 4단계에 불과하다.

프로그래밍을 위한 가이드
Numpy, SciPy를 설치, scikit-learn을 이용해 첫번째 기계학습을 훈련.
나머지 장에서는 다양한 애플리케이션 시나리오를 사용해 파이선으로 된 기계학습의 다양한 측면에 집중,
이전에 소개한 장다섯단계를 통해 세밀하게 살펴본다.

추천 블로그

http://blog.kaggle.com

기계학습 경연대회를 주최하는 회사 블로그

#첫번째#
python 설치
windows : 별도의 패키지 설치
linux : 기본적으로 설치
mac : 기본적으로 설치

python 라이브러리 설치 :
pip를 이용 설치
linux에서 pip가 없을 경우 easy_install을 통해 설치
mac에서 pip가 없을 경우 easy_install이나 brew를 통해 설치

명령어 : >pip install <library>

설치 해야할 라이브러리 :
SciPy,
NumPy
scikit-learn
Matplotlib

위의 각각 라이브러리 설치가 버거우면
통합 패키지 설치 가능
Enought Python Distribution,
Python(x,y)
와 같은 통합 패키지로 설치 가능.

추가 설치 라이브러리
ipython : interactive Python
pip install ipython

ipython notebook
web을 통해 interactive Python 개발환경을 제공
pip install ipython”notebook”
이 문서로 ipython notebook으로 작성

기본 설치 해야할 라이브러리
Numpy, SciPy, MatplotLib, ipython ipython notebook

pip install NumPy
pip install SciPy
pip install Matplotlib
pip install ipython”notebook”
ps. notebook을 서버에서 설치하고 외부에서 접속하기
facebook 문서 참고(정리한 문서 있음)
#NumPy#
NumPy 예제
라이브러리를 사용하기 위해서는 임포트를 해야함.
import numpy
numpy.version.full_version
‘1.9.1’

위와 같이 하면 라이브러리를 쓰기 위해 라이브러리 명을 다 입력 해야함.
줄여서 다음과 같이 하면 별칭(alias)으로 처리 가능
import numpy as np
np.version.full_version
‘1.9.1’

NumPy array 예제
1차원 배열
a = np.array([0,1,2,3,4,5])
a
array([0, 1, 2, 3, 4, 5])

a 배열의 차원 및 원소 갯수 출력
차원 : ndim
원소 갯수 : shape
a.ndim
1
a.shape
(6,)

2차원 배열로 변형(reshape)
b = a.reshape((3,2))
b
array([[0, 1],
[2, 3],
[4, 5]])
b.ndim
2
b.shape
(3, 2)

NumPy패키지 최적화
가능하면 값을 복사하지 않음
b[1][0] = 77
b[0][0] = 1
b
array([[ 1, 1],
[77, 3],
[ 4, 4]])
a
array([0, 1, 2, 3, 4, 5])

b[1][0]= 77 <- b 2차원 배열의 값을 수정
a가 변경 됨.
즉 a와 b가 같은 값을 공유 하고 있음.

독립적으로 변경된 값을 가지는 변수가 필요할때 다음과 같이 처리
c = a.reshape((3,2)).copy()
c
array([[ 0, 1],
[77, 3],
[ 4, 5]])

c[0][0] = -99
c
a
array([ 0, 1, 77, 3, 4, 5])

NumPy 장점
연산자가 개별 원소에 적용
a * 2
array([ 0, 2, 154, 6, 8, 10])
a**2
array([ 0, 1, 5929, 9, 16, 25])
[1,2,3,4,5] *2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
[1,2,3,4,5]**2
—————————————————————————
TypeError Traceback (most recent call last)

<ipython-input-23-c54f0681399f> in <module>()
—-> 1 [1,2,3,4,5]**2

TypeError: unsupported operand type(s) for ** or pow(): ‘list’ and ‘int’
##인덱싱##
배열에 접근하는 다양한 방법을 제공
a[np.array([2,3,4])]
array([77, 3, 4])

조건부 접근
a>4
array([False, False, True, False, False, True], dtype=bool)
a[a>4]
array([77, 5])

조건에 맞지 않는 값을 잘라 낼수 있다.

a[a>4]=4
a
array([0, 1, 4, 3, 4, 4])

위와 같은 사용은 빈번하기 때문에 clip()함수를 통해 지원
a.clip(0,4)
array([0, 1, 4, 3, 4, 4])

###존재하지 않는 값 처리###
존재하지 않는 값 : np.NAN
c = np.array([1,2,np.NAN,3,4])
c
array([ 1., 2., nan, 3., 4.])

NAN 체크 함수 : isnan
np.isnan(c)
array([False, False, True, False, False], dtype=bool)

NAN 제거
c[~np.isnan(c)]
array([ 1., 2., 3., 4.])
np.mean(c[~np.isnan(c)])
2.5

실행시간 비교
import timeit
normal_py_sec = timeit.timeit(‘sum(x*x for x in xrange(1000))’,number=10000)
navie_py_sec = timeit.timeit(‘sum(na*na)’,setup = “import numpy as np; na=np.arange(1000)”, number = 10000)
good_np_sec = timeit.timeit(‘na.dot(na)’,setup=”import numpy as np;na=np.arange(1000)”, number=10000)
print(“Normal Python: %f sec”%normal_py_sec)
print(“Navie Numpy: %f sec”%navie_py_sec)
print(“Good Numpy: %f sec”%good_np_sec)

Normal Python: 0.543564 sec
Navie Numpy: 0.769407 sec
Good Numpy: 0.014517 sec
NumPy의 dot()함수는 같은 역할을 하는 루프 문보다 훨씬 빠르다.
대신, NumPy의 배열(array)는 유연성이 없다.
a = np.array([1,2,3])
a.dtype
dtype(‘int64′)
np.array([1,”string”])
array([‘1′, ‘string’],
dtype=’|S21′)

##SciPy##

SciPy는 NumPy의 자료구조(array등)을 기반으로 여러가지 과학 알고리즘을 제공

매트릭스 연산, 선형대수, 최적화, 군집, 공간연산, 고속 푸리에 변환까지 갖추어져 있다.
SciPy는 NumPy와 같이 사용한다.
그러므로 임포트시 같이 하는것이 좋다.
import scipy, numpy
scipy.version.full_version
‘0.14.0’
scipy.dot is numpy.dot
True

 

linux(centos)환경에서 python 개발자 환경 설치하기

python 설치 이전 확인 사항

1. gcc 설치 여부

2. gcc에서 c++ 컴파일러 설치 여부

2번이 설치 되어 있지 않다면

“yum install gcc-c++” 명령어로 설치 해야함.

설치 과정에서 다음과 같은 에러 메세지가 나오면 gcc c++ 컴파일러가 설치 안된 것임.

 gcc: error trying to exec ‘cc1plus':

1. 기본 python 설치.

yum install python

apt-get install python

yum install python27(ipython과 연동하기 위해서는 2.7이상이 필요하다.)

2. 개발 환경 패키지 설치

yum install python-devel

apt-get install python-devel

여기서 부터는 pip를 통해 패키지를 설치한다.

3. numpy 설치

pip install numpy

수학 라이브러리.

4. ipython 및 notebook 설치.

pip install “ipython[notebook]”

ipython은 인터랙티브 python

ipython notebook은 웹 기반 인터랙티브 python

웹 페이지를 기반으로 동작.

numpy 나 notebook 설치시 unicodeDecodeError가 발생하면 다음 글 참고 .

http://chanik.egloos.com/viewer/3685653

http://www.unixmen.com/install-ipython-crunchbang-ubuntu-arch-fedora/

간단히 말하면 python 코드가 기본 엔코딩을 ascii로 인식하기 때문에 발생하는 오류

python 설치 디렉토리 아래에 site-packages/sitecustomize.py 라는 파일을 만들고 아래와 같이 적어주면 해결된다고 하는데,

import syssys.setdefaultencoding(“utf-8″)위의 글은 centos 계열 os가 대상임. 5. matplotlib   도표를 그려주는 라이브러리.   sudo yum install python-matplotlib 이걸로 끝. 6. scikit-learn   기계학습용 라이브러리

sudo pip install scikit-learn

7. notebook 웹으로 접근 하기.

http://ipython.org/ipython-doc/dev/notebook/public_server.html

간단히 말하면

1. 접근 암호 설정

In [1]: from IPython.lib import passwd

In [2]: passwd()

Enter password:

Verify password:

Out[2]: ‘sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed’

2. 코드 수정. You can then add this to your ipython_notebook_config.py, e.g.:# Password to use for web authenticationc = get_config()c.NotebookApp.password =u’sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed’

3. 접근을 위한 인증 파일 생성

$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

4. 프로파일 생성

c = get_config()# Kernel configc.IPKernelApp.pylab = ‘inline’ # if you want plotting support always# Notebook configc.NotebookApp.certfile = u’/absolute/path/to/your/certificate/mycert.pem’c.NotebookApp.ip = ‘*’c.NotebookApp.open_browser = Falsec.NotebookApp.password = u’sha1:bcd259ccf…[your hashed password here]’# It is a good idea to put it on a known, fixed port

c.NotebookApp.port = 9999

5. 실행

#ipython –profile=프로파일명 –certfile=인증파일 경로  그외 옵션

실례 : ipython notebook –profile=nbserver –certfile=./notebooks/mycert.pem –pylib=auto

ubuntu에서 scipy 설치 이전에 다음과 같은 패키지 설치 필요.

sudo apt-get install libblas-devsudo apt-get install liblapack-devsudo apt-get install gfortran

centos 에서 scipy, numpy 설치시 blas, atlas 오류 발생시 아래와 같이

blas, atlas 라이브러리 설치

yum install atlas.x86_64 blas.x86_64 lapack.x86_64

yum install lapack lapack-devel blas blas-devel