일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- DynamicProgramming
- Hypothesis
- Softmax
- AI
- classifier
- 딥러닝
- 자연어처리
- 파이썬
- 머신러닝
- machine learning
- 알고리즘
- 백준
- Natural Language Processing with PyTorch
- tensorflow
- Deep learning
- pytorch
- 스택
- BAEKJOON
- MSE
- 파이토치
- rnn
- 강의정리
- 머신러닝 기초
- 강의자료
- 정렬
- Python
- 홍콩과기대김성훈교수
- DP
- Cross entropy
- loss
- Today
- Total
개발자의시작
[머신러닝][딥러닝] TensorFlow로 간단한 linear regression 구현 2.1 본문
이 글은 홍콩과기대 김성훈 교수님의 강의를 개인적으로 정리한 글입니다.
강의 영상 및 강의자료는 아래의 링크에서 확인하실 수 있습니다.
링크 : http://hunkim.github.io/ml/
이전 강의 review
강의 2.0에서 언급했듯 Linear Regression의 목표는 가설(Hypothesis)과 실제의 차이(Loss)를 줄여가는 것.
TensorFlow의 메커니즘은 아래의 3가지 스텝으로 이루어짐.
1) 텐서 플로우 툴을 이용해서 그래프 빌드
2) sess.run(op)를 이용해 그래프를 실행
3) 그래프 속에 있는 값들이 업데이트되거나 값을 리턴
강의 1.1에서 배운 가설에 대한 실제 구현을 정리
1
2
3
4
5
6
7
8
9
10
11
|
x_train = [1, 2, 3]
y_train = [1, 2, 3]
# Try to find values for W and b to compute y_data = x_data * W + b
# We know that W should be 1 and b should be 0
# But let TensorFlow figure it out
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.random_normal([1]), name="bias")
# Our hypothesis XW+b
hypothesis = x_train * W + b
|
W와 b에 대한 값들을 정의해야 한다.
tensorFlow에서는 Varialble로 정의한다. tensorFlow의 Variable은 다른 프로그래밍 언어에서 변수와는 다르다. tensorFlow가 사용하는 Variable 이다(tensorFlow가 자체적으로 변경하는 변수- trainable 한 변수).
Variable을 만들 때 어떤 shape인지 정해줘야 한다. tf.random_normal( )로 random 한 값으로 지정해주고 [1]을 사용해 1차원임을 명시적으로 지정해준다.
1
2
3
|
|
reduce_mean() : 텐서의 평균을 리턴하는 함수
위에서 언급했듯 linear regression의 목표는 cost를 최소화하는 것.
tensorFlow에는 minimize하는 방법이 여러가지 있지만 GradientDescent를 많이 사용한다.
1
2
3
|
|
여기까지가 그래프를 빌드하는 과정이다.
1
2
3
4
5
6
7
8
9
|
sess = tf.Session()
# Fit the line
for step in range(2001):
if step % 20 == 0:
print(step, sess.run(cout), sess.run(W), sess.run(b))
|
여기서 주의해야 할 것으로 W와 b라는 tensorFlow Variable을 사용하고 실행할 때는 tf.global_variables_initializer()로 변수들을 초기화해줘야 한다.
sess.run(train)을 통해 그래프를 실행시켜 준다.
tensorFlow가 동작하는 과정을 이해할 필요가 있는데 위의 코드를 실행시킬 때의 그래프를 그림으로 나타내면 아래와 같이 동작한다.
sess.run( train ) - sess.run( )을 통해 train을 실행시키면 그래프를 따라 cost와 hypothesis를 모두 실행된다.
정해진 값을 넘겨주는 것이 아닌 placeholder를 사용하여 값을 나중에 전달하는 것도 가능하다.
1
2
3
4
5
6
7
8
9
10
|
X= tf.placeholder(tf.float32)
Y= tf.placeholder(tf.float32)
# Fit the line
for step in range(2001):
cost_val, W_val, b_val, _ \
if step %20 ==0:
print(step, cost_val, W_val, b_val)
|
train을 실행시킬 때 feed_dict를 통해 그때그때 값을 넘겨줄 수 있다. 또한 sess을 실행시킬때 cost, W, b, train을 각각 실행 시킬 수 도 있지만, 리스트를 통해 실행시키는 것도 가능하다.
오류 또는 이상한 점 있다면 댓글로 남겨주시기 바랍니다.
감사합니다.
'머신러닝(machine learning)' 카테고리의 다른 글
도커[Docker] Instruction (0) | 2021.11.18 |
---|---|
[머신러닝][딥러닝] Linear Regression의 cost 최소화 minimize cost 3.0 (0) | 2020.04.23 |
[머신러닝][딥러닝] Linear Regression(선형 회귀)의 Hypothesis 와 cost 2.0 (0) | 2020.04.08 |
[머신러닝][딥러닝] 에이다부스트(Adaboost) 개념 정리 (0) | 2020.04.08 |
[머신러닝][딥러닝] TensorFlow 설치 및 기본 동작 1.1 (0) | 2020.04.08 |