2020-07-28 회의가 있기 전까지 구글 코랩과 유튜브 자료를 통해
텐서플로우(tensorflow)를 직접 코드작성을 통해 익혀보았다.
주로 동빈나 유튜브를 참고하여 예제코드들을 모두 따라서 작성해보았으며,
간단하게는 변수 선언 방식부터 선형 회귀 함수를 사용해보면서 손과 눈으로 접해보았다.
자세하게 이론적인 내용은 모르지만 코드가 어떠한 기능을 하는지 간단하게 분석하는 식으로 정리하겠다.
# 선형 회귀
* 참고로 tensorflow 2.0이 사용되질 않아서 특별 조치를 취했다.( tf.disable_v2_behavior() 선언 )
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
xData = [1,2,3,4,5,6,7]
yData = [25000,55000,75000,110000,128000,155000,180000]
W = tf.Variable(tf.random.uniform([1],-100,100)) # Variable : 가변성있는 변수 <-> constant
b = tf.Variable(tf.random.uniform([1],-100,100))
X = tf.placeholder(tf.float32) # 플레이스홀더 : 다른 텐서를 할당하기 위해 사용
Y = tf.placeholder(tf.float32)
H = W * X + b
cost = tf.reduce_mean(tf.square(H-Y)) # 평균값
a = tf.Variable(0.01) # 경사 스텝 크기
optimizer = tf.train.GradientDescentOptimizer(a) # 경사하강 라이브러리
train = optimizer.minimize(cost) # 비용함수를 가장 적게 만들도록 함
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(5001):
sess.run(train, feed_dict={X: xData, Y: yData})
if i % 500 == 0:
print(i, sess.run(cost,feed_dict={X: xData,Y: yData}), sess.run(W), sess.run(b))
print(sess.run(H,feed_dict={X:[8]}))
일단 tf(tensorflow) 모듈에서 Variable은 변수를 담는 공간이다.
Constant와는 다르게 값을 변경할 수 있다는 특징이 있다. (일반 변수 선언같은 느낌)
그리고 placeholder라는 것은 학습 데이터를 포함하는 변수라고 할 수 있는데,
원래 인자로는 placeholder(dtype, shape=None, name=None) 이런형태이나
dtype(=저장되는자료형)만 명시해도 상관이 없다고 한다. (shape = 배열의 차원, name = 플레이스홀더 이름)
윗줄에서 학습 데이터 자료형을 명시하고 나면, 아랫줄의 feed_dict 부분을 통해 학습 데이터를 담을 수 있다.
이외에 경사하강 라이브러리를 이용하는 부분은 선형 회귀에서 기울기를 정확히 예측하도록 하며,
X가 8일 때 Y값이 무엇인지를 도출해내는데 도움을 준다.
# 단순 함수들 살펴보기
기본적인 사칙연산은 물론이고 아주 다양한 함수를 지원한다(ex. 삼각함수, 지수함수 등등)
그래서 생략하였다(?)
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
sess = tf.Session()
a = tf.constant(17)
b = tf.constant(5)
# 덧셈 함수 사용하기
c = tf.add(a,b)
sess.run(c)
# 뺄셈 함수 사용하기
c = tf.subtract(a,b)
sess.run(c) # 가장 마지막 결과물만 출력
그리고 이 부분을 통해서 배운 점이 session을 통해서 run해야만 결과값이 나온다는 것이다.
단순히 print(c)를 한다고 해서 tf.add(a,b) 결과값이 나오는 것이 아니라, session.run()을 해야한다.
좀 더 설명해보자면 c = tf.add(a,b) 자체에서 c 에는 a+b 라는 식을 저장해둔 느낌이고,
결과값을 도출하기 위해서는 run을 통해서 이 식을 수행해야 한다.
'SecurityFactorial > Chat Filtering (X)' 카테고리의 다른 글
??? (0) | 2020.08.03 |
---|---|
세번째 회의 (0) | 2020.07.29 |
#1. 머신러닝 체험기 (0) | 2020.07.17 |
구글 이미지 크롤링 (0) | 2020.07.17 |
두번째 회의 (0) | 2020.07.11 |