본문 바로가기

분류 전체보기

(90)
Python Class * Class 필요한 이유 C 언어에는 클래스가 없다. 즉, 클래스가 없어도 함수만으로 프로그램을 충분히 만들 수 있다. 하지만 클래스를 사용해서 얻을 수 있는 이익이 상당하다. 계산기를 만드는 예시를 상상해보자. - 함수로 구현 result = 0 def add(num): global result result += num return result print(add(3)) print(add(4) 더보기 결과 3 7 두 개의 계산기를 사용하고 싶은 경우, 각 계산기는 각각의 결과값을 유지해야 하기 때문에 위와 같이 add 함수 하나만으로는 결과값을 따로 유지할 수 없다. 이 상황을 해결하려면 함수를 각각 따로 만들어야 한다. result1 = 0 result2 = 0 def add1(num): global..
Python Class - object class 상속 * Python Class에서 object class를 상속받는 이유 class MyClass(object): # Code Python 3.x: 1. class MyClass(object): new-style class 2. class MyClass: new-style class (명시하지 않아도 자동으로 상속) Python 2.x: 1. class MyClass(object): new-style class 2. class MyClass: >>>>OLD-STYLE class
Python generator * Python generator란? iterator를 생성해주는 function이다. iterator는 next() method를 이용해 데이터에 순차적으로 접근이 가능한 object이다. generator는 일반적인 함수와 비슷하게 보이지만, 가장 큰 차이점은 yield 구문이다. * Iterable과 iterator의 이미 - iterable: member를 하나씩 차례로 반환 가능한 object를 의미한다 - sequence type인 list, str, tuple이 대표적이다 - non-sequence type인 dict나 file도 iterable하다고 할 수 있다. - __iter__()나 __getitem__() 메소드로 정의된 class는 모두 Iterable 하다고 할 수 있다. - i..
Tensorflow - float32 쓰는 이유 import tensorflow as tf X = tf.placeholder(tf.float32, [None, 28*28]) Tensorflow를 공부하다 보면 위와 같이 float32를 쓴다. 왜 굳이 float32를 쓰는가에 대해 알아보려고 한다. * 코드설명 - tf.placeholder: 재료를 담는 그릇을 말하며, 이미지 데이터를 학습시킨다면 이미지의 픽셀값이 저장되는 공간이다. 선언된 후 실제 코드가 실행될때 값을 꼭 전달받아야 한다. tensorflow 2.0 이후부터는 지원하지 않는 방식이다. - tf.float32: 변수의 data type을 의미한다. float32는 32bits를 사용하고 float64는 64bits를 사용한다는 것인데, 이는 즉 메모리 용량 차이가 두배이다. 메모리 ..
Keras data generator; StopIteration Keras에서 custom dataset을 불러오기 위해 data generator를 사용한다. batch-by-batch에 data를 순회하면서 불러오도록 해준다. 여기서 Keras data generator는 infinite해야 한다. 안그러면 StopIteration을 발생한다. * 코드 / Code def subtract_mean_gen(x_source,y_source,avg_image,batch): batch_list_x=[] batch_list_y=[] for line,y in zip(x_source,y_source): x=line.astype('float32') x=x-avg_image batch_list_x.append(x) batch_list_y.append(y) if len(batch_..
Jupyter notebook - remote server 연결 1. ssh 연결 등을 이용해서 터미널에서 원하는 서버(ex. 192.123.4.567)으로 연결한다 2. 연결한 다음 jupyter notebook을 실행하기 원하는 디렉토리로 이동한다 3. 원하는 디렉토리에서 아래 명령어를 입력해준다 jupyter notebook --ip 192.123.4.567 --port 9090 ip는 연결한 서버를 적어주고, 포트번호를 임의로 정해주면 된다. 4. 크롬과 같은 웹 브라우저를 이용해 접속한다. 접속방법: 웹브라우저 url 창에 192.123.4.567:9090 을 입력해주면 jupyter notebook 사용 페이지가 뜬다. 비밀번호를 입력하라고 뜨는데, ssh 접속으로 접속할 때 서버의 비밀번호가 있다면 그 비밀번호를 적어주면 된다.
Kill Nvidia GPU process in Ubuntu 1. nvidia-smi로 gpu 목록 조회해서 process의 pid를 알아낸다. 위의 사진을 보면 0번 gpu에서 메모리를 사용하고 있는데 gpu를 이용한 연산은 진행되고 있지 않다. 이러한 동작을 멈추게 하기 위해서는 kill을 사용하면 된다. 2. Process Kill sudo kill -9 33226 33226자리에 해당하는 process의 pid를 넣어주면 된다. -9는 시그널 종류 중 강제 종료로, 리눅스 커널의 프로세스를 강제 종료한다. 작업중인 모든 절차를 저장하지 않고 프로세스를 종료하기 때문에 데이터가 소멸될 수 있다. (-15 시그널은 정상종료로, 해당 프로세스가 완료된 후 종료되도록 한다.) 출처: https://beerensahu.wordpress.com/2018/11/23/k..
git, github(버전 관리 프로그램, 원격 저장소) 사용하기 1. github 가입하기 https://github.com 에서 가입하기. 가입한 이메일 기억하기 2. Git 설치하기 MAC, Windows 등 자신의 os에 맞는 Git 설치하기. 3. Git 설치 되었는지 확인하기 MAC은 터미널을 열고, 잘 설치되었는지 확인하려면 git version을 입력하기. 그러면 git version이 나오고, 버전이 나오면 Git이 잘 설치된 것이다. 4. Git 초기설정 하기 터미널에서 git config --global user.name "Your Name Here" "Your Name Here" 안의 ""에 이름을 쓰면 된다. 꼭 github에 가입했을 때의 이름은 아니어도 되고 자유롭게 적어도 되는 것 같다. 그리고 바로 git config --global us..