Published on

๐Ÿ“–STUDY ์›น ๋ธŒ๋ผ์šฐ์ € ์† ๋จธ์‹ ๋Ÿฌ๋‹ Tensorflow.js | ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์„ Tensorflow.js๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

ํฌํ„ฐ๋ธ” ๋ชจ๋ธ ํ˜•์‹

ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค

  • lightweight
  • serializable: ๋””์Šคํฌ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • compatible

์ง๋ ฌํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ ๋‹ค์–‘ํ•œ ์–ธ์–ด์—์„œ ์ฝ๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
.onnx๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ.

์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์กฐ์™€ ์†์„ฑ์„ ๋‚˜๋ˆ„๋Š”๋ฐ, ์ด๋Š” ๊ตฌ์กฐ์™€ ์—ฐ์‚ฐ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

  • GraphDef: ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ ๋‚ด๋ถ€ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ ํ‘œํ˜„
  • NodeDef: ๋‚ด๋ถ€ ์—ฐ์‚ฐ ๋…ธ๋“œ
  • name
  • op: ์—ฐ์‚ฐ ๊ตฌํ˜„๋ถ€ ํฌ์ธํ„ฐ
  • input: ์ž…๋ ฅ ๋…ธ๋“œ(list)
  • device: ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์žฅ์น˜
  • attr: ์—ฐ์‚ฐ์— ํ•„์š”ํ•œ ์†์„ฑ๋“ค

ํ…์„œํ”Œ๋กœ์—์„œ ๋ชจ๋ธ ๋‚ด๋ณด๋‚ด๊ธฐ

์ด์™ธ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” SavedModel(Tensorflow), ๊ทธ๋ฆฌ๊ณ  Keras ๋ชจ๋ธ์ด ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ทธ๋ž˜ํ”„๋ฅผ ์ €์žฅํ•˜๋Š” ํ…์„œํ”Œ๋กœ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ Keras๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ชจ๋ธ์€ ๊ณ„์ธต์ ์ด๊ณ  ๊ณ ์ˆ˜์ค€ api๋กœ ๊ฐ„๋‹จํ•˜๋‹ค. ํŒŒ์ด์ฌ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋ธ์€ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ด๋•Œ tfjs-converter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

  • SavedModel๋กœ ๋งŒ์•ฝ์— ์ €์žฅ์„ ํ•˜์˜€๋‹ค๋ฉด, tensorflowjs์—์„œ๋Š” LoadGraphModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  • Keras ๋ชจ๋ธ๋กœ ๋งŒ์•ฝ์— ์ €์žฅ์„ ํ•˜์˜€๋‹ค๋ฉด, tensorflowjs์—์„œ๋Š” loadLayersModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
Authors