ํต๊ณ ๋ฐ ๋ค์ํ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํด์ผ ํ๋ ๋จธ์ ๋ฌ๋์ ๋งค์ฐ ๋ณต์กํด ๋ณด์ด์ง๋ง TensorFlow์ ๊ฐ์ ๋ง์ ์คํ ์์ค ํจํค์ง๊ฐ ์๊ฒจ๋๊ณ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ์ด๋ ค์ด ์์ ์ ์ด์ ๋ณด๋ค ํจ์ฌ ์ฌ์์ก์ต๋๋ค.
ํ ์ํ๋ก์ฐ(TensorFlow)๋ ๊ธฐ๊ณ ํ์ต๊ณผ ๋ฅ๋ฌ๋์ ์ํด ๊ตฌ๊ธ์์ ๋ง๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
TensorFlow๋ ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ๋จ์๋ก ์ทจ๊ธํ ์ ์๋ Tensors ๊ฐ๋ ์ ์ฌ์ฉํฉ๋๋ค. ํ ์๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ํตํด ํํํ ์์๋ N ์ฐจ์ ๋ฒกํฐ๋ก ์ ์ํ ์ ์์ต๋๋ค.
TensorFlow๋ ๋ฐ์ดํฐ ํ๋ก์ฐ ๊ทธ๋ํ(Data Flow Graph) ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ ํ๋ก์ฐ ๊ทธ๋ํ๋ ์ํ ๊ณ์ฐ๊ณผ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋ ธ๋(Node)์ ์ฃ์ง(Edge)๋ฅผ ์ฌ์ฉํ ๋ฐฉํฅ ๊ทธ๋ํ(Directed Graph) ํํ์ ๋๋ค.
Tensor๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ฉฐ ๋ค์ฐจ์ array, list๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. Flow๋ ๊ฒฐ๊ตญ Graph๋ฅผ ๋งํฉ๋๋ค. ์ฆ ๋ชจ๋ ๊ณ์ฐ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด์ ๊ฐ๊ฐ์ ์ฐ์ฐ์ ์๊ฒ ์ชผ๊ฐ๊ณ ์ด๊ฒ์ Graph๋ก ์ฐ๊ฒฐํ ๊ฒ์ ๋๋ค.
์ผ๋จ ํ ์ํ๋ก์ฐ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ฉ์ด๋ถํฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-
์คํผ๋ ์ด์ (Operation)
๊ทธ๋ํ ์์ ๋ ธ๋๋ ์คํผ๋ ์ด์ (์ค์๋ง op)์ผ๋ก ๋ถ๋ฆฝ๋๋ค. ์คํผ๋ ์ด์ ์ ํ๋ ์ด์์ _ํ ์_๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ์คํผ๋ ์ด์ ์ ๊ณ์ฐ์ ์ํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ๋ ์ด์์ ํ ์๋ก ๋ฐํํ ์ ์์ต๋๋ค. ์ฆ Operation(op)๋ ๋์์ ์ ์ํ ๊ฒ์ ๋๋ค.
-
ํ ์(Tensor)
๋ด๋ถ์ ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ ํ ์๋ฅผ ํตํด ํํ๋ฉ๋๋ค. ํ ์๋ ์ผ์ข ์ ๋ค์ฐจ์ ๋ฐฐ์ด์ธ๋ฐ, ๊ทธ๋ํ ๋ด์ ์คํผ๋ ์ด์ ๊ฐ์๋ ํ ์๋ง์ด ์ ๋ฌ๋ฉ๋๋ค
-
์ธ์ (Session)
๊ทธ๋ํ๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์ธ์ ๊ฐ์ฒด๊ฐ ํ์ํฉ๋๋ค. ์ธ์ ์ ์คํผ๋ ์ด์ ์ ์คํ ํ๊ฒฝ์ ์บก์ํํ ๊ฒ์ ๋๋ค.
-
๋ณ์(Variables)
๋ณ์๋ ๊ทธ๋ํ์ ์คํ์, ํจ๋ฌ๋ฏธํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฐฑ์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์์์ ํ ์๋ฅผ ์ ์ฅํ๋ ๋ฒํผ ์ญํ ์ ํฉ๋๋ค.
Node๋ ์ํ์ op์ ๊ทธ๋ํ ํํ์ ๋๋ค. Edge๋ Node์ Node๋ฅผ ์ฐ๊ฒฐํ ๊ฒ์ ๋งํ๋๋ฐ, ๊ทธ๋ํ์์์ ์์ง๋ ๊ทธ๋ค ์ฌ์ด์์ ์ ๋ฌ๋๋ ๋ค์ฐจ์ ๋ฐ์ดํฐ ๋ฐฐ์ด (ํ ์๋ผ๊ณ ํจ)์ ๋ํ๋ ๋๋ค.
TensorFlow์์๋ ํ ์๊ฐ ๋ฐ์ดํฐ์ ์ค์ฌ ๋จ์ ์์ ์ ์ํด์ผ ํฉ๋๋ค.
์๋ ์ฃผ์ด์ง ๊ทธ๋ฆผ์ผ๋ก ์ด๋ฌํ ๊ด๊ณ๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์, add๋ ๋ง์ ์ฐ์ฐ์ ๋ํ๋ด๋ ๋ ธ๋์ ๋๋ค. a์ b๋ ์ ๋ ฅ ํ ์์ด๊ณ c๋ ๊ฒฐ๊ณผ ํ ์์ ๋๋ค.
์ด๋ฐ ์ ์ฐํ ์ํคํ ์ฒ๋ฅผ ํตํด ํ๋์ API๋ก ๋ฐ์คํฌํฑ, ์๋ฒ ๋๋ ๋ชจ๋ฐ์ผ ์ฅ์น์ ํ๋ ์ด์์ CPU ๋๋ GPU์ ๊ณ์ฐ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. TensorFlow๋ ์ฌ๋ฌ API (Application Programming Interfaces)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋๋ ์ ์์ต๋๋ค.
Low level API:
- ์๋ฒฝํ ํ๋ก๊ทธ๋๋ฐ ์ ์ด
- ๊ธฐ๊ณ ํ์ต ์ฐ๊ตฌ์์๊ฒ ๊ถ์ฅ
- ๋ชจ๋ธ์ ์ ๋ฐํ๊ฒ ์ ์ด ํ ์ ์์ต๋๋ค.
- TensorFlow Core๋ TensorFlow์ ์ ์์ค API์ ๋๋ค.
High level API:
- TensorFlow ์ฝ์ด ์์ ๊ตฌ์ถ
- TensorFlow Core๋ณด๋ค ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.
- ๋ฐ๋ณต์ ์ธ ์์ ์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ์๋ณด๋ค ์ฝ๊ณ ์ผ๊ด๋๊ฒ ๋ง๋ค๊ธฐ
- tf.contrib.learn์ ์์ ๋ ๋ฒจ API์ ์์ ๋๋ค.
TensorFlow๋ ๊ณ์ฐ(computation)์ ๊ทธ๋ํ(graph)๋ก ํํํ๋ ํ๋ก๊ทธ๋๋ฐ ์์คํ ์ ๋๋ค. ๊ทธ๋ํ์ ๋ ธ๋(node)๋ ์ฐ์ฐ(op, operations์ ์ค์)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ํ๋์ ์ฐ์ฐ์ 0๊ฐ ์ด์์ Tensor๋ฅผ ์ทจํด ์ด๋ค ๊ณ์ฐ์ ํ ๋ค 0๊ฐ ์ด์์ Tensor๋ฅผ ๋ค์ ๋ฐํํฉ๋๋ค. Tensor๋ ํํ๋ฅผ ๊ฐ์ง ๋ค์ฐจ์ ๋ฐฐ์ด์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
TensorFlow์์ ๊ทธ๋ํ๋ ๊ณ์ฐ์ ๊ธฐ์ ํ ๊ฒ์ ๋๋ค. ์ด๋ค ๊ฒ์ด๋ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ๊ทธ๋ํ๋ฅผ Session์ ์ฌ๋ ค์ผ ํฉ๋๋ค. Session์ CPU๋ GPU ๊ฐ์ Devices์ ๊ทธ๋ํ ์ฐ์ฐ์ ์ฌ๋ฆฐ ๋ค ์ฐ์ฐ์ ์คํํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์ฐ์ฐ์ ์ํด ์์ฑ๋ ํ ์๋ฅผ ๋ฐํํ๋๋ฐ, ์ด ํ ์์ ํํ๋ ํ์ด์ฌ์์๋ numpy์ ndarray ๊ฐ์ฒด, C์ C++์์๋ tensor flow::Tensor ๊ฐ์ฒด์ ๋๋ค.