์ด๋ฒˆ Tensorflow Summit 2019์—์„œ Tensorflow 2.0 alpha๋ฒ„์ „์ด ๊ณต๊ฐœ ๋˜์—ˆ๋Š”๋ฐ์š”,

๊ธฐ์กด์— tensorflow๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋”ฅ๋Ÿฌ๋‹์„ ๊ฐœ๋ฐœํ•˜๋˜ ์‚ฌ๋žŒ์ด๋ผ๋ฉด,

์ฒด๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ํ™• ๋ฐ”๋€ ๋ถ€๋ถ„์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

์šฐ์„ , ๊ธฐ๋ณธ์ ์œผ๋กœ tensorflow์˜ ๋™์ž‘์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ๋ง์”€๋“œ๋ฆฌ๋ฉด,

 

1. ํ•™์Šตํ•  ๋ฐ์ดํ„ฐ์…‹ ์ค€๋น„

2. ๋ฐ์ดํ„ฐ์…‹์„ ๋‹ด์„ Computational Graph ์ค€๋น„(tf.placeholder)

3. ๊ฐ€์ค‘์น˜๋ž‘ ๋ฐ”์ด์–ด์Šค๋ฅผ ๋‹ด์„ Computational Graph ์ค€๋น„(tf.Variable)

4. ์†์‹คํ•จ์ˆ˜ ์ •์˜

5. ์†์‹คํ•จ์ˆ˜๋ฅผ ์ตœ์†Œํ™” ํ•ด์ฃผ๋Š” Optimizer์ •์˜

6. tf.Session์ •์˜

7. Session๋‚ด์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ ์ดˆ๊ธฐํ™”(tf.global_variable_initializer())

8. ํ•™์Šต ์ˆ˜ํ–‰

9. ํ‰๊ฐ€

10. ์˜ˆ์ธก

 

์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ computational graph๋ž€, ๋งคํŠธ๋ฆญ์Šค ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ '๋…ธ๋“œ'๋ž€ ๊ณณ์—์„œ

๊ณ„์‚ฐ์„ ํ•˜๋Š” ํ˜•ํƒœ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œ์‹œํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

๋‚˜๋ฆ„ ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ์‹์ด๊ธด ํ•˜์ง€๋งŒ,

์—ฌ๊ธฐ์—๋Š” ๋งน์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ, define๋‹จ๊ณ„์—์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด์ฃ .

 

์•„๋ž˜ ์˜ˆ๋ฅผ ๋ณผ๊นŒ์š”?

 

>> a = 2

>> b = 3

>> c = a + b

 

์ด ์˜ˆ์ œ์—์„œ a = 2๋ฅผ ์ •์˜ํ•˜๋Š” ์ˆœ๊ฐ„

์ด๋ฏธ a๋ผ๋Š” ๋ณ€์ˆ˜์—๋Š” 2์˜ ๊ฐ‘์ด ํ• ๋‹น์ด ๋ฉ๋‹ˆ๋‹ค.

c๋„ c = a + b ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„ ์ด๋ฏธ, c์—๋Š” 5๋ž€ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒ ์ฃ .

 

๊ทธ๋Ÿฐ๋ฐ, ์ด๋ฅผ tensorflow์˜ computational graph๋กœ ์ƒ์„ฑํ•˜๋ฉด,

a = tf.constant(1)

b = tf.constant(2)

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ •์˜๋ฅผ ํ•˜์ฃ .

์ด๋•Œ a์˜ ๊ฐ’์„ ์ฐ์–ด๋ณด๋ฉด 1์ด ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ 1์ด๋ž€ ๊ฐ’์ด ํ• ๋‹น ๋œ computational graph๊ฐ€ ํ•˜๋‚˜ ํ‘œ์‹œ๋  ๋ฟ์ด์ฃ .

 

Tensor("Const:0", shape=(), dtype=int32)

 

tensorflow์—์„œ๋Š” session์ด๋ž€๊ฑธ ์ƒ์„ฑํ•ด์„œ ์‹คํ–‰ํ•ด์•ผ๋งŒ ํ•ด๋‹น ๋˜๋Š” ์—ฐ์‚ฐ์ด ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค.

 

์ด๊ฒŒ, '์—…๊ณ„'์—์„œ๋Š” ๋‚˜๋ฆ„ ํฐ ์ด์Šˆ์˜€์Šต๋‹ˆ๋‹ค.

'์ง€์—ฐ์‹คํ–‰'์ด๋ผ๊ณ  ํ•˜๋Š” ๋ฌธ์ œ ์ž…๋‹ˆ๋‹ค.

 

์ˆ˜์‹ญ๊ณ„์˜ ๊ณ„์ธต์„ ์Œ“์•„์˜ฌ๋ฆฐ ์‹ ๊ฒฝ๋ง์„ ์‹คํ–‰ํ•  ๋•Œ,

tensorflow๋Š” ์ด๋Ÿฌํ•œ computational graph๋ฅผ ์ดˆ๊ธฐ์— ๊ตฌ์„ฑํ•˜๋Š๋ผ

์‹คํ–‰์†๋„๊ฐ€ ์—„์ฒญ ๋Š๋ฆฌ๋Š” ํ˜„์ƒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋”ฅ๋Ÿฌ๋‹ ์—”์ง€๋‹ˆ์–ด์˜ ๋ถˆ๋งŒ์ด ๊ทน์— ๋‹ฌํ–ˆ์—ˆ์—ˆ์ฃ .

 

์ค‘์›์˜ ๋”ฅ๋Ÿฌ๋‹์—๋Š” ์—ฌ๋Ÿฌ ๊ณ„๋ณด(?)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ตฌ๊ธ€์˜ ํ…์„œํ”Œ๋กœ ํŒŒ, ํ”„๋ž‘์†Œ์™€ ์ˆ„๋ ˆ์˜ ์ผ€๋ผ์Šค ํŒŒ, ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์Šค๋ถ์˜ ํŒŒ์ดํ† ์น˜ ํŒŒ...

์ด์™ธ์—๋„ ์•„ํŒŒ์น˜์˜ MXNET๋ถ€ํ„ฐ MS์˜ CNTK๋“ฑ ....

์ˆ˜๋งŒ์€ ํŒŒ๊ฐ€ ์ค‘์›์— ์กด์žฌ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ค‘ ์ฃผ๋ฅ˜๋Š” ์•„๋ฌด๋ž˜๋„ ํ…์„œํ”Œ๋กœ, ์ผ€๋ผ์Šค, ํŒŒ์ดํ† ์น˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋ฌด๋ฆผ์˜ ์„ธ๋ ฅ์„ ์ฐจ์ง€ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…์„œํ”Œ๋กœ >>>>>>>>>>์ผ€๋ผ์Šค>>>>>>ํŒŒ์ดํ† ์น˜ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>์žก๋‹ค๊ตฌ๋ฆฌ(์žก๋‹ค๊ตฌ๋ฆฌํŒŒ์—๊ฒ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค...)

๋Œ€๋žต ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์ด๋Ÿฐ ๋Š๋‚Œ์ด์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

 

ํ…์„œํ”Œ๋กœ๋Š”....

์•„๋ฌด๋ž˜๋„ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ดˆ๊ธฐ ์ฃผ๋ฅ˜ ์ด๋‹ค๋ณด๋‹ˆ...

๊ทธ ๋น„๊ธ‰์— ์•„๋ฌด๋ž˜๋„ ํ—›์ ๋„ ๋งŽ๊ณ , ๋น„๊ธ‰์„ ์ตํžˆ๊ธฐ์—๋„ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ๋งŽ์ด ๋‹ฌ๋ผ์„œ

์ตํžˆ๊ธฐ์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋‚ด๊ณต์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด์— ๋ถˆ๋งŒ์„ ํ’ˆ์€ ํ”„๋ž‘์†Œ์™€ ์ˆ„๋ ˆ๋Š” ๋ถ„ํŒŒ๋ฅผ ๊ฒฐ์ •ํ–ˆ์ฃ . ๋ฐ”๋กœ ์ผ€๋ผ์Šค ํŒŒ ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋”ฅ๋Ÿฌ๋‹์— ์ž…๋ฌธํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋น„๊ธ‰์„ ์ตํžˆ๋‹ค ์ฃผํ™”์ž…๋งˆ์— ๊ฑธ๋ฆฐ ์ด๋“ค๋„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋Š”,

์•„์ฃผ ์‰ฌ์šด ๋น„๊ธ‰์„ ์ฐฝ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

๋‹ค๋งŒ ์ผ€๋ผ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊ธฐ์กด์˜ ํ…์„œํ”Œ๋กœ, ์”จ์•„๋…ธ, CNTK๋“ฑ์˜ ๋น„๊ธฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค๋งŒ,

์ตํžˆ๋Š” ์‚ฌ๋žŒ์€ ์ด๋Ÿฐ๊ฑธ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ์‹ ๋ฐ•ํ•œ ๋น„๊ธ‰์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ…์„œํ”Œ๋กœ์—๋Š” ๋ณต์žก ๋‹ค์–‘ํ•˜๊ณ , ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์›์„ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋“ฑ

๊ท€์ฐฎ๊ณ  ์–ด๋ ค์šด ์ ˆ์ฐจ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ,

์ผ€๋ผ์Šค๋Š” ๊ทธ๋ƒฅ ํ„ฑํ„ฑ ์‹ ๊ฒฝ๋ง์„ ์Œ“์•„๋†“๊ธฐ๋งŒ ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์•Œ์•„์„œ array์˜ ์ฐจ์›์„ ๋งŸ์ถฐ์ฃผ๋Š”

์‹ ๋ฐ•ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ผ€๋ผ์Šค๋Š” ๋‚˜์˜ค์ž ๋งˆ์ž ์„ ํ’์ ์ธ ์ธ๊ธฐ๋ฅผ ๋Œ์—ˆ๊ณ , ํ˜„์žฌ๋Š” ๋Œ€๋žต ์ค‘์›์—์„œ ๋‘๋ฒˆ์งธ์ •๋„ ๋˜๋Š”

์ฃผ๋ฅ˜๋กœ ๊ธ‰ ์ƒ์Šน ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ!!!

 

ํ…์„œํ”Œ๋กœํŒŒ์˜ ์žฅ๋กœ๊ฐ€ ์ผ€๋ผ์Šค์˜ ๋น„๊ธ‰์„ ์ˆ˜์šฉํ•˜๊ธฐ๋กœ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ, tensorflow 2.0์—์„œ ๋ง์ด์ฃ .

์ด์ œ, ํ…์„œํ”Œ๋กœ์˜ ํŒŒ๋„ ๊ธฐ์กด์˜ ์ตํžˆ๊ธฐ ํž˜๋“ค๊ณ  ์ฃผํ™”์ž…๋งˆ์— ๋น ์ง€๊ธฐ ์‰ฌ์šด ๋น„๊ธ‰ ๋Œ€์‹ ์—,

ํ‘œ์ค€์œผ๋กœ Keras๋ผ๋Š” high level API๋ฅผ ๊ทธ๋Œ€๋กœ tensorflow์—์„œ ์“ธ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ํ•œ๋ฒˆ ๋ณด์‹œ์ฃ .

 

๋จผ์ € Tensorflow ์†Œ์Šค ์ž…๋‹ˆ๋‹ค.

 

 

ํ..๋ณด๊ธฐ๋งŒ ํ•ด๋„ ์ฃผํ™”์ž…๋งˆ์— ๊ฑธ๋ฆด๊ฒƒ ๊ฐ™์€ ๋ณต์žกํ•จ์ด ์žˆ์ฃ .

 

์•„๋ž˜๋Š” ์ผ€๋ผ์Šค ์†Œ์Šค ์ž…๋‹ˆ๋‹ค.

 

๋ญ”๊ฐ€ ๋‚˜๋ฆ„ ๊น”๋”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์ ‘๊ทผ ์šฉ์ด์„ฑ๊ณผ ๋น ๋ฅด๊ฒŒ prototypingํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์  ๋•Œ๋ฌธ์—,

๊ธˆ๋ฒˆ Tensorflow 2.0์—์„œ๋Š” Keras๋ฅผ ํ‘œ์ค€ API๋กœ ํ™•์ •ํ•œ ๊ฑฐ์ฃ .

 

๊ธฐ์กด์— KerasํŒŒ๋“ค์—๊ฒ...

๋น„๊ธ‰์„ ์ž˜ ์ตํžˆ๊ณ  ์žˆ๋Š”๋ฐ ํ•ญ์ƒ ์–ด๋””๊ฐ€๋‚˜ ๋น„์ฃผ๋ฅ˜๋ผ๋Š” ํ•ธ๋””์บก์„ ๋งˆ์Œ์†์— ์•ˆ๊ณ  ์‚ด๊ณ  ์žˆ๋‹ค๊ฐ€

ํ•œ ์ˆœ๊ฐ„์— ์ฃผ๋ฅ˜๋กœ ํŽธ์ž…์ด ๋˜์–ด๋ฒ„๋ฆฐ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ฃผ๋ง‰์— ๊ฐ€๋„ ๋น„์ฃผ๋ฅ˜๋ผ๋Š” ๋†€๋ฆผ์„ ๋ฐ›์ง€ ์•Š์ฃ .

 

๊ธฐ์กด์˜ Keras ์†Œ์Šค์ฝ”๋“œ์— tf๋งŒ ๋ถ™์ด๋ฉด ๋Œ€๋ถ€๋ถ„ ์ž˜ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด,

import keras.layers.Sequential

 

์ด๋Ÿฌํ•œ ์†Œ์Šค๋ฅผ,

import tf.keras.layers.Sequential

 

์ด๋ ‡๊ฒŒ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋Œ€๋ถ€๋ถ„ ์ž˜ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

 

์ž ๊น. ์—ฌ๊ธฐ์„œ...

์œ„์— ๊ธ€๋งŒ ๋ณด๋ฉด keras๊ฐ€ ๋ณ„๋„์˜ ํŒŒ ์ธ๋“ฏ ๋ณด์ž…๋‹ˆ๋‹ค.

keras๋Š” ๋‹จ๋…์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” api๊ฐ€ ์›๋ž˜ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

keras ์ฐฝ์‹œ ์ดˆ๊ธฐ๋ถ€ํ„ฐ, backend๋กœ๋Š” tensorflow๋‚˜, ์ง€๊ธˆ์€ ๋ฉธ๋ฌธํ™” ๋˜์–ด๊ฐ€๋Š” theano, cntk ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š”

api์˜€์Šต๋‹ˆ๋‹ค.

 

๋ฌด์Šจ๋ง์ธ๊ณ  ํ•˜๋‹ˆ, ์ด์ „ ํŽธ์—์„œ ์–˜๊ธฐํ•œ computational graph, tensor ์—ฐ์‚ฐ, session๋“ฑ์˜

์ €์ˆ˜์ค€ ์ž‘์—…๋“ค์„ wrappingํ•ด์„œ, ์ข€๋” ์šฐ์•„ํ•ด๋ณด์ด๋Š” ์ž‘์—…์œผ๋กœ ์ž˜ ํฌ์žฅํ–ˆ๋‹ค๋Š” ๋ง ์ž…๋‹ˆ๋‹ค.

 

keras์—์„œ ์šฐ์•„ํ•˜๊ฒŒ model.fit ํ•˜์ง€๋งŒ,

์‹ค์ œ๋กœ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” tensorflow์—์„œ session์„ ์ƒ์„ฑํ•˜๊ณ , global variable๋“ค์„ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , computational graph๋ฅผ

compileํ•˜๊ณ , session์„ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ์˜ ์ €์ˆ˜์ค€ ์ž‘์—…์„์„ ํ•œ๋‹ค๋Š” ๋ง ์ž…๋‹ˆ๋‹ค.

 

์ข€๋” deepํ•ด์ง€๋Š” deep learning์ด๋‚˜, ๊ฐ€๋”์€ ์ด๋Ÿฌํ•œ ์ €์ˆ˜์ค€ ์ž‘์—…์„์„

์ง์ ‘ ์ œ์–ดํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์ง€๋งŒ, ํ‰์†Œ์—๋Š” ์šฐ์•„ํ•˜๊ฒŒ model.fitํ•˜๋Š” keras๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

์Œ..์“ฐ๋‹ค๋ณด๋‹ˆ...

์ค‘๋”ฉ๋•Œ ์ˆ˜์—…์‹œ๊ฐ„์— ๋ชฐ๋ž˜๋ณด๋˜ ์˜์›…๋ฌธ์ด ์ƒ๊ฐ์ด๋‚˜์„œ

๋ฌดํ˜‘์Šค๋Ÿฝ๊ฒŒ ์“ฐ๋‹ค๋ณด๋‹ˆ ๊ธ€์ด ์กฐ์žกํ•ด์กŒ๋„ค์š”.

 

์ด๋ฒˆ์‹œ๊ฐ„์—๋Š”...์ง„์งœ๋กœ Tensorflow 2.0์— ๋Œ€ํ•ด์„œ ๋ฐ”๋€์ ์„ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1๋ฒˆ. ์šฐ์„ !!!

์žก์Šค๋Ÿฐ API๋“ค์„ ์ฃ„๋‹ค ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ์กด 1.x ๋ฒ„์ „์—์„œ๋Š” ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ–ˆ์—ˆ์œผ๋‚˜,

2.0์—๋Š” ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ• ํ•˜๋‚˜๋งŒ์„ ๋†”๋‘๊ณ  ์‹ธ๊ทธ๋ฆฌ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ฌธํ•˜๋Š” ์‚ฌ๋žŒ์ด๋‚˜, ๊ธฐ์กด์— ๊ตฌํ˜„ํ•˜๋˜ ๊ฐœ๋ฐœ์ž๋„ ๋‹ค๋ฅธ ๊ตฌํ˜„์†Œ์Šค๋ฅผ ๋ณด๊ณ  ํ˜ผ๋™์ด ์˜ฌ ์ผ์ด

๋งŽ์ด ์ ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

 

๋‹ค๋งŒ...๊ธฐ์กด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ๋‚จ๊ฒจ๋’€์Šต๋‹ˆ๋‹ค.

tf.compat.v1 ํŒจํ‚ค์ง€ ์•„๋ž˜, ๊ธฐ์กด์— ์“ฐ๋˜ ํŒจํ‚ค์ง€๋“ค์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2๋ฒˆ. Eager Execution ๋ชจ๋“œ ๋„์ž…

1ํŽธ์—์„œ ์ž ๊น ์†Œ๊ฐœ๋“œ๋ ธ๋‹ค์‹œํ”ผ, tensorflow ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ๋ญ”๊ฐ€๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ•˜๋ ค๋ฉด

๋จผ์ € computational graph๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ session์„ ์ƒ์„ฑํ•ด์•ผ๋งŒ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ์ˆ˜ ์žˆ๋‹ค๊ณ 

์„ค๋ช…๋“œ๋ฆฐ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค.

 

tesorflow 1.x ์—์„œ๋Š” ๋ง์…ˆ์„ ์•„๋ž˜์™€ ๊ฐ™์ด session์„ ์‹คํ–‰ํ•ด์•ผ๋งŒ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋ญ”๊ฐ€, ์ธ๊ฐ„์˜ ์˜์‹ ํ๋ฆ„ํ•˜๊ณ ๋„ ์ž˜ ์•ˆ๋งž์ฃ ?

 

tensorflow 2.0์—์„œ๋Š” ์„ ์–ธ ์ฆ‰์‹œ ์‹คํ–‰๋˜๋Š” eager execution๋ชจ๋“œ๊ฐ€ default๋กœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์š”๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‰์ƒ์‹œ ํŒŒ์ด์ฌ ์“ฐ๋“ฏ์ด ์“ฐ๋ฉด ๋˜์ฃ ...

 

์ด๋ ‡๊ฒŒ ๋ฐ”๋€Œ๋ฉด์„œ...

 

๊ธฐ์กด์— tf.Session()๋Š”... ๊ณจ๋ฐฉ(tf.compat.v1)์œผ๋กœ ์ซ“๊ฒจ๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ๋ฐฉ๋ฒ•๋Œ€๋กœ session์„ ์“ฐ์‹œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ์ €๊ธฐ ๊ณจ๋ฐฉ์„ ์ฐพ์•„ ๊ฐ€์‹œ๋ฉด

tf.Session()์ด ๊ณจ๋ฐฉ์„ ์ง€ํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

3๋ฒˆ. AutoGraph

๊ธฐ์กด์— session๊ธฐ๋ฐ˜์˜ function์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

function ์•ž์— tf.function ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋งŒ ๋ถ™์ด๋ฉด, ์ž๋™์œผ๋กœ computatioal graph๋ฅผ

์ƒ์„ฑํ•ด ์ฃผ์–ด, ๋ฐ”๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ autograph๊ธฐ๋Šฅ์ด ๋‚˜์˜ค๋Š”๋ฐ,

Autograph๋Š” funciton ์•ž์— @tf.function์ด๋ž€ decorator๋ฅผ ๋ถ™์ž„์œผ๋กœ์จ

์ƒ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹จ์ˆœํžˆ ์ด function๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,

function ๋‚ด๋ถ€์—์„œ callํ•˜๋Š” ๋‹ค๋ฅธ function๋„ ์ž๋™์œผ๋กœ computaional graph๋ฅผ ์ƒ์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

 

 

deep_next(x)๋ž€ function ์•ž์— @tf.function์ด๋ž€ decorator๊ฐ€ ์žˆ์ฃ ?

์ € decorator ๋•๋ถ„์— deep_net์€ ๋‹น์—ฐํžˆ computational graph๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ์ด ๋˜๊ณ ,

์ € deep_net๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœํ•˜๋Š” linear_layer() ํ•จ์ˆ˜๊นŒ์ง€๋„ ์ž๋™์œผ๋กœ computational graph๋ฅผ ์ƒ์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

 

(์ €๋Š”...์ด๋Ÿฐ ๋ฐฉ์‹์„ ์•ˆ์จ๋ด์„œ ์ €๊ฒŒ ์™œ ํŽธํ•œ์ง€ ์‚ฌ์‹ค ๊ฐ์ด ์ž˜ ์•ˆ์˜ต๋‹ˆ๋‹ค...-_-;;;)

 

4๋ฒˆ. High Level API

 

์•„๋ž˜ ๋‘ ์†Œ์Šค๋ฅผ ๋ณด๊ณ  ๋‹ค๋ฅธ์ ์„ ์ฐพ์•„๋ณด์„ธ์š”.

 

์™ผ์ชฝ์€ tesorflow 1.x์˜ ์†Œ์Šค์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ tensorflow 2.0์˜ ์†Œ์Šค ์ž…๋‹ˆ๋‹ค.

 

์ •๋‹ต์€...

์™ผ์ชฝ์€ tensorflow๊ฐ€ high level api๋ฅผ ๋„์ž…ํ•œ๊ฑด 17๋…„ ๋ง ๋ถ€ํ„ฐ์—ฌ์„œ

๋‘ ์†Œ์Šค๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค๋งŒ,

 

2.0์ด ๋‚˜์˜ค๊ธฐ ์ „ ์†Œ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” tf.Session()์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰์ด ๋˜๊ณ ,

์˜ค๋ฅธ์ชฝ์˜ tensorflow 2.0์†Œ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋„ eager execution์œผ๋กœ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค.

(tensorflow 2.0 dev summit 2019์—์„œ ๋ฐœํ‘œํ•˜์—ฌ ์ฒญ์ค‘๋“ค์˜ ์›ƒ์Œ์„ ์ž์•„๋‚ธ ๋ถ€๋ถ„ ์ž…๋‹ˆ๋‹ค.)

 

๊ทธ๋ฆฌ๊ณ , tensorflow๊ฐ€ 2.0์ด ๋˜๋ฉด์„œ ๋จธ์‹ /๋”ฅ๋Ÿฌ๋‹ workflow์—๋„ ๋ณ€ํ™”์˜ ๋ฐ”๋žŒ์„ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค.

 

1. tf.data๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์…‹ ์ค€๋น„

2. tf.keras๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ ์ƒ์„ฑ, ํ›ˆ๋ จ, ๊ฒ€์ฆ

3. eager execution์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ ๋””๋ฒ„๊น…

4. ๋ถ„์‚ฐ traning์„ ์ด์šฉํ•˜์—ฌ distribution strategy ์‚ฌ์šฉ

5. savedmodel๋กœ ๋ชจ๋ธ ๋ฐฐํฌ

 

์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด์‹œ๋ฉด ์ข€ ๋” ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์‹ค ๊ฒ๋‹ˆ๋‹ค.

 

 

์ƒ์„ฑ๋œ ๋ชจ๋ธ์€ Distribution Strategy์— ์˜ํ•ด์„œ,

๋ชจ๋ธ์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ , CPU์—์„œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ GPU ๋˜๋Š” TPU์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ถ„์‚ฐ์ •์ฑ…์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ชจ๋ธ์€

ํด๋ผ์šฐ๋“œ์— ์˜จํ”„๋ ˆ๋ฏธ์Šค๋กœ ์ œ๊ณต๋˜๋Š” tensorflow serving์œผ๋กœ ๋ฐฐํฌ๋˜๊ฑฐ๋‚˜,

๋ชจ๋ฐ”์ผ device๋ฅผ ์œ„ํ•œ tensorflow์ธ tensorflow lite์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜,

๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” node.js์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ tesorflow.js,

๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ์–ธ์–ด ๊ธฐ๋ฐ˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ๋กœ ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ƒ์œผ๋กœ ์ƒˆ๋กœ๋‚˜์˜จ tensorflow 2.0์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋ฅผ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

+ Recent posts