일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pandas
- Blog
- Python
- tensorflow
- Tistory
- 한빛미디어서평단
- python visualization
- Linux
- 텐서플로
- matplotlib
- 매틀랩
- MySQL
- MATLAB
- 시각화
- 티스토리
- 통계학
- 딥러닝
- 블로그
- SQL
- Ga
- 파이썬
- Visualization
- 리눅스
- 독후감
- 서평단
- 서평
- 파이썬 시각화
- 월간결산
- Google Analytics
- 한빛미디어
- Today
- Total
pbj0812의 코딩 일기
[PYTORCH] 05_pytorch with examples (TensorFlow) 본문
Pytorch with examples (TensorFlow) 코드 분석
- 아래 글은 파이토치 튜토리얼 중 TensorFlow를 이용하여 모델을 구축하는 부분을 재구성한 글입니다.
- 코드를 조각 내었기 때문에 전체 코드는 깃허브나 아래 링크 참조 바랍니다.
원본링크 : https://pytorch.org/tutorials/beginner/pytorch_with_examples.html
TensorFlow
- PyTorch가 동적인 computational graph를 사용하는데에 반해, TensorFlow는 정적인 그래프를 사용한다.
- PyTorch에서 매번 새로운 그래프가 생성될때, TensorFlow는 같은 그래프를 재사용한다.
- 정적인 그래프는 최적화 하기에 좋다.
- 효율성을 위해 여러 그래프를 융합하거나, 여러 장치들을 위해 분산 배치를 할 수도 있다.
코드 프리뷰
하이퍼 파라미터 세팅
N, D_in, H, D_out = 4, 1000, 100, 10
x = tf.placeholder(tf.float32, shape=(None, D_in))
y = tf.placeholder(tf.float32, shape=(None, D_out))
w1 = tf.Variable(tf.random_normal((D_in, H)))
w2 = tf.Variable(tf.random_normal((H, D_out)))
- x, y는 placeholder로 지정하였고, w1, w2는 Variable로 지정하였다.
- 이해하기 쉽게 placeholder는 데이터를 담는 그릇으로 생각하고, Variable은 학습변수를 지정한다고 생각하면 될 것 같다.
모델 구성
h = tf.matmul(x, w1)
h_relu = tf.maximum(h, tf.zeros(1))
y_pred = tf.matmul(h_relu, w2)
- 모델을 구성하는 부분이다.
1) x와 w1을 곱하여 h 생성
2) h에 ReLU 적용
3) ReLU가 적용된 h와 w2를 곱하여 y 예측
loss 계산
loss = tf.reduce_sum((y - y_pred) ** 2.0)
- loss는 y - y 예측한 값을 제곱한 값으로 정의한다.
- 그리고 행렬안의 모든수를 다 더한값을 loss라고 한다.
gradient 계산
grad_w1, grad_w2 = tf.gradients(loss, [w1, w2])
- w1, w2 갱신을 위한 w1과 w2의 loss 값의 gradient 계산
session 열기 및 초기화
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
- TensorFlow의 계산은 session 안에서 진행된다.
- tf.global_variables_initializer를 해줘야 변수들이 초기화된다. (하지 않으면 오류발생)
data 담기
x_value = np.random.randn(N, D_in)
y_value = np.random.randn(N, D_out)
- numpy를 사용하여 x와 y를 만들었다.
그래프 실행
loss_value, _, _ = sess.run([loss, new_w1, new_w2],
feed_dict={x: x_value, y: y_value})
- 그래프 실행, 즉 계산을 실행하는 부분이다.
- sess.run 함수를 이용하여 계산을 시작한다.
- feed_dict 부분은 실제 데이터(x_value, y_value)를 처음에 만들었던 그릇(x, y)에 담는 행위라고 할 수 있다.
'인공지능 & 머신러닝 > PYTORCH' 카테고리의 다른 글
[PYTORCH] 06_pytorch with examples (nn module) (0) | 2019.06.16 |
---|---|
[PYTORCH] 04_pytorch with examples (autograd 재정의) (0) | 2019.06.10 |
[PYTORCH] 03_pytorch with examples (autograd) (0) | 2019.05.31 |
[PYTORCH] 02_pytorch with examples (tensor) (0) | 2019.05.29 |
[PYTORCH] 01_pytorch with examples (numpy) (0) | 2019.05.26 |