2016년 5월 31일 화요일

github 사용법

글올리기, 간편 안내
funmv

git init # 내 컴퓨터의 파일이 있는 특정 폴더로 가서 실행
git add pg_pong.ipynb # 로드할 파일 지정
git commit -m "policy gradients example"
git remote add origin https://github.com/funmv/RL.git # 먼저 git에 repository(폴더)를 만들어 놓아야 함

git push -u origin master # 여기서 id, pw를 필요로 함

그 외 명령: git clean -f 

2016년 5월 20일 금요일

(python) decoration, thread & yield

작성 중...

1. decoration pattern, @ 사용.
호출부에서 read_batches(50) 시,

read_batches = mpgen(read_batches(50))

처럼 원 함수의 기능 확장.


2. python에서는 GIL문제로 thread 대신에 multiprocessing 사용.
mpgen을 통해 주 프로세스와는 별도의 데이터 생성 프로세스가 시작
Queue는 thread에서 데이터 공유에 사용(아래, 최대 3개까지의 item 저장 가능)


3. yield
함수의 형태를 가지는 iterator (generator, 생성기라고 부름)를 만들어 줌.
iterator란?
c = iter(range(5))
c.next(), c.next(),... # 0,1,2,...

함수의 인자를 비휘발성으로 만듬
함수 재호출 시, yield 다음이 수행
return은 결과값 반환, yield는 iterator 반환


4. functools.wraps:
디버깅 시 func.__doc__ 또는 func.__name__ 등의 속성을 요청 시
원 함수 read_batches의 속성이 안나오고 decoration된 mpgen함수의 속성이 나오는 것을 방지.
함수 속성을 인자인 원 함수 f로 되돌리는 역할.
데코레이터에서 closure문제 해결을 위해 사용.



def mpgen(f):
    def main(q, args, kwargs):
        try:
            for item in f(*args, **kwargs):
                q.put(item)
        finally:
            q.close()

    @functools.wraps(f) 
    def wrapped(*args, **kwargs): #*args(리스트 받고), **kwargs(map 받음)
        q = multiprocessing.Queue(3)
        proc = multiprocessing.Process(target=main, args=(q, args, kwargs))
        proc.start()
        try:
            while True:
                item = q.get()
                yield item
        finally:
            proc.terminate()
            proc.join()

    return wrapped
     

@mpgen # mpgen의 인자함수로 read_batches을 사용함을 지정
def read_batches(batch_size):
    def gen_vecs():
        for im, c, p in gen.generate_ims(batch_size):
            yield im, code_to_vec(p, c)

    while True:
        yield unzip(gen_vecs()) # yield는 휘발성이 없는 함수(iterator 만듬)


2016년 5월 16일 월요일

(python) debugger

import ipdb 에서 빠져나올 때는 cntl+z
import pdb
pdb.set_trace()

명령법


(python) video read and write

opencv의 cv와 cv2의 차이
cv2 내에 cv있음. cv2가 최신.
import cv2.cv as cv

python 에서 버전 확인
import cv2
cv2.__version__

video 읽기
installed\opencv\3rdparty\ffmpeg\opencv_ffmpeg_64.dll 필요
이것을 작업 폴더에 복사해서 이름을 opencv_ffmpeg249_64.dll로 바꿈


테스트
import cv2
cap = cv2.VideoCapture('tmp1.mp4')
cap.grab() # true로 나와야 함


(Ref)
1. cv & cv2
2. about video working
3. opencv version 

2016년 4월 30일 토요일

(python) tips

import sys
sys.path
sys.path.append('c:\\python\\pathtest')
sys.path.remove('c:\\python\\pathtest')

set PYTHONPATH=c:\python
>>map(lambda apath: apath.find('pathtest'), sys.path)
[-1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

import numpy as np
dir(), dir(np)

import pdb
pdb.set_trace()
n(step next), s(step in), run
print var

(package 작성 예)
path 연결
import sys
sys.path.append('c:\\python')
(또는 set PYTHONPATH=c:\....)

python 실행 후 path 확인하기 위해
import sys
map(lambda ap: ap.find('pathtest'), sys.path)

사용하기 위해
from pathtest.keras.imgproc import misc as mymisc

가능한 명령확인 위해
dir(mymisc)


[출처]
1. python modules
2. Jump to python - 패키지
3. python debugger- pdb


Keyboard shortcuts

[Mac]

cmd, w                     (현재 윈도 또는 탭 닫기)
cmd, t                      (현재 윈도의 새로운 탭 열기, 또는 아무 것도 없으면 새로운 파일 메니저)
cmd, [ 또는 ]            (브라우저 경로 되돌리기)
cntl, -> or <-           (여러 창을 우회하기)
cmd, cntl, F              (Full Window)
cmd, opt, <- or ->   (탭을 우회하기)

cmd, space              (새 spotlight 오픈, 파일 찾을 때)
alt, space                 (영문 한글 토글)

with iSnap
opt, -> or <- or ...



[Chrome]

cmd, n                     새로운 크롬 시작
cmd, t                      새로운 탭 시작
cmd, w                     탭 종료
cmd, shift, n            시크릿 모드 시작

cmd, L                     주소창 가기
cmd, alt, ->             탭 이동
cmd, alt, i                개발자 도구 열기

cntl, Enter               주소에 .com 추가하여 열기

Alt, <-, ->               이전 페이지로 가기, 다시 오기





[WIndows]

windows + left, right, up, down
windows + Tab

windows + cntl + D, create
windows + cntl + F4, close
windows + cntl + left/right

cntl + c/v/a



[출처]
[1] 크롬단축키,  chrome 단축키
[2] 윈도 단축키

2016년 3월 30일 수요일

(가상환경) Anaconda commands

conda -V
conda info --envs
conda update conda
conda create -n yourenvname python=2.7 anaconda
source activate yourenvname #windows에서는 source 생략
deactivate
conda remove -n yourenvname --all

conda info -e
conda install -n yourenvname [package]

windows에서 새로운 가상환경을 생성 때는 가상환경 생성 후, 그 환경 내에서도 mingw, libpython 설치 필요.

For ubuntu,
source bin/activate ~/anaconda2/
conda info --envs
...
source bin/activate /home/user/anaconda2/envs/keras1.0.1

theano/keras 실행 시는
THEANO_FLAGS=floatX=float32,device=gpu python

bash shell prompt 축약
PS1='\u:\W\$ '


(Ref.)
1. http://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/
2. http://antilibrary.org/m/post/766
3. http://askubuntu.com/questions/145618/how-can-i-shorten-my-command-line-bash-prompt