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를 이용한다고 한다.
(출처 : 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을 통해 그 값들을 지정해주는 것이다.
댓글
댓글 쓰기