ML lab 01 DeepLearning

코세라의 회귀 파트를 끝내고 이제 분류 파트 기다리는 상황에서,
유튜브로 시간 날 때마다 본 deeplearning 강의를 정리해야겠다.

이 강의의 순서는 아래와 같다.

1. Machine learning basic concepts
2. Linear regression
3. Logistic regression ( Classification )
4. Multivariable linear/logistic regression
5. Neural networks
6. Deep learning 
 6.1 CNN
 6.2 RNN
 6.3 Bidirectional Neural networks

현재 강의는 CNN까지 들었는데 강의가 좋고 한글이라 이해가 잘 되기 때문에
이 강의 또한 블로그에 정리하며 들어야겠다고 생각했다.
또한 코드의 예제가 파이썬이라는 점이 굉장히 좋다.

https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw

위 URL은 이 강의를 하시는 홍콩 과기대 교수님의 채널이다.
친절하고 천천히 알려주시기 때문에 딥러닝을 입문하기에 좋을 것 같다.
하지만 왠만하면 머신 러닝의 기초 지식이 있으면 강의를 곱씹으며 이해할 수 있을것이다.
그러므로 코세라의 회귀를 공부하고 이 유튜브 강의의 회귀까지 정리할 것이다.

LAB 01 : Machine learning basic concepts

머신러닝의 기본인 지도학습/비지도학습은 각설하고
tensorflow 의 기본 operation에 대해 알아볼것이다.

텐서플로우는 오픈소스 소프트웨어 라이브러리로 data flow graph를 이용한다고 한다.

data flow graph
(출처 : https://gist.github.com/haje01/202ac276bace4b25dd3f)

data flow graph 는 위와 같은 구조를 갖고 있다.
노드들은 수학 연산을 담고 있고
엣지는 동적 사이즈의 다차원 데이터 배열(=텐서)을 실어나르는데, 
여기에서 텐서플로우라는 이름이 지어졌다.

이제는 텐서플로우의 기본 연산과 동작에 대해 알아보자.
----------------------------------------------------------
import tensorflow as tf

# tf.constant는 operation 즉 하나의 연산작업
hello = tf.constant("Hi TensorFlow")

# print해보면 결과 : Tensor("Const:0", shape=(), dtype=string)
# 즉 상수가 아닌 하나의 연산 작업
print hello

session = tf.Session()
print session.run(hello)

#연산작업 2

a = tf.constant(1)
b = tf.constant(2)

c= a+b

print session.run(c)
----------------------------------------------------------
위 코드에서 주목해야하는 것은 기존 파이썬 코드와는 다르게
세션을 실행시켜야 원하는 값을 얻을 수 있다는 것이다.
print hello 를 하면 상수가 나와야하는데 tensor의 상태가 나온다.
모든 것이 operation이라는 것을 잊으면 안된다.
session.run()함수를 사용하지 않으면 operation이 실행되지 않고 그냥 상태값만 나온다.


다음에는 placeholder 라는 특이한 연산에 대해 알아볼 것이다.
----------------------------------------------------------
# 함수를 정의할때에 f(a,b)로 정의한다
# 텐서플로우는 연산작업을 변수로 받기 때문에 함수를 정의할때 임의의 변수가 필요하다

import tensorflow as tf

a = tf.placeholder(tf.int64)
b = tf.placeholder(tf.int64)

#값을 갖고있진 않지만 변수로 지정함

add = tf.add(a,b)
mul = tf.mul(a,b)

with tf.Session() as session:
    print "add %i" % session.run(add,feed_dict={a:1, b:2})
    print "mul %i" % session.run(mul,feed_dict={a:20, b:3})
----------------------------------------------------------
기존 파이썬 라이브러리에서는 함수를 정의할 때 def 를 사용했지만 
여기서는 간단히 placeholder를 통해 인자의 데이터 타입만 지정해놓으면 사용할 수 있다.
그리고 session.run 함수를 이용할 때에 feed_dict을 통해 그 값들을 지정해주는 것이다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리