코딩하는 해맑은 거북이
[Tensorflow] Tensorflow 정의 및 동작 방식 본문
해당 글은 아래의 2가지를 다룬다.
1. Tensorflow 란?
2. Tensorflow 동작 방식
1. Tensorflow 란?
- Tensorflow(텐서플로우)란 구글에서 만든, 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리
- 주어진 분포를 잘 근사하는 직선을 찾는 문제를 풀기 위한 프레임워크
- Tensorflow에서 Tensor(텐서)란 딥러닝에서 데이터를 표현하는 방식이다. 즉, 행렬로 표현할 수 있는 2차원 형태의 배열을 높은 차원으로 확장한 다차원 배열이다.
2. Tensorflow 동작 방식
1단계) 식을 세운다.
2단계) 식을 계산한다.
해당 글은 Colab에서 아래 라이브러리 선언을 통해 텐서플로우 1버전을 사용했습니다.
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
ta = tf.Variable([1,2,3], dtype=tf.int16)
tb = tf.Variable([4,5,6], dtype=tf.int16)
tc = ta + tb
print(ta)
print(tb)
print(tc)
<tf.Variable 'Variable:0' shape=(3,) dtype=int16, numpy=array([1, 2, 3], dtype=int16)>
<tf.Variable 'Variable:0' shape=(3,) dtype=int16, numpy=array([4, 5, 6], dtype=int16)>
<tf.Tensor: shape=(3,), dtype=int16, numpy=array([5, 7, 9], dtype=int16)>
tc를 출력했을때 전혀 예상하지 못한 결과가 나왔다!
앞서 설명했듯 2단계를 거쳐야하는데, 위의 코드는 1단계에 해당하는 식만 세웠을 뿐이다.
식을 계산할 수 있는 객체인 Session과 계산하라는 명령인 run() 함수를 사용해야한다.
그리고, Variable Tensor에 값을 실제 배정하는 것도 Session 객체를 거쳐야 한다.
이 과정을 Variable 초기화라고 한다.
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
ta = tf.Variable([1,2,3], dtype=tf.int16)
tb = tf.Variable([4,5,6], dtype=tf.int16)
tc = ta + tb
sess = tf.Session()
sess.run(ta.initializer) # ta Variable Tensor 초기화, [1,2,3]을 실제로 할당
sess.run(tb.initializer) # tb Variable Tensor 초기화, [4,5,6]을 실제로 할당
tta = sess.run(ta)
ttb = sess.run(tb)
ttc = sess.run(tc)
print(ta)
print(tb)
print(tc)
sess.close()
[1 2 3]
[4 5 6]
[5 7 9]
- 모든 변수들을 한번에 초기화 하기
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
ta = tf.Variable([1,2,3], dtype=tf.int16)
tb = tf.Variable([4,5,6], dtype=tf.int16)
tc = ta + tb
sess = tf.Session()
init = tf.global_variables_initializer() # 모든 변수 한번에 초기화
sess.run(init)
tta = sess.run(ta)
ttb = sess.run(tb)
ttc = sess.run(tc)
print(tta)
print(ttb)
print(ttc)
sess.close()
[1 2 3]
[4 5 6]
[5 7 9]
'Python > Tensorflow | PyTorch' 카테고리의 다른 글
[PyTorch] 사칙연산 (0) | 2023.03.17 |
---|---|
[PyTorch] PyTorch 활용하기 (0) | 2023.03.16 |
[PyTorch] PyTorch 구조2 (0) | 2023.03.15 |
[PyTorch] PyTorch 구조1 (0) | 2023.03.13 |
[PyTorch] PyTorch 기본 (0) | 2023.03.13 |