TensorFlow ๋ฒ์ ํธํ์ฑ
์ด ๋ฌธ์๋ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ TensorFlow(์ฝ๋ ๋๋ ๋ฐ์ดํฐ)์์ ํ์ ํธํ์ฑ์ด ํ์ํ ์ฌ์ฉ์, ๊ทธ๋ฆฌ๊ณ ํธํ์ฑ์ ์ ์งํ๋ฉด์ TensorFlow๋ฅผ ์์ ํ๋ ค๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค.
์ ์์ ๋ฒ์ ๋ 2.0
TensorFlow๋ ๊ณต๊ฐ API์ ์ ์์ ๋ฒ์ ๋ 2.0(semver)์ ์ค์ํฉ๋๋ค. TensorFlow์ ๊ฐ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ MAJOR.MINOR.PATCH
ํ์์
๋๋ค. ์ด๋ฅผํ
๋ฉด TensorFlow ๋ฒ์ 1.2.3์ MAJOR
๋ฒ์ 1, MINOR
๋ฒ์ 2, PATCH
๋ฒ์ 3์ ๋ปํฉ๋๋ค. ๊ฐ ์ซ์์ ๋ณํ๋ ๋ค์์ ๋ปํฉ๋๋ค:
MAJOR: ํ์ ํธํ์ฑ์ด ์๋ ๋ณ๋์ผ ์ ์์ต๋๋ค. ์ด์ ์ฃผ(major) ๋ฒ์ ์์ ๋์ํ์๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ ์๋ก์ด ๋ฒ์ ์์ ๋์ํ์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋, ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ธฐ์กด TensorFlow ๊ทธ๋ํ์ ์ฒดํฌํฌ์ธํธ๋ฅผ ์๋ก์ด ๋ฒ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์๋ ์์ต๋๋ค. ์์ธํ ์ฌํญ์ ๊ทธ๋ํ์ ์ฒดํฌํฌ์ธํธ์ ํธํ์ฑ์ ์ฐธ๊ณ ํ์ธ์.
MINOR: ํ์ ํธํ๋๋ ํน์ฑ, ์๋ ๊ฐ์ ๋ฑ์ ๋๋ค. ์ด์ ๋ถ(minor) ๋ฒ์ ๋ฐ ์ด์ ๋ถ ๋ฒ์ ์ ๋น์คํ์ ์ธ ๊ณต๊ฐ API๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค. ๊ณต๊ฐ API์ ๋ฌด์์ด ํฌํจ๋๊ณ ํฌํจ๋์ง ์๋์ง์ ๋ํด์๋ ํฌํจ๋๋ ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
PATCH: ํ์ ํธํ๋๋ ๋ฒ๊ทธ ํฝ์ค
์ด๋ฅผํ ๋ฉด ๋ฆด๋ฆฌ์ฆ 1.0.0์ ๋ฆด๋ฆฌ์ฆ 0.12.1์์ ํ์ ํธํ์ฑ์ด ์๋ ๋ณ๋์ฌํญ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋, ๋ฆด๋ฆฌ์ฆ 1.1.1์ ๋ฆด๋ฆฌ์ฆ 1.0.0๊ณผ ํ์ ํธํ์ฑ์ด ์์ต๋๋ค.
ํฌํจ๋๋ ์ฌํญ
TensorFlow์ ๊ณต๊ฐ API๋ง์ด ๋ถ ๋ฒ์ ๋ฐ ํจ์น ๋ฒ์ ์์ ํ์ ํธํ์ฑ์ ๊ฐ์ง๋๋ค. ๊ณต๊ฐ API๋ ๋ค์์ ํฌํจํฉ๋๋ค.
tensorflow
๋ชจ๋๊ณผ ๊ทธ ํ์ ๋ชจ๋์ ์๋ ํด๋์ค, ๋ชจ๋ ๋ฌธ์ํ๋ Python ํจ์. ๋จ ๋ค์์ ์ ์ธํฉ๋๋ค.๋น๊ณต๊ฐ ์ฌ๋ณผ:
_
๋ก ์์ํ๋ ํจ์๋ ํด๋์ค ๋ฑ์คํ์ ์ธ ๋ฐ
tf.contrib
์ฌ๋ณผ, ์์ธํ ๋ด์ฉ์ ์๋ ๋ด์ฉ ์ฐธ์กฐ
examples/
์tools/
๊ฒฝ๋ก์ ์๋ ์ฝ๋๋tensorflow
Python ๋ชจ๋์ ํตํด ์ ๊ทผํ ์ ์๊ณ ๋ฐ๋ผ์ ํธํ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.ํ ์ฌ๋ณผ์ด
tensorflow
Python ๋ชจ๋์ด๋ ์๋ธ ๋ชจ๋์์ ์ฌ์ฉ๊ฐ๋ฅ ํ์ง๋ง ๋ฌธ์ํ๋์ง๋ ์์ ๊ฒฝ์ฐ, ๊ณต๊ฐ API์ ์ผ๋ถ๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค.ํธํ์ฑ API(Python์
tf.compat
๋ชจ๋). ์ฃผ ๋ฒ์ ์์ ์ฌ์ฉ์๋ค์ด ์๋ก์ด ์ฃผ ๋ฒ์ ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ ๊ฒ์ ๋์์ฃผ๋ ์ ํธ๋ฆฌํฐ์ ์ถ๊ฐ์ ์ธ ์๋ํฌ์ธํธ๊ฐ ๊ณต๊ฐ๋ ์๋ ์์ต๋๋ค. ์ด๋ฌํ API ์ฌ๋ณผ๋ค์ ์์ด์ง๊ณ ์ง์๋์ง ์์ง๋ง(์ฆ, ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ง ์๊ณ ์ทจ์ฝ์ฑ ์ด์ธ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ง ์์) ํธํ์ฑ์ ๋ณด์ฅ๋ฉ๋๋ค.TensorFlow C API:
TensorFlow Lite C API:
๋ค์์ ํ๋กํ ์ฝ ๋ฒํผ ํ์ผ:
ํฌํจ๋์ง ์๋ ์ฌํญ
TensorFlow์ ์ผ๋ถ๋ถ์ ์ด๋ค ๋ฉด์์๋ ํ์ ํธํ์ฑ์ด ์๋๋ก ๋ณ๋๋ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
์คํ์ ์ธ API: ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด, ์ด๋ค API ์ฌ๋ณผ๋ค์ ์คํ์ ์ธ ๊ฒ์ผ๋ก ๊ท์ ํ๊ณ ํ์ ํธํ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ํนํ ๋ค์์ ์ด๋ ํ ํธํ์ฑ ๋ณด์ฅ๋ ํ์ง ์์ต๋๋ค.
tf.contrib
๋ชจ๋์ด๋ ์๋ธ ๋ชจ๋์ ์๋ ๋ชจ๋ ์ฌ๋ณผexperimental
๋๋Experimental
์ด๋ผ๋ ์ด๋ฆ์ ํฌํจํ๋ ๋ชจ๋ ์ฌ๋ณผ(๋ชจ๋, ํจ์, ๋งค๊ฐ๋ณ์, ์์ฑ, ํด๋์ค, ์์); ๋๋๋ชจ๋์ด๋ ํด๋์ค๊ฐ ํฌํจํ๋ ์ ๋ ํ๊ธฐ๊ฐ ๊ทธ ์์ฒด๋ก ์คํ์ ์ธ ๋ชจ๋ ์ฌ๋ณผ.
experimental
๋ก ๋ถ๋ฅ๋๋ ๋ชจ๋ ํ๋กํ ์ฝ ๋ฒํผ์ ํ๋๋ ์๋ธ ๋ฉ์์ง ํฌํจ.
๋ค๋ฅธ ์ธ์ด: Python๊ณผ C ์ด์ธ์ ๋ค์๊ณผ ๊ฐ์ TensorFlow API ์ธ์ด:
C++(
tensorflow/cc
์ ํค๋ ํ์ผ์ ํตํด ๊ณต๊ฐ๋์ด ์์)
ํฉ์ฑ ์ฐ์ฐ ์ธ๋ถ์ฌํญ: Python์ ๋ง์ ๊ณต๊ฐ ํจ์๊ฐ ์ผ๋ถ ๊ทธ๋ํ์ ์์ ์ฐ์ฐ์ ํ์ฅ๋ฉ๋๋ค, ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ธ๋ถ์ฌํญ์
GraphDef
๋ก ๋์คํฌ์ ์ ์ฅ๋๋ ๊ทธ๋ํ์ ํ ๋ถ๋ถ์ ๋๋ค. ์ด๋ฌํ ์ธ๋ถ์ฌํญ์ ๋ถ(minor) ๋ฒ์ ์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ํนํ, ๊ทธ๋ํ๊ฐ ์ ํํ ๋งค์นญ์ด ๋๋์ง ํ์ธํ๋ ํ๊ท ํ ์คํธ๋ ๊ทธ๋ํ์ ํ๋์ด ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ธฐ์กด์ ์ฒดํฌํฌ์ธํธ๊ฐ ์์ง ๋์ํ ์ง๋ผ๋ ์๋ก ๋ค๋ฅธ ๋ถ ๋ฒ์ ์์๋ ํธํ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.๋ถ๋ ์์์ ์ธ๋ถ์ฌํญ: ์ฐ์ฐ์ ํตํด ๊ณ์ฐ๋๋ ํน์ ๋ถ๋ ์์์ ๊ฐ์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ๊ณ์ฐ๋ ํน์ ๋นํธ์ ์์กดํ๋ฉด ์๋๊ณ , ๊ทผ์ฌ์ ์ธ ์ ๋ฐ๋์ ์์น์ ์์ ์ฑ์ ์ด์ ์ ๋์ด์ผ ํฉ๋๋ค. ๋ถ ๋ฒ์ ๊ณผ ํจ์น์์ ์์์ ๋ณํ๋ ์๋นํ ์ ํ๋๋ฅผ ๋์ ๋๋ค. ๋จธ์ ๋ฌ๋์์ ํน์ ๊ณต์์ ํฅ์๋ ์ ํ๋๋ ์ ์ฒด ์์คํ ์์์ ์ ํ๋๋ฅผ ๋ฎ์ถ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
๋๋ค ์ซ์: ํน์ ํ ๋๋ค ์ซ์๊ฐ random ops๋ฅผ ํตํด ๊ณ์ฐ๋๊ณ ์ธ์ ๋ ์ง ๋ฐ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ๊ณ์ฐ๋ ํน์ ๋นํธ์ ์์กดํ์ง ๋ง๊ณ , ๊ทผ์ฌ์ ์ผ๋ก ์ ์ ํ ๋ถํฌ์ ํต๊ณ์ ๊ฐ๋์ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋, ํจ์น ๋ฒ์ ์์๋ ํน์ ํ ๋นํธ๋ฅผ ๊ฑฐ์ ๋ฐ๊พธ์ง ์๋๋ก ํฉ๋๋ค. ๋น์ฐํ ์ด๋ฌํ ๋ชจ๋ ๋ณ๋์ฌํญ์ ๋ฌธ์ํํฉ๋๋ค.
๋ถ์ฐ Tensorflow์์์ ๋ฒ์ ์๊ฐ๋ฆผ: ํ๋์ ํด๋ฌ์คํฐ์์ ์๋ก ๋ค๋ฅธ ๋ ๋ฒ์ ์ Tensorflow๋ฅผ ์คํํ๋ ๊ฒ์ ์ง์๋์ง ์์ต๋๋ค. ์์ด์ด ํ๋กํ ์ฝ(wire protocol)์ ํ์ ํธํ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋ฒ๊ทธ: ํ์ฌ์ ๊ตฌํ์ด ๋ช ๋ฐฑํ๊ฒ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ, ํ์ ํธํ์ฑ์ ์ ์งํ์ง ์๋ ๋ณ๋์ฌํญ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฌธ์์ ๊ตฌํ์ด ์๋ก ๋ชจ์๋๋ ๊ฒฝ์ฐ ๋๋ ์ ์๋ ค์ ธ ์๊ณ ์ ์ ์๋ ์๋๋ฅผ ๊ฐ์ง ํ๋์ด ๋ฒ๊ทธ ๋๋ฌธ์ ์ ์ ํ๊ฒ ๊ตฌํ๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ์ด์ ํด๋น๋ฉ๋๋ค. ์ด๋ฅผํ ๋ฉด, ์ ์๋ ค์ง ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ด ์ตํฐ๋ง์ด์ ์ ๊ตฌํ๋์ด์ผ ํ์ง๋ง ๋ฒ๊ทธ ๋๋ฌธ์ ๊ทธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋งค์น๋์ง ์๋๋ค๋ฉด, ์ตํฐ๋ง์ด์ ๋ฅผ ์์ ํ ๊ฒ์ ๋๋ค. ์์ ์ฌํญ์ ํตํฉ์ ์ํด์ ์๋ชป ๋์ํ๋ ๋ถ๋ถ์ ์์กดํ๋ ์ฝ๋๋ฅผ ํฌํจํฉ๋๋ค. ๋ฆด๋ฆฌ์ฆ ๋ ธํธ์ ๊ทธ๋ฌํ ๋ณ๋์ฌํญ์ด ๊ธฐ๋ก๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ๋์ง ์๋ API: ๋น์ฌ๋ ๋ฌธ์ํ๋ ์ฉ๋๊ฐ ์๋ API์ ๋ํด ํ์ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ ์ํํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํฉ๋๋ค(GitHub ๊ฒ์์ ํตํด TensorFlow ์ฌ์ฉ ๊ฐ์ฌ๋ฅผ ์ํํจ). ์ด๋ฌํ ๋ณ๊ฒฝ์ ํ๊ธฐ ์ ์ announce@ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๋ณ๊ฒฝ ์์ฌ๋ฅผ ๋ฐํํ์ฌ ์ค๋จ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ(ํด๋น๋๋ ๊ฒฝ์ฐ)์ ์ ๊ณตํ๊ณ 2์ฃผ ๋์ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ์ปค๋ฎค๋ํฐ์์ ํผ๋๋ฐฑ์ ๊ณต์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ค๋๋ค.
์ค๋ฅ ๋์: ์ค๋ฅ๋ฅผ ์ค๋ฅ๊ฐ ์๋ ๋์์ผ๋ก ๋์ฒดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ค๋ฅ๊ฐ ๋ฌธ์ํ๋์ด ์์ด๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋๋ก ํจ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ํ ์ค๋ฅ ๋ฉ์์ง์ ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ ๊ถ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ด์ ํจ๊ป, ๋ฌธ์์ ํน์ ์ค๋ฅ ์กฐ๊ฑด์ ๋ํ ์์ธ ์ ํ์ด ์ง์ ๋์ด ์์ง ์์ผ๋ฉด ์ค๋ฅ ์ ํ์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ ์ฅ๋ ๋ชจ๋ธ, ๊ทธ๋ํ ๋ฐ ์ฒดํฌํฌ์ธํธ์ ํธํ์ฑ
์ ์ฅ๋ ๋ชจ๋ธ์ TensorFlow ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ง๋ ฌํ๋ ํ์์ด ์ข์ต๋๋ค. ์ ์ฅ๋ ๋ชจ๋ธ์ ๋ ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํ๋ ์ด์์ ๊ทธ๋ํ๊ฐ GraphDefs
์ ์ฒดํฌํฌ์ธํธ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ๊ทธ๋ํ๋ ์คํํ ์ฐ์ฐ์ ๋ฐ์ดํฐ ํ๋ฆ๋ฅผ ๊ธฐ์ ํ๊ณ ์ฒดํฌํฌ์ธํธ๋ ๊ทธ๋ํ ๋ณ์๋ค์ ์ ์ฅ๋ ํ
์๊ฐ์ ํฌํจํฉ๋๋ค.
๋ง์ TensorFlow ์ฌ์ฉ์๋ค์ด ์ ์ฅ๋ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ๋์ค์ ๋ฆด๋ฆฌ์ฆ๋ TensorFlow์์ ๋ก๋ํ์ฌ ์คํํฉ๋๋ค. semver์ ๋ฐ๋ผ ํ ๋ฒ์ ์ TensorFlow์์ ์์ฑ๋ ๋ชจ๋ธ์ด ๊ฐ์ ์ฃผ ๋ฒ์ ์ ์ํ ๋์ค ๋ฒ์ ์ TensorFlow์์ ๋ก๋๋๊ณ ํ๊ฐ๋ ์ ์์ต๋๋ค.
์ง์ํ๋ ์ ์ฅ๋ ๋ชจ๋ธ์์๋ ์ถ๊ฐ์ ์ธ ๋ณด์ฅ์ด ์์ต๋๋ค. TensorFlow ์ฃผ ๋ฒ์ N
์์ ์ฌ๋ผ์ง์ง ์๊ณ ์คํ์ ์ด์ง๋ ์์ผ๋ฉฐ ํธํ๋์ง ์๋ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ ์ ์ฅ๋ ๋ชจ๋ธ์ ๋ฒ์ N
์์ ์ง์๋ฉ๋๋ค. TensorFlow ์ฃผ ๋ฒ์ N
์์ ์ง์ํ๋ ๋ชจ๋ ์ ์ฅ๋ ๋ชจ๋ธ์ TensorFlow ์ฃผ ๋ฒ์ N+1
์์๋ ๋ก๋๋๊ณ ์คํ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋, ๊ทธ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ์์ ํ๊ธฐ ์ํด ํ์ํ ๊ธฐ๋ฅ๋ค์ ๋ ์ด์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ์ด ๋ณด์ฅ์ ์์ ํ์ง ์์ ์ ์ฅ๋ ๋ชจ๋ธ์๋ง ์ ์ฉ๋ฉ๋๋ค.
๊ฐ๋ฅํ๋ฉด ํ์ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๊ฒ์ด๋ฏ๋ก ์ง๋ ฌํ๋ ํ์ผ๋ค์ ์ค๋ซ๋์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
GraphDef ํธํ์ฑ
๊ทธ๋ํ๋ GraphDef
ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ํตํด ์ง๋ ฌํ๋ฉ๋๋ค. ์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๊ทธ๋ํ ๋ณ๊ฒฝ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๊ฐ GraphDef
์๋ TensorFlow ๋ฒ์ ๊ณผ ๋ณ๋๋ก ๋ฒ์ ๋ฒํธ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด GraphDef
๋ฒ์ 17์์๋ reciprocal
๋ฅผ ์ํด inv
op๋ฅผ ์์ด์ต๋๋ค. ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
TensorFlow์ ๊ฐ ๋ฒ์ ์
GraphDef
๋ฒ์ ์ ๊ฐ๊ฒฉ์ ์ง์ํฉ๋๋ค. ์ด ๊ฐ๊ฒฉ์ ํจ์น ๋ฆด๋ฆฌ์ค ์ฌ์ด์์ ์ผ์ ํ๋ฉฐ ๋ถ ๋ฆด๋ฆฌ์ค์์๋ง ์ฆ๊ฐํฉ๋๋ค.GraphDef
๋ฒ์ ์ ๋ํ ์ง์ ์ค๋จ์ TensorFlow์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์ ๋ํด์๋ง ๋ฐ์ํฉ๋๋ค(์ ์ฅ๋ ๋ชจ๋ธ์ ๋ํด ๋ณด์ฅ๋๋ ๋ฒ์ ์ง์๊ณผ๋ง ์ผ์นํจ).์๋ก ์์ฑ๋ ๊ทธ๋ํ์๋ ์ต์
GraphDef
๋ฒ์ ๋ฒํธ๊ฐ ํ ๋น๋ฉ๋๋ค.ํน์ ๋ฒ์ ์ TensorFlow๊ฐ ๊ทธ๋ํ์
GraphDef
๋ฒ์ ์ ์ง์ํ๋ ๊ฒฝ์ฐ, TensorFlow์ ์ฃผ์ ๋ฒ์ ์ ๊ด๊ณ์์ด ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ TensorFlow ๋ฒ์ ๊ณผ ๋์ผํ ๋์์ผ๋ก ๋ก๋ ๋ฐ ํ๊ฐ๋ฉ๋๋ค(์์ ์ค๋ช ํ ๋๋ก ๋ถ๋ ์์์ ์ซ์ ์ ๋ณด์ ๋์๋ ์ ์ธ). ํนํ, ํ ๋ฒ์ ์ TensorFlow(์: ์ ์ฅ๋ ๋ชจ๋ธ์ ๊ฒฝ์ฐ)์ ์ฒดํฌํฌ์ธํธ ํ์ผ๊ณผ ํธํ๋๋ GraphDef๋ GraphDef๊ฐ ์ง์๋๋ ํ ํ์ ๋ฒ์ ์์ ํด๋น ์ฒดํฌํฌ์ธํธ์ ํธํ๋ฉ๋๋ค.์ด๋ GraphDefs(๋ฐ ์ ์ฅ๋ ๋ชจ๋ธ)์ ์ง๋ ฌํ๋ ๊ทธ๋ํ์๋ง ์ ์ฉ๋ฉ๋๋ค. ์ฒดํฌํฌ์ธํธ๋ฅผ ์ฝ๋ Code๋ ๋ค๋ฅธ ๋ฒ์ ์ TensorFlow๋ฅผ ์คํํ๋ ๋์ผํ ์ฝ๋์์ ์์ฑ๋ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ฝ์ง ๋ชปํ ์ ์์ต๋๋ค.
๋ถ ๋ฆด๋ฆฌ์ค์์
GraphDef
์์ชฝ ๊ฒฝ๊ณ๊ฐ X๋ก ์ฆ๊ฐํ๋ฉด ์๋์ชฝ ๊ฒฝ๊ณ๊ฐ X๊น์ง ์ฆ๊ฐํ๋ ๋ฐ๋ ์ต์ 6๊ฐ์์ด ๊ฑธ๋ฆฝ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค(์ฌ๊ธฐ์๋ ๊ฐ์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ฌ์ฉํจ).TensorFlow 1.2๋
GraphDef
๋ฒ์ 4๋ถํฐ 7๊น์ง ์ง์ํ ์ ์์ต๋๋ค.TensorFlow 1.3์
GraphDef
๋ฒ์ 8์ ์ถ๊ฐํ๊ณ ๋ฒ์ 4๋ถํฐ 8๊น์ง ์ง์ํ ์ ์์ต๋๋ค.์ ์ด๋ 6๊ฐ์ ํ, TensorFlow 2.0.0์ ๋ฒ์ 4๋ถํฐ 7๊น์ง์ ๋ํ ์ง์์ ์ค๋จํ๊ณ ๋ฒ์ 8๋ง ๋จ๊ธธ ์ ์์ต๋๋ค.
TensorFlow์ ์ฃผ์ ๋ฒ์ ์ ์ผ๋ฐ์ ์ผ๋ก 6๊ฐ์ ์ด์ ๊ฐ๊ฒฉ์ ๋๊ณ ์ถ์๋๊ธฐ ๋๋ฌธ์ ์์ ์ค๋ช ํ ์ง์๋๋ ์ ์ฅ๋ ๋ชจ๋ธ์ ๋ํ ๋ณด์ฆ์ GraphDefs์ ๋ํ 6๊ฐ์ ๋ณด์ฆ๋ณด๋ค ํจ์ฌ ๊ฐ๋ ฅํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, GraphDef
๋ฒ์ ์ ๋ํ ์ง์์ด ์ค๋จ๋๋ฉด ๊ทธ๋ํ๋ฅผ ์ง์๋๋ ์ต์ GraphDef
๋ฒ์ ์ผ๋ก ์๋ ๋ณํํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ๊ฒ์
๋๋ค.
TensorFlow ํ์ฅ์ ๊ทธ๋ํ ๋ฐ ์ฒดํฌํฌ์ธํธ ํธํ์ฑ
์ด ์น์
์ ์ฐ์ฐ ์ถ๊ฐ, ์ฐ์ฐ ์ ๊ฑฐ ๋๋ ๊ธฐ์กด ์ฐ์ฐ์ ๊ธฐ๋ฅ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ด GraphDef
ํ์์ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ ์ํํ๋ ๊ฒฝ์ฐ์๋ง ๊ด๋ จ๋ฉ๋๋ค. ๋๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ๋ ์ด์ ์น์
์ ๋ด์ฉ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
์ญ๋ฐฉํฅ ๋ฐ ๋ถ๋ถ ์๋ฐฉํฅ ํธํ์ฑ
๋ฒ์ ๋ ๊ณํ์ ์ธ ๊ฐ์ง ์๊ฑด:
์ด์ ๋ฒ์ ์ TensorFlow์์ ๋ง๋ค์ด์ง ๊ทธ๋ํ์ ์ฒดํฌํฌ์ธํธ์ ๋ก๋ฉ์ ์ง์ํ๊ธฐ ์ํ ํ์ ํธํ์ฑ.
๊ทธ๋ํ๋ ์ฒดํฌํฌ์ธํธ์ ์์ฐ์๊ฐ ์๋น์ ์ด์ ์ ์ ๋ฒ์ ์ TensorFlow๋ก ์ ๊ทธ๋ ์ด๋๋๋ ์๋๋ฆฌ์ค๋ฅผ ์ํ ์์ ํธํ์ฑ.
TensorFlow๊ฐ ํธํํ์ง ์๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ๋๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํจ. ์ด๋ฅผํ ๋ฉด, ์ฐ์ฐ์ ์ ๊ฑฐํ๊ฑฐ๋ ์์ฑ์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํจ.
GraphDef
๋ฒ์ ๋ฉ์ปค๋์ฆ์ TensorFlow ๋ฒ์ ๊ณผ๋ ๋ถ๋ฆฌ๋์ด ์์ง๋ง, GraphDef
ํ์์ ํ์ ํธํ๋์ง ์๋ ๋ณ๋์ฌํญ์ ์ ์์ ๋ฒ์ ๋์์ ์ ํ๋ฉ๋๋ค. ์ฆ, TensorFlow ์ฃผ (MAJOR)
๋ฒ์ ๊ฐ(์ด๋ฅผํ
๋ฉด 1.7
๊ณผ 2.0
) ๊ธฐ๋ฅ์ด ์ ๊ฑฐ๋๊ฑฐ๋ ๋ณํ ์ ์์ต๋๋ค. ์์ ํธํ์ฑ์ ํจ์น ๋ฆด๋ฆฌ์ฆ(์ด๋ฅผํ
๋ฉด 1.x.1
์์ 1.x.2
) ์์์ ๊ฐ์ ๋ฉ๋๋ค.
์์ ํธํ์ฑ๊ณผ ํ์ ํธํ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ํ์์ ๋ณ๋์ ์ธ์ ๊ฐ์ ํด์ผ ํ ์ง ์๊ธฐ ์ํด์, ๊ทธ๋ํ์ ์ฒดํฌํฌ์ธํธ๋ ์ธ์ ์์ฑ๋์๋์ง์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋๋ค. ์๋์ ์น์
์ TensorFlow ๊ตฌํ๊ณผ GraphDef
๋ฒ์ ์
์ ๋ํ ๊ฐ์ด๋๋ผ์ธ์ด ์์ธํ ๋์ ์์ต๋๋ค.
๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ๋ฒ์ ๊ณํ
๊ทธ๋ํ์ ์ฒดํฌํฌ์ธํธ์๋ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ฒ์ ์ด ์์ต๋๋ค. ๋ ๋ฐ์ดํฐ ํ์์ ์๋ก ๋ค๋ฅธ ๋น์จ๋ก ๋ฒ์ ์
๋๊ณ ๋ํ TensorFlow์๋ ์๋ก ๋ค๋ฅธ ๋น์จ๋ก ๋ฒ์ ์
๋ฉ๋๋ค. ๋ ๋ฒ์ ๋ ์์คํ
๋ชจ๋ core/public/version.h
์์ ์ ์๋ฉ๋๋ค. ์ ๋ฒ์ ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ์ด๋ค ์ฌํญ์ด ๋ณํ๊ณ ๋ ์ง๋ ์ด๋ป๊ฒ ๋๋ ์ง๊ฐ ํค๋์ ์ถ๊ฐ๋ฉ๋๋ค.
๋ฐ์ดํฐ, ์์ฐ์ ๋ฐ ์๋น์
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๋ฒ์ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํ ๊ฒ์ ๋๋ค.
์์ฐ์: ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐ์ด๋๋ฆฌ์ ๋๋ค. ์์ฐ์๋ ๋ฒ์ (
producer
) ๋ฐ ํธํ๋๋ ์ต์ ์๋น์ ๋ฒ์ (min_consumer
)์ ๊ฐ์ง๊ณ ์์ต๋๋ค.์๋น์: ๋ฐ์ดํฐ๋ฅผ ์๋นํ๋ ๋ฐ์ด๋๋ฆฌ์ ๋๋ค. ์๋น์๋ ๋ฒ์ (
consumer
) ๋ฐ ํธํ๋๋ ์ต์ ์์ฐ์ ๋ฒ์ (min_producer
)์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ์์ฐ์
์ ํธํ์ด ๋๋ min_consumer
, ๊ทธ๋ฆฌ๊ณ ํ์ฉ๋์ง ์์ bad_consumers
๋ฒ์ ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋กํ๋ VersionDef versions
ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก, ์์ฐ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๋ฉด ๋ฐ์ดํฐ๋ ์์ฐ์์ producer
์ min_consumer
๋ฒ์ ์ ๋ฌผ๋ ค ๋ฐ์ต๋๋ค. ํน์ ํ ์๋น์ ๋ฒ์ ์ด ๋ฒ๊ทธ๋ฅผ ํฌํจํ๊ณ ์๊ฑฐ๋ ๋ฐ๋์ ํผํด์ผ ํ๋ค๋ฉด bad_consumers
๊ฐ ์ค์ ๋ ์ ์์ต๋๋ค. ์๋น์๋ ๋ค์์ด ๋ชจ๋ ์ฑ๋ฆฝํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ค์ผ ์ ์์ต๋๋ค.
consumer
>= ๋ฐ์ดํฐ์min_consumer
๋ฐ์ดํฐ์
producer
>= ์๋น์์min_producer
๋ฐ์ดํฐ์
bad_consumers
์ ์๋consumer
์์ฐ์์ ์๋น์ ๋ชจ๋ ๊ฐ์ TensorFlow ์ฝ๋๋ฒ ์ด์ค๋ก๋ถํฐ ๋์จ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, core/public/version.h
๋ ๋ฌธ๋งฅ๊ณผ min_consumer
๋ฐ min_producer
(์์ฐ์์ ์๋น์ ๊ฐ๊ฐ์ด ํ์๋ก ํ๋)์ ๋ฐ๋ผ producer
๋ consumer
๋ ์ค ํ๋๋ก ์ทจ๊ธ๋๋ ๋ฉ์ธ ๋ฐ์ดํฐ ๋ฒ์ ์ ํฌํจํฉ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
GraphDef
๋ฒ์ ์ผ๋กTF_GRAPH_DEF_VERSION
,TF_GRAPH_DEF_VERSION_MIN_CONSUMER
,TF_GRAPH_DEF_VERSION_MIN_PRODUCER
๊ฐ ์์ต๋๋ค.์ฒดํฌํฌ์ธํธ ๋ฒ์ ์ผ๋ก
TF_CHECKPOINT_VERSION
,TF_CHECKPOINT_VERSION_MIN_CONSUMER
,TF_CHECKPOINT_VERSION_MIN_PRODUCER
๊ฐ ์์ต๋๋ค.
๊ธฐ์กด ์ฐ์ฐ์ ์๋ก์ด ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ถ๊ฐ
๋ค์์ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๋ฉด ์ผ๋ จ์ ์ฐ์ฐ์ด ๋ณํ์ง ์์์ ๋๋ง ์์ ํธํ์ฑ์ด ์๊ฒ ๋ฉ๋๋ค.
์์ ํธํ์ฑ์ด ํ์ํ๋ค๋ฉด,
SavedModelBuilder
ํด๋์ค์tf.saved_model.SavedModelBuilder.add_meta_graph_and_variables
์tf.saved_model.SavedModelBuilder.add_meta_graph
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋tf.estimator.Estimator.export_saved_model
์ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ ๋ด๋ณด๋ด๋ ๋์strip_default_attrs
๋ฅผTrue
๋ก ์ค์ ํฉ๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ธ์ ์์ฑ/๋ด๋ณด๋ผ ๋ ๊ธฐ๋ณธ ๊ฐ ์์ฑ์ด ์ ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋ ๋ ๋ด๋ณด๋ธ
tf.MetaGraphDef
์ ์ op ์์ฑ์ด ํฌํจ๋์ง ์์ต๋๋ค.์ด ์ปจํธ๋กค์ ์ฌ์ฉํ๋ฉด ์ค๋๋ ์๋น์(์๋ฅผ๋ค๋ฉด, ํ๋ จ ๋ฐ์ด๋๋ฆฌ์ ๋ค์ณ์ง ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ๊ณตํ๋)๊ฐ ๋ชจ๋ธ์ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ๊ณ์ํ ์ ์๊ฒ ํ๊ณ ๋ชจ๋ธ ์๋น์ค ์ค๋จ์ ๋ง์ ์ ์์ต๋๋ค.
GraphDef ๋ฒ์ ์
์ด ์น์
์ GraphDef
ํ์์ ๋ค๋ฅธ ํ์
์ ๋ณ๋์ฌํญ์ ๋ง๋ค๊ธฐ ์ํ ๋ฒ์ ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
ํ๋์ ์ฐ์ฐ ์ถ๊ฐํ๊ธฐ
GraphDef
๋ฒ์ ์ ๋ฐ๊พธ์ง ์๊ณ ์๋น์์ ์์ฐ์์ ๋์์ ์๋ก์ด ์ฐ์ฐ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฌํ ์ข
๋ฅ์ ๋ณ๋์ฌํญ์ ์๋์ ์ผ๋ก ํ์ ํธํ์ฑ์ด ์๊ณ ๊ธฐ์กด ์์ฐ์ ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์๊ธฐ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง๋ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์์ ํธํ ๊ณํ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
์ฐ์ฐ์ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ์กด Python ๋ํผ๋ก ๋ฐ๊พธ๊ธฐ
์๋ก์ด ์๋น์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ
GraphDef
๋ฒ์ ์ ์ฌ๋ฆฝ๋๋ค.์ด์ ์ ๋์ํ์ง ์์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ํผ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ํผ๋ ์ง๊ธ ์ ๋ฐ์ดํธ ๊ฐ๋ฅํฉ๋๋ค.
Python ๋ํผ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค. ์ด ์ฐ์ฐ์ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ธ์ ๊ณ ์ฅ๋์ง ์์์ผ ํ๋ฏ๋ก
min_consumer
๋ฅผ ์ฌ๋ฆฌ์ง ๋ง์ธ์.
์ฐ์ฐ์ ๊ธฐ๋ฅ์ ์ ๊ฑฐํ๊ฑฐ๋ ์ ํํ๊ธฐ
๊ธ์ง๋ ์ฐ์ฐ์ด๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ธฐ ์ํด ๋ชจ๋ ์์ฐ์ ์คํฌ๋ฆฝํธ(TensorFlow ์์ฒด๊ฐ ์๋)๋ฅผ ๊ณ ์ ํฉ๋๋ค.
GraphDef
๋ฒ์ ์ ์ฌ๋ฆฌ๊ณ ์ ๋ฒ์ ์ GraphDef๋ ๊ทธ ์ด์์์ ์ ๊ฑฐ๋ ์ฐ์ฐ์ด๋ ๊ธฐ๋ฅ์ ๊ธ์งํ๋ ์๋ก์ด ์๋น์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ธ์. ๊ฐ๋ฅํ๋ค๋ฉด TensorFlow์์ ๊ธ์ง๋ ๊ธฐ๋ฅ์ผ๋กGraphDefs
๋ฅผ ๋ง๋ค์ง ์๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ์ํดREGISTER_OP(...).Deprecated(deprecated_at_version, message)
๋ฅผ ์ถ๊ฐํ์ธ์.ํ์ ํธํ์ฑ์ ๋ชฉ์ ์ผ๋ก ์ฃผ ๋ฆด๋ฆฌ์ฆ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
(2)์์์ GraphDef ๋ฒ์ ์์
min_producer
๋ฅผ ์ฌ๋ฆฌ๊ณ ๊ธฐ๋ฅ์ ์์ ํ ์ ๊ฑฐํฉ๋๋ค.
์ฐ์ฐ์ ๊ธฐ๋ฅ ๋ฐ๊พธ๊ธฐ
SomethingV2
์ ๊ฐ์ด ๋น์ทํ ์ฐ์ฐ์ ์ด๋ฆ์ ์ถ๊ฐํ๋ฉฐ ์ด๋ฅผ ์ํ ์ ์ฐจ๋ฅผ ๊ฑฐ์น๊ณ ๊ธฐ์กด Python ๋ํผ๊ฐ ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ ํํ์ธ์. Python ๋ํผ๋ฅผ ๋ณ๊ฒฝํ ๋ ์์ ํธํ์ฑ ํ์ธ์ ์ํด compat.py์ ์๋ ์ ์ ์ฌํญ์ ํ์ธํ์ธ์.์์ ์ ์ฐ์ฐ์ ์ ๊ฑฐํฉ๋๋ค(ํ์ ํธํ์ฑ ๋๋ฌธ์ ์ฃผ ๋ฒ์ ์ด ๋ณ๊ฒฝ๋ ๋๋ง ๋ฐ์).
์์ ์ ์ฐ์ฐ์ ์ฌ์ฉํ๋ ์๋น์๋ฅผ ๋ฐฐ์ ํ๊ธฐ ์ํด
min_consumer
๋ฅผ ์ฌ๋ฆฌ๊ณ ์์ ์ฐ์ฐ์SomethingV2
๋ฅผ ์ํ ๋ณ์นญ์ ๋ฌ์์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด Python ๋ํผ๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ๋ณํํ๋ ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ธ์.SomethingV2
๋ฅผ ์ ๊ฑฐํ๋ ์ ์ฐจ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
์์ ํ์ง ์์ ์๋น์ ๋ฒ์ ๊ธ์งํ๊ธฐ
GraphDef
๋ฒ์ ์ ์ถฉ๋์ํค๊ณ ๋์ ๋ฒ์ ์ ๋ชจ๋ ์๋ก์ด GraphDef์bad_consumers
์ ์ถ๊ฐํฉ๋๋ค. ๊ฐ๋ฅํ๋ฉด ํน์ ํ ์ฐ์ฐ์ด๋ ๋น์ทํ ๊ฒ๋ค์ ํฌํจํ๋ GraphDef์๋งbad_consumers
๋ฅผ ์ถ๊ฐํฉ๋๋ค.๊ธฐ์กด ์๋น์๊ฐ ๋์ ๋ฒ์ ์ธ ๊ฒฝ์ฐ, ์ต๋ํ ๋น ๋ฅด๊ฒ ์ ๊ฑฐํฉ๋๋ค.