์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ต์ฅํ๊ธฐ ๋๋ฌธ์
+1!
+1
:+1:
+1
๋ด๊ฐ ์ฐพ๋ ๋ฐ๋ก ๊ทธ ๊ฒ. :+1:
๊ณต์ ์น์ฌ์ดํธ http://www.tensorflow.org/ ์์ ์ธ์ฉ
Go, Java, Lua, Javascript ๋๋ R๊ณผ ๊ฐ์ด ์ ํธํ๋ ์ธ์ด์ SWIG ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋์ด ๋ชจ๋ SWIG์ ์ต์ํ์ง ์์ง๋ง ์ฃผ๋ณ์ ๊ฒ์ํ๊ณ ์ด๊ฒ์ ์ฐพ์์ต๋๋ค. http://www.swig.org/Doc3.0/Javascript.html
์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Javascript๋ฅผ ์ํด ํน๋ณํ swig ์ธํฐํ์ด์ค ํ์ผ์ ์์ฑํด์ผ ํฉ๋๊น, ์๋๋ฉด ์ผ๋ถ ๋ช ๋ น์ ์คํํ ๋ ์๋์ผ๋ก ์์ฑ๋ฉ๋๊น, ์๋๋ฉด ๋๊ตฐ๊ฐ ์ด๋ฏธ ์ด ์์ ์ ํ๊ณ ์์ต๋๊น(๊ต์ฅํ ๊ฒ์ ๋๋ค)?
+1:+1:
+1
+1
+1
+1
๐
:+1:
+1!
์ด์ ๋ง ์์ํ์ง๋ง nodejs ์ ๋์จ์ ์์ฑํ๋ ๊ฒ์ ์ฒ์์ ๋๋ค. swig ์ธํฐํ์ด์ค ํ์ผ์ ํ์ธํ์ฌ ๋์์ด ๋ ๊ฒ์ธ์ง ์๋๋ฉด C++ API๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ํ์ธํ์ญ์์ค.
+1
+1
+1
+1
์ด๊ฒ์ ํต์ฌ TensorFlow ํ์ด ๊ฐ๊น์ด ์ฅ๋์ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ด๋ฏ๋ก ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ๊ณ์ ์งํํ์ญ์์ค! ๋ ผ์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ์ ์๋ ๊ตฌํ์ ์กฐ๊ธฐ์ ๋ฐฐํฌํ์ฌ ๊ทธ๋ฌํ API๊ฐ ์ด๋์ ์์ ์ ์๋์ง(repo / off repo / 'contrib' ๋๋ ํ ๋ฆฌ)์ ๋ํ ํฉ์์ ๋ฏธ๋ฆฌ ๋๋ฌํ ์ ์๋๋ก ๊ถ์ฅํฉ๋๋ค.
NodeJS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ ์ฌ๋์ด ์์ต๋๊น? :+1:
๊ณต์ NodeJS API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ปค๋ฎค๋ํฐ ํ๋๋ ๋ด ์๊ฒฌ์ผ๋ก๋ (๋ ๋ง์ง๋ ์๋๋ผ๋) ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค. ๋๋ ์ด๊ฒ์ ์ ๊ทผํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ฑ๋ฅ์ ์ํด node-gyp์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ ๊ฐ ํ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋์ํด ๊ธฐ๊บผ์ด ๊ณตํํ ๊ฒ์ด์ง๋ง, ์ด๊ฒ์ ์ ํผ์ ํ ์ ์๋ ์ผ์
๋๋ค. ๋ช๋ช ๋ค๋ฅธ ์ฌ๋๋ค, ํนํ C++ ์ง์์ด ์๋ ์ฌ๋์๊ฒ๋ ๊ด์ฌ์ด ์๋ค๋ฉด ๊ฐ์ฅ ์ข์ ๊ฒ์
๋๋ค.
:+1:
@Foorack ์ ๋ ๊ด์ฌ ์๋ ๋ถ๋ค์ด
@tngan slack ์ฑ๋์ ๋น๊ณต๊ฐ์ด์ง๋ง herokuapp ๋งํฌ๋ก ๊ฐ์ ํ ์ ์์์ต๋๋ค. :+1:
๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ํ ๋ก ํ๊ณ ๊ธฐ์ฌํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด์ nodejs๋ผ๋ ์ฌ๋ ์ฑ๋์ด ์๊ณ (#31 ์ฐธ์กฐ) Github ์ ์ฅ์ node-tensorflow ๊ฐ ์์ฝ๋์ด ์์ต๋๋ค. @Foorack ๋ ๊ฐ์ฌ
๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด๋์ ํฐ๋ธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@miguelalche ๊ด์ฌ์
(ํนํ #132์ ํจ๊ป) ๊ธฐ์ฌ๋ฅผ ๊ธฐ๋ํฉ๋๋ค!!
+1
๋ ธ๋ ๋ง์ธ! ํด๋ณด์
+1
+1
๋ค์์ C API๋ฅผ ์ฌ์ฉํ์ฌ TensorFlow ๊ทธ๋ํ๋ฅผ ๋ก๋ํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. https://medium.com/jim-fleming/loading-tensorflow-graphs-via-host-languages-be10fd81876f (์์ค ์ฝ๋ ํฌํจ)
์ ์์๋ ๋ค์ ์ฃผ์ ๋ฐํ๋ ์์ ์ ๋๋ค. https://github.com/node-tensorflow/node-tensorflow์์ ๊ณ์ ์ถ์
+1
๋ด ์ถ๋ฐ์ ์ธ https://github.com/nikhilk/node-tensorflow ๋ฅผ ๊ฒ์ํ์ผ๋ฉฐ ๋์ค์ npm์ ๊ฒ์ํ ์์ ์ ๋๋ค.
@jimfleming - ๊ทํ์ ์ ๊ทผ ๋ฐฉ์๊ณผ ๊ฐ์ต๋๋ค(์ฐ๋ฆฌ๋ ๋ ๋ค ffi๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค ... ๋น ๋ฅด๊ฒ ์์ํ๊ธฐ ์ํด ํ์ต๋๋ค). ํ์ด์ฌ ๊ฒฝํ์ ๋ณต์ ํ๊ธฐ ์ํด ๋ ๋์ ์์ค์ ํ๋ ์์ํฌ ์คํ์ผ API๋ฅผ ๊ตฌ์ถํ ์์ ์ ๋๊น? ๊ทธ๊ฒ ๋ด ๋ค์ ๋จ๊ณ์ ๋๋ค.
@nikhilk ๊ฐ์ฌํฉ๋๋ค. ๊ฐ์ ๋ญ๊ฐ new tf.Tensor()
๋์ tf.NewTensor()
๋ฉ์ง ์ถ๊ฐ ํ ์ ์์ง๋ง ๋๋ ์๊ฐ์ ๊ทธ๊ฒ์ ํ์ฅ์ ๊ณํํ๊ณ ์์ง ์๋ค. ์ ๋ ํ์ด์ฌ์ผ๋ก ๋ง๋ ๊ทธ๋ํ๋ฅผ ๋ก๋ํ๋ ๋ฐ๋ง ๊ด์ฌ์ด ์๊ณ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ์ข์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
+1
์ ์์ ํ์ฌ ์งํ ์ํฉ๊ณผ ํจ๊ป ์ฌ๊ธฐ์ ๊ณต๊ฐ๋ฉ๋๋ค.
https://github.com/node-tensorflow/node-tensorflow/tree/1.0.0
ํ ๋ก ์ ๋ํ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
https://github.com/node-tensorflow/node-tensorflow/issues/2
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
node.js ๊ธฐ๋ฐ ์๋ฒ์์ tensorflow ๋คํธ์ํฌ๋ฅผ ์ฝ๊ฒ ์คํํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
+1
+1
+1
+1
+1
+1
๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค. @Foorack ๊ฐ๋ฅ ํ๋ฉด ์ ๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์! ์ค์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ผ๋ฏ๋ก ๋์์ ๊ฐ๋ฐํ๊ณ ํ ์คํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค!!
@pushtheworldllc ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์
์ ๊ธฐ์ฉ๋๋ค. :)
์ ์ฅ์ ๋ฐ ์ ์์ https://github.com/node-tensorflow/node-tensorflow/ ์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ด ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ ์ฑ๋์ ๊ฐ์
ํ ์ ์์ต๋๋ค. https://tensor-flow-talk-invite.herokuapp.com/
+1
+1
+1
+1:+1:
+1:+1:
์ฌ๊ธฐ์ SWIG๋ฅผ ์ฌ์ฉํ๋ ์์ ํ๋กํ ํ์ ์ด ์์ต๋๋ค: https://github.com/node-tensorflow/node-tensorflow/pull/13
๋ค์ ๋จ๊ณ๋ ๋ฐ์ธ๋ฉ์ด ์ฒ์์ ๋ค๋ฃฐ ์์ญ(C++ API ๋ด์ ์์ด์ผ ํจ)์ ์ ์ํ๊ณ ์ด์ ๋ํ SWIG ์ธํฐํ์ด์ค ํ์ผ ๊ตฌํ์ ์์ํ๋ ๊ฒ์ ๋๋ค.
SWIG์ ๋ํ ๊ฒฝํ์ด ์๋ ์ฌ๋์ด ์๋ค๋ฉด ๊ณต๋ ์์ ์ ํ๊ณ ์ถ์ต๋๋ค. ๋ง์ ์์ python SWIG ์ธํฐํ์ด์ค๊ฐ ์ฌ์ฉ์ ์ง์ ์ฌ์ ์ ๋ฑ์ด๊ณ ๊ทธ๋ค์ ์์ ์ ์ฌํํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ tensorflow ํ์์ ๋ก๋๋งต์ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ค๊ณ ํ์ ํ๊ณ ์ถฉ๋ํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ์ฒ์์ ์ด๋ค API๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ด ์ข์์ง์ ๋ํด tensorflow ํ์ผ๋ก๋ถํฐ ๋ช ํ์ฑ์ ์ป๋ ๊ฒ์ด ์ข์ต๋๋ค. (cc @martinwicke ? )
+1
+1:+1:
+1
+1
+1
+1
+1
๋ฐ์ ๋ฒํผ์ ์ฌ์ฉํด ๋ณด์ญ์์ค --> http://www.geekwire.com/2016/github-adds-reactions-keep-comments-track/ +1 ๋๊ธ ์์ xD
+1
:+1:
+1
+1
+1
@peterbraden ์ค๋ ์นจ๋ฌต์ ๋ํด ์ฃ์กํฉ๋๋ค. ์ฐ๋ฆฌ๋ C++ API๋ฅผ ๊ตฌ์ถํ๊ณ ์์ผ๋ฉฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ์ฅ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ ์ ์ฉํ ๋นํธ๋ ๊ธฐ์กด ๊ทธ๋ํ๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ถ๋ถ์ด ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. C++ ๊ทธ๋ํ ๋น๋ API๋ ํ์ฌ ๋ค์ ์์ฑ ์ค์ด๋ฏ๋ก ๋ง์ ์๊ฐ์ ํ ์ ํ๋ ๊ฒ์ ํนํ ์ ์ฉํ์ง ์์ต๋๋ค.
์ด๋ฌํ ๋ฐ์ธ๋ฉ์ contrib/nodejs์ ๋ฃ์ PR์ ์ค๋นํ๋ค๋ฉด ์ข๊ฒ ์ต๋๋ค.
@martinwick ๊ฒฉ๋ คํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ ์ฌ๊ธฐ์ ์ด๊ธฐ ์ฐ๋ฅด๊ธฐ๋ฅผ ํ๋ค: https://github.com/tensorflow/tensorflow/pull/2206 - ์ด๊ฒ์ ๋จ์ง ๋ฒ์ ๋ฌธ์์ด์ nodejs๋ก ๊ฐ์ ธ์ค๋ ๊ฐ๋ ์ฆ๋ช ์ผ ๋ฟ์ ๋๋ค. ๊ทธ๋ํ ์คํ ํญ๋ชฉ์ ๋ํ swig ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์์ ์ ์์ํ๊ฒ ์ต๋๋ค.
+10000
+1
+1
+1
+1
+1
์ด๊ฒ์ ์น ํด๋ผ์ด์ธํธ์์ ์ง์ ์ฌ์ฉํ๊ธฐ ์ํ ์์ํ ํ๋ก ํธ ์๋ ๊ทธ๋ํ ๋ด๋ณด๋ด๊ธฐ์ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ํ์์ ์์ฒญํ ์ํ๋ ์ ๋ ฅ/์ถ๋ ฅ์ด ๋ด๋ณด๋ธ JS "sess.run"์ ํด๋นํ๋ ํจ์์์ ํ๋ ์ฝ๋ฉ๋๋๋ผ๋.
+1
:+1:
+1
+1
+1
+1
+1
๋ฐ์ธ๋ฉ์ด ์ด๋ฏธ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ์กฐ์ฌํ๋ ๋์ ์ด๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ ์กฐ์ฌํ๊ธฐ ์ ์ ํ์ฌ Python API๋ฅผ ํตํด ์ผ๋ถ ํ ์ ํ๋ฆ์ ๋ฐฐ์ฐ๋ ค๊ณ ํ์ง๋ง ์ด์ ์ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ nodejs ๋ฐ์ธ๋ฉ์ ๊ตฌ์ถํ์ผ๋ฉฐ ๊ฒฝํ์ ํตํด swig๊ฐ ์๋ชป๋ ๋ฐฉ๋ฒ์์ ์ ์ ์์ต๋๋ค.
swig ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋น๋๊ธฐ ํ๊ฒฝ์์ ๋๊ธฐ ์ฐจ๋จ ์ฝ๋๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. swig ๋ฐ์ธ๋ฉ์ IO ์ค๋ ๋์์ ์์ ์ ์คํํ์ง ์์ผ๋ฉฐ ๋ด๊ฐ ์ดํดํ๊ณ ๊ฒฝํํ ๊ฒ์์ ๋ฉ์ธ ์ด๋ฒคํธ ๋ฃจํ์์ ์คํ๋ฉ๋๋ค.
๋ฒจํธ ์๋์์ ๊ธฐ๋ณธ์ ์ธ ํ ์ ํ๋ฆ์ ๋ํ ๊ฒฝํ์ด ์์ผ๋ฉด ์ ์ ํ ๋ฐ์ธ๋ฉ์ ๊ตฌ์ถํ๋ ๋ฐ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด์ ๋ํด ์ง์งํ ์ฌ๋์ด ์๊ฑฐ๋ v8 ๋ชจ๋ ์์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ํ๋ ์ฌ๋์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
ํ ์ ํ๋ฆ API์ ๋ํ node-gyp ๋ฐ์ธ๋ฉ๊ณผ ๊ด๋ จ๋ ๋งํฌ๊ฐ ์์ต๋๊น?
@dmcmorris ์์ ๋น๋ ค์ฃผ๋ ๋ฐ ์ง์งํ๊ฒ ๊ด์ฌ์ด ์์ต๋๋ค! v8 ๋ชจ๋ ์์ ์ ์ด๋ค ๋ฆฌ์์ค๋ฅผ ๊ถ์ฅํฉ๋๊น? ์ฌ๊ธฐ์์ ํ์ ๊ตฌ์ฑํ๊ณ ์ด ํ๋ก์ ํธ๊ฐ ๊ธฐํ์ด ์ง๋ฌ์ผ๋ฏ๋ก ์ต๋ํ ๋นจ๋ฆฌ ์ฌ๋ฃ์ ๋ฐ์ด๋ค ์ ์์ต๋๋ค. :)
+1
+1
+1
+1์ด
์ ๋ฐ์ดํธ๊ฐ ์๋์??
2016๋ 10์ 31์ผ ์คํ 12์ 6๋ถ์ "willshion" [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
+1์ด
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/tensorflow/tensorflow/issues/37#issuecomment -257222936,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ANrvwrbmShC9c0_wsNpTudKSCb0-8qt8ks5q5Yx3gaJpZM4Ge5NV
.
TensorFlow 1์ฃผ๋ ์ถํํฉ๋๋ค!
https://research.googleblog.com/2016/11/celebating-tensorflows-first-year.html
TensorFlow๋ ์ด์ Go, Rust ๋ฐ Haskell์์ ์ก์ธ์คํ ์ ์์ต๋๋ค. JavaScript๋ฅผ ๋ฌด์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
JavaScript์์ ๊ธฐ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
+1
+1
๐ฏ ๐
+1
+1.0000000000000000000000001
+1
+1
+1
+1
๊ณต์ Node.js API๋ฅผ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์จ๋ JavaScript๋ ๊ต์ฅํฉ๋๋ค!
์๋ฌด๋ ์ด๊ฒ์ ๋ ธ๋ ฅํ๊ณ ์์ต๋๊น?
๋งค์ฐ ์ด๋ ค์ ๋ณด์ ๋๋ค.
+1
๋งค์ฐ ํ์ํฉ๋๋ค!
@stackOverMind. ๊ทธ ๊ธ๋จธ๋ฆฌ ๊ธฐํธ์ ๋ํด ์ฝ๊ฐ ๊ฒ์ํ์ต๋๋ค. ๋๋ ์ด๋ค ์ค ์ด๋ ๊ฒ๋ ์๋ํ์ง ์์์ผ๋ฉฐ ์ฌ์ฉ/์คํ์ด ํจ์จ์ ์ด์ง ์์ ์ ์์ง๋ง ์ ์ฌ์ ์ผ๋ก ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
+1
+1
+1 pweettyyy pwease!!!
+1
+1
๊ธฐ๋๋ฉ๋๋ค. ๐
+1
๊ธฐ๋๋ฉ๋๋ค. :+1:
๐
+1
+1. ๋๋ Node์์ ์ฝ๊ฐ์ ๊ฒฝํ์ด ์์ผ๋ฉฐ ์ด๊ฒ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค.
+1
+1 ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. Python์ ํ๋ฅญํ๊ณ Node ๋ฐ JS๋ ํ๋ฅญํฉ๋๋ค.
+1
๋จ์ง ๊ทธ๊ฒ์ ์ํด +1
+1!
+1
+1 ๐
+1
+1์ ๋ฉ์ง af๊ฐ ๋ ๊ฒ์ ๋๋ค
+1 <3
๐
๐
+100
+1
+1
:+1:
+2
+1 ;)
ํ์
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
:+1:
+1
+1
+1
๐
์ ๋ฐ !
+1
+1
OP์ ๋ ์ง๋ 2015๋ ์ด์๊ณ ์ง๊ธ์ 2017๋ ์ด๋ฉฐ ํ๋ก์ ํธ์ ์ด๋ ๋๊ตฌ๋ ์ค์ ๋ก ์ ํํ์ง ์์์ต๋๋ค. ์ด ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ ๊ฒ์ด๋ผ๋ ํํธ๋ฅผ ์ป์ ๊ฒ ๊ฐ์ต๋๋ค.
tensorflow์ node์ ๊ดํ ๊ฑด์ ํ ํ ๋ก ์ด ์์๋์ง ์๋ ์ฌ๋์ด ์์ต๋๊น? ์ด +1์ ๋ณ๋ก ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค :(
+1
# +1
๐
+1
+1
:+1:
2๋ ์ด ์ง๋ฌ๋๋ฐ ์์ง๋ ์ด์ด ์์ต๋๊น?
์ข์. ์จ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ.
+1.0/0.0
์๋ ํฑ ์ฌ์ฉ https://github.com/cazala/synaptic
deep_recommend_system ์์ ์๊ฐ์ ๋ฐ์ ์ด์ tensorflow ์ ๊ณต์ ํตํด Node.js๋ก ๋ชจ๋ธ์ ์ก์ธ์คํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์์ง ์งํ ์ค์ ๋๋ค.
์ด๊ฒ์ ์ ์ฉํ keras-js ๊ฐ ๋ ์ ์์ต๋๋ค.
@sarkistlt ๋ถํํ๋, ์ฐ๋ฆฌ๋ keras.js
๊ฐ ํ๋ Tensorflow์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌํ์ ๋งํ๋ ๊ฒ์ด ์๋๋ผ Tensorflow์ C++ API ์ฃผ์์ nodejs ๋ํผ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฏ๋ก ๋ค์ดํฐ๋ธ ์ถ๊ฐ ๋ฅผ - NodeJ์ ๊ฒฝ์ฐ .
๊ธฐํ ์ ์ฉํ ์์ค .
๋ถํํ๋ ์ ์ง์
์ ์ฝ๋ฉ์ด ์๋๋ฉฐ ๊ฐ์ธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ง ์์ C++์ ๋ํ ๋ฅ์๋๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ keras.js
๋ ์ถ๋ก ๋ง ํ๊ณ ํ๋ จ์ ํ์ง ์์ผ๋ฏ๋ก ์ญ์ ํ๋ ํ์ง ์์ต๋๋ค.
Google ๊ฐ๋ฐ์๋ ํ๋ ์ด๊ทธ๋ผ์ด๋ ์์ Tensorflow์ ์์ ๋ถ๋ถ์ Javascript๋ก ๊ตฌํํ์ผ๋ฉฐ ์ ๊ฒฝ๋ง ๊ตฌํ์ ์ฌ๊ธฐ์ ์์ผ๋ฉฐ ์ญ์ ํ๋ฅผ ํฌํจํฉ๋๋ค.
๋ค์ดํฐ๋ธ nodejs Tensorflow ๊ตฌํ์ ๋ํ ์์
์ ์์ํ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ฐธ์ฌํ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
https://github.com/nodejs-tensorflow/nodejs-tensorflow
+1
+1
+1
+1
@JIoJIaJIu์๊ฒ ๊ธฐํ๋ฅผ ์ฃผ์ ์ ์ ๋ง ๊ธฐ์ฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ํฅ์ ๋ฏธ์น ๊ฐ๋ฅ์ฑ์ ๋งค์ฐ ํฝ๋๋ค. ๊ฐ์ฅ ๋ง์ด ์ฐฌ์ฑํ๋ ๋ฌธ์ ์ ๋๋ค.
์ผํ ๋ณด๊ธฐ์ ์ง๊ธ๊น์ง๋ ์ณ์ ์ผ์ ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ @martinwicke์ด ๊ถ์ฅํ ๋๋ก ๋ณ๋์ ํ๋ก์ ํธ์์ ์์ฑํ์ผ๋ฉฐ TensorFlow C API๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๊ธฐ์ฌ์๋ฅผ ๋์ด๋ค์ด๋ ์ข์ ๋ฐฉ๋ฒ์ Vincent๊ฐ ๋ช ๋ ์ ์ ๊ถ์ฅ ํ ๋๋ก TensorFlow ๋ฉ์ผ๋ง ๋ฆฌ์คํธ ์ ๋์์ธ ๋ฌธ์๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ๋ ๊ทํ์ ๋น์ ์ ๋ํ ํฉ์๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฐ๋ฅํ ์ต๊ณ ์ ๋น์ ์ ๋์ธ ์ ์์ต๋๋ค.
TensorFlow ํ์ NodeJS ์ปค๋ฎค๋ํฐ๊ฐ TensorFlow์ ํํ์ ๋ฐ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ทธ ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ ๋ฐ ์ ๋ ํ๋ ๊ฐ์ธ์ ๋๋ ๋ฐ ์ ๋์ ์ผ๋ก ๊ด์ฌ์ด ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋ฃ๊ณ ์๋ค๋ฉด ์ด๊ฒ์ Tensorflow์ ๋ํด ๊ฐ์ฅ ๋ง์ด ์์ฒญ๋ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
+1
์๋ ํ์ธ์, ์ ๋ https://github.com/yorkie/tensorflow-nodejs์์ Tensorflow์ฉ Node.js ๋ธ๋ฆฌ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์์ต๋๋ค. SWIG ์์ด "์ฌ์ ์ ์๋ ๊ทธ๋ํ ์คํ"๊ณผ ๋งค์ฐ ๊ฐ๋จํ "๊ทธ๋ํ ๊ตฌ์ฑ"์ ์ง์ํฉ๋๋ค. ๋ํ ์์ผ๋ก ๋ ๋ง์ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ์ง์ํ ๊ณํ์ ๋๋ค. :)
๋์์ Tensorflow ๊ณต์ ๊ทธ๋ฃน์์ ์ด๋ฅผ ๋ณํฉํ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. ์ด๋ ์ ์๊ฒ ๋น์ฉ์ด ์ ํ ๋ค์ง ์๋ PR์ด ๋ ๊ฒ์ ๋๋ค. :)
@yorkie ์ฌ๋ฐ์ด๋ณด์ด๋ค์ ํด๋ด์ผ๊ฒ ๋ค์ ! ๊ทธ๋ฌ๋ GPL ์ฝ๋๋ฅผ TensorFlow์ ๋ณํฉํ ์๋ ์์ต๋๋ค.
@yorkie ๋ฉ์ง๋ค์ . ํ๋ก์ ํธ ์ ์ฐธ์ฌํ๊ณ ํ์ ํฉ์น์๊ฒ ์ต๋๊น?
@ry ํ์คํ ๋ผ์ด์ ์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค :)
@JIoJIaJIu ์ง๊ธ ์ด ์ ์ฅ์๋ฅผ ์ด๋ํ๊ธฐ์ ๊ฐ์ฅ ์ข์ ์ฅ์๊ฐ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ์ ์ฅ์๊ฐ tensorflow org๋ฅผ ์ด๋ํ๋ ๋ฐ ์ ํฉํ์ง ์๋ค๋ฉด nodejs-tensorflow๊ฐ ์ข์ ๊ณณ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. :)
๊ทธ๋ฌ๋ GPL ์ฝ๋๋ฅผ TensorFlow์ ๋ณํฉํ ์๋ ์์ต๋๋ค.
@ry ๋ผ์ด์ ์ค๋ฅผ MIT๋ก ์ ๋ฐ์ดํธํ๊ณ @JIoJIaJIu ๊ฐ ๊ทธ๋ฃน์ ํฉ๋ฅํ์ต๋๋ค. ์ด๋ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)
+1
+1
+1
+1
+1
TensorFlow์ฉ JavaScript API๋ ์ด๋ฒ ๋ฌ ์ด์ ๋ฐํ ๋์์ต๋๋ค. deeplearn.js ํํ์ด์ง์์ ์์ธํ ๋ด์ฉ์ ํ์ธํ์ธ์.
์ด์ ์ด (๊ด๋ฒ์ํ) ๋ฒ๊ทธ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ FR์ ์์ ๋กญ๊ฒ ์ฌ์ญ์์ค.
deeplearn.js
๋ node.js์ฉ SDK๊ฐ ์๋๋ผ webgl์ด ์๋ ๋ธ๋ผ์ฐ์ ์ฉ์
๋๋ค.
๊ทธ๋ด ์ ์์ง. ์ด์ ๋ฒ๊ทธ ์ ๋ชฉ์ด Node.js๋ฅผ ์ง์ ์ฐธ์กฐํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
@vincentvanhoucke ์ ๋ชฉ์์ node.js์ ๋ํ ๊ฒ๋ ์๋๋๋ค. "deeplearn.js" ๋ฐ "Tensorflow API for Javascript"์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ ์ฌ๊ณผ์ ๋ฐฐ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ - deeplearn.js๋ "TensorFlow API ์คํ์ผ"์ ์ด๋ ์ ๋ ๋ฐ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ ์์ํ๊ฒ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋ฉฐ ๋ค๋ฅธ ํ๋๋ ์ ์ฒด Tensorflow ์ฅ์ ์ ๋ํ ์ง์ ์ ์ธ API์ ๋๋ค. ๋ํ Tensorflow์ ๋์์ด๋ผ๊ณ ํ๊ธฐ์๋ ๋๋ฌด ๊ฐ๊น์ง ์์ต๋๋ค... ์๋ง๋ ์ทจ๋ฏธ๋ก ํ๋ ์ฌ๋์๊ฒ๋ ์ ํฉํ์ง ์์ง๋ง ์ปดํจํ ํ๋ก์ธ์ค๋ฅผ ๋ชฉํ๋ก ํ๋ ๊ธฐ๊ณ ํด๋ฌ์คํฐ๊ฐ ํ์ํ ์์ ์ ์ฉ๋๋ ์๋๋๋ค. JavaScript์ ์ ๊ฒฝ๋ง์ผ๋ก ๋ฌ์ฑํ ์ ์๋ ๊ฒ์ ๋ฐ๋ชจ๋ผ๊ณ ์๊ฐํฉ๋๋ค... ์์ผ๋ก ๋์ฌ ๊ฒ๋ค์ ๋ง... ;-)
+1
+999
๋ง์์ฌ ์ธ๋ฐ์๋ ์๋ฆผ ๊ทธ๋ง ๋ณด๋ด๋ผ ๊นํ๋ธ๊ฐ ๐ ์ ๐ ๋ฐ์์ ์๊ฐํ ์ด์ ๊ฐ ์๋ค.
+1 ๋ฐ +999๋ ์ฌ๋๋ค์ ๊ท์ฐฎ๊ฒ ํ ๋ฟ ์๋ฌด๋ฐ ๊ฐ์น๋ฅผ ๋ํ์ง ์์ต๋๋ค.
+1000
:+1:
+1
+1
๐ ์ฌ๋ฌ๋ถ ๋๊ธ ์ ์ +1 or +๋ฌด์์ด๋ - @k1sul1 ์ ๋๊ธ์
๋ง์์ฌ ์ธ๋ฐ์๋ ์๋ฆผ ๊ทธ๋ง ๋ณด๋ด๋ผ ๊นํ๋ธ๊ฐ ๐ ์ ๐ ๋ฐ์์ ์๊ฐํ ์ด์ ๊ฐ ์๋ค. +1 ๋ฐ +999๋ ์ฌ๋๋ค์ ๊ท์ฐฎ๊ฒ ํ ๋ฟ ์๋ฌด๋ฐ ๊ฐ์น๋ฅผ ๋ํ์ง ์์ต๋๋ค.
@shahen94 ์ฐ๋ฆฌ ๋ชจ๋ ๋ณด์์ง๋ง ์ฌ์ ํ ... ์ฐ๋ฆฌ๋ js ๊ฐ๋ฐ์์ ๋๋ค.
+1
@BruceHem js ๊ฐ๋ฐ์๊ฐ ๋๋ ๊ฒ์ด ํผ๋์ ๋ถํ์ํ ์คํธ์ ๋งน๋ชฉ์ ์ผ๋ก ํธ์ํ๋ ๊ฒ๊ณผ ์ด๋ค ์๊ด๊ด๊ณ๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค... ๐
"+1"์ด ์ด ์ฃผ์ ๋ฅผ ์ฝ์ ์ ์๊ฒ ๋ง๋ ๋ค๋ ์ฌ์ค์ ๋ชจ๋ ์๊ณ ๊ณ์ญ๋๊น? ๋๋ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ด ์ฌ๋ก๋ฅผ ์ง์งํ๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง "ํฌํ" ๊ธฐ๋ฅ์ ๊ฐ์ฅ ๊ฐ๊น์ด github์ ๊ธฐ๋ฅ์ ์ค๋ ๋์ ๋๊ธ ์๊ฐ ์๋ "๋ฐ์"์ผ๋ก ๊ตฌํ๋๋ค๋ ์ ๋ง ์ถ๋ก ํ ์ ์์ต๋๋ค... ์๋๋ฉด ์ ๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น? ;-NS
Lol :P ์ด ์ค๋ ๋๋ ๋ช ๋
์ ์ ์ฃฝ์์ต๋๋ค.
.
+1 ๊ตฌ๊ณจํ๋ ์ค!
+1
@thefill์ ์ ๋์ ์ผ๋ก "+1" ๋์ํ๋ฉด ์ด ์ฃผ์ ๋ฅผ ์ฝ์ ์
์ ๋ https://github.com/yorkie/tensorflow-nodejs ์์ Python๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ถฉ๋ถํ ์ํํ ์ ์๋๋ก ์์ ํ๊ณ ์์๊ณ ์์ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ language_bindings API์ ๋ํ ์ ์ฒด ๊ตฌํ์ด
๋๋ ๋ํ ๋ด ๊ฐ์ธ ์ ์ฅ์๊ฐ ๊ณต์์ ์ผ๋ก ์ง์๋๋๋ก @ry ์๊ฒ ๋์์ ์์ฒญํ์ต๋๋ค. ๋ช ๊ฐ์ง ์์ ๋ชจ๋ธ, ํนํ RNN ์ฌ๋ก๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ด ํด์ผ ํ ์ผ์ด ๊ฑฐ์ ์์ง๋ง ๋ถํํ๋ ๋ค๋ฅธ ๋ถ์ผ์์ ์์ ํด์ผ ํ๊ณ ์ด ๋ช ๊ฐ์ ๋์ ์๊ฐ์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฌํ ์ผ์ด ์ผ์ด๋๋๋ก ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ฉด ์ ์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ญ์์ค. ์์ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ปค๋ฎค๋ํฐ์ ๋์์ด ๋๋ ์ผ์ ํฉ์๋ค :)
ํ์ฌ ์์๋ ํ๋ก์ ํธ, ํนํ C API ์์ ์ ์ด๋ ค์๊ณผ ๊ด๋ จํ์ฌ ์ ์๊ฒ ์ ๋ง๋ ๊ตฌํ์ ๋ํ ์ ์์ด ์์ต๋๋ค.
python์ js์ฉ python API๋ฅผ "์ฌ์์ฑ"ํ๋ ค๊ณ ํ๋ ๋์ Tensorflow API ์ฃผ๋ณ์์ ์ฌ์ ํ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ๊ฐ๋ฐ์ ์นํ์ ์ด๋ฉฐ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ํผ์ด๋ฏ๋ก python API์ ์ง์ ๋ฐ์ธ๋ฉ์ ์์ฑํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋จผ์ ๋ ธ๋ C++ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํ์ง๋ง C API์ ์ง์ ๋ฐ์ธ๋ฉํ๋ ๋์ "ํฌํจ๋" ํ์ด์ฌ์ ์ฌ์ฉํ์ฌ C++์์ ์ง์ ํ์ด์ฌ ๋ฉ์๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋จ์ํ python ์คํฌ๋ฆฝํธ ์์ฑ์ ์ ์ํ๋ ๋ค๋ฅธ JS => Python ์๋ฃจ์ ๊ณผ ๋ค๋ฆ ๋๋ค...ํ๋ก์ธ์ค ๊ฐ์ ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ(์๊ฐ) ๋๋ฌธ์ ํฉ๋ฆฌ์ ์ธ ํฌ๊ธฐ์ ํ์ต ๋ฌธ์ ์ ๋ํด ์คํ ๊ฐ๋ฅํ์ง ์์ ์๋ฃจ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋ฒ ๋๋ ํ์ด์ฌ์ ์ฌ์ฉํ๋ฉด ํ์ด์ฌ ์คํฌ๋ฆฝํธ/numpy ๋ฐฐ์ด์์ ์ก์ธ์คํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ js Float32Array ๋ฒํผ๋ฅผ ์ง์ ๊ฐ๋ฆฌํต๋๋ค.
์ด ์๋ฃจ์ ์ ์ ์๊ฒ ๋งค์ฐ ์ ์๋ํฉ๋๋ค(๋ฌผ๋ก ์ด๊ธฐ js => C++ => python ํ๋ฆ์ด ์๋ํ๋ ๊ฒ์ ์ผ์ข ์ ๊ณ ํต์ด์์ต๋๋ค). ํน์ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ฏ๋ก ๊ฐ ๊ฐ๋ณ Python TensorFlow ๋ฉ์๋์ ๋ฐ์ธ๋ฉํ๋ ์์ ์ ๊ฑฐ์น์ง ์๊ณ ๋์ ๋๋ถ๋ถ์ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ช ๊ฐ์ง ๋ฉ์๋์ ๋ฐ์ดํฐ์ ํ์ดํผ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ ์ฒด ๊ฐ๋ณ ๋ฐ์ธ๋ฉ์ ํ์ฌ ์์์ ์์ ๋๋ฌด ๋์์ง ์์ต๋๋ค.
์์ ์ค๋ช ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋ชจ๋ ์๊ฐ์ด๋ ์ ์์ ํ์ํฉ๋๋ค. ๊ฐ์ฌ ํด์.
@djimoh5 JavaScript์์ Python ์ ์ฒด ๊ธฐ๋ฅ API์ ๋ํ ๋ฉ์ง ์๊ฐ! ๋ค๋ฅธ ํํธ์ผ๋ก, JavaScript ๋ฐ ๊ธฐํ ์ธ์ด ํด๋ผ์ด์ธํธ๊ฐ ์ค์๊ฐ Python์ ์ก์ธ์คํ ์ ์๋๋ก ์์ฒด ๊ฒ์ฌ ๊ธฐ๋ฅ์ด ์๋ TensorFlow Python API์ฉ RPC ์๋ฒ ๊ตฌํ์ ๋ฃ์ ์๋ ์์ต๋๋ค. (์๊ฐ์ด ๋๋ฉด ํ ๊ฒ์, ์ํ)
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ JavaScript์ฉ ์ผ๋ถ Python ๊ธฐ๋ฅ์ ๋ค์ ๋ง๋๋ ์ด์ ๊ฐ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ JavaScript๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ JavaScript ๊ฐ๋ฐ์์๊ฒ ๋ ์น์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ์์ค ์ฝ๋๋ฅผ ์์ ํ์ฌ ๋ค๋ฅธ ๊ฒ์ด ๊ฐ๋ฅํ์ง ํ์ธํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์คํธ๋ฆผ์์ ํผ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. :)
+1
tensorflows ๊ทธ๋ํ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ ๋ถ์ ๋ ธ๋๊ฐ ๋ ์ ์๋ node-red ํ๋ฆ์์ ์ฌ์ฉํ ์ ์๋ nodejs tensorflow API์๋ ๊ด์ฌ์ด ์์ต๋๋ค. ์์ง ํ ์ํ๋ก์ ๋ํด ์ ๋ชจ๋ฆ ๋๋ค. ์ง๋ฌธํ๊ธฐ์ ์ ์ ํ ์ฅ์๊ฐ ์๋ ์๋ ์์ง๋ง ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ tensorflow์ฉ nodejs API/์ ๋์จ์ ์ฐพ๋ ์ด์ ๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น?
@khelkun์ ๋๋ต์ ๋ค์ ๊ฐ๋จํฉ๋๋ค.
๊ฐ์ฅ ํฐ ์ด์ ์ Tensorflow์ ์ง์ ์ํธ ์์ฉํ ์ ์๋ node.js์์ ์๋ํ๋ ์๋ฒ ์ธก ์์ฉ ํ๋ก๊ทธ๋จ์์ ํ์คํ ์ป์ ์ ์์ง๋ง node-webkit(๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ)๋ ์ ์ฌ์ ์ผ๋ก ์์ญ ๊ฐ์ ํฅ๋ฏธ๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด ์ค๋ ๋์ ์ปค๋ฎค๋ํฐ ์ฃผ์ต์/๊ด๋ฆฌ์๋ ์๋์ ์ผ๋ก ๋ชจ๋ "+1"์ ์ฌ์ฉํ์ฌ ์ฐจ๋จํ๊ฑฐ๋ ์ฐจ๋จํ๋ ์ฌ๋๋ค์ ๊ฒ์๋ฌผ์ ๋จ์ํ ์ญ์ ํ ์ ์์ต๋๊น? Lol
์ด ํตํฉ ์์ ์ ํ๋ ์ฌ๋์ด WebAssembly(wasm) ์ฌ์ฉ์ ๊ณ ๋ คํ ์ ์ด ์์ต๋๊น? ์ด๊ฒ์ ์ ์ฌ์ ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ๊ฐ์ฅ ์ฐ์ํ ์๋ฃจ์ ์ด๋ฉฐ Python๊ณผ C++๋ก ๋ํํ๋ ๋ชจ๋ JS๋ฅผ ๊ฑด๋๋ฐ๋ ๊ฒ์ ๋๋ค. ์ ๋ TensorFlow์ ๋ด๋ถ์ ๋ํด ์ ๋ชจ๋ฅด์ง๋ง TensorFlow์ C++ ๋ถ๋ถ์ wasm์ผ๋ก ์ปดํ์ผํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(์ง์๋๋ MVP ๊ธฐ๋ฅ์ ํ์ธํ์ง๋ง Unreal Engine 4๋ wasm์ ์ด์ ๋ฒ์ ์ผ๋ก ์ปดํ์ผ๋์๊ณ FireFox์์ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋์์ต๋๋ค). C/C++ API๊ฐ wasm์ผ๋ก ์ปดํ์ผ๋๋ฉด ํ์ํ API๊ฐ ๋ ธ์ถ๋๋์ง ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. wasm์ Node.js, ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ , ์ฌ์ง์ด ๊ทธ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ ๋งค์ฐ ์ด์์ฑ์ด ๋์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ด ๋์๊ฒ ๊ฐ์ฅ ์ข์ ๊ธธ์ธ ๊ฒ ๊ฐ๋ค.
๊ด๋ จ ๋ฆฌ์์ค/ํ ๋ก :
+1... ์ฐ๋ฆฌ๋ ๋ ์ด์ ์ ๋ณดํ ์๋์ ์ค์ธ ์๋์ ์ด๊ณ ์์ง ์์ต๋๋ค. node.js๋ฅผ ์ง์ํด์ฃผ์ธ์.
๋ค๋ฅธ Javascript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ ์๋ฌด๋ NN์ ํ๋ จํ๊ธฐ ์ํด JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊น์? Javascopt๋ ์๋ชป๋ ์ค๊ณ ์ธ์ด์ ๋๋ค.
@AyalaSaenzJorge lol (์ ๋๋ ๊ทธ๊ฒ์ ๊ฐ์ง๊ณ ์์ง ์์์ง ํธ๋กค๋งํ๊ณ ์๊ธฐ ๋๋ฌธ์) ... "๋์"์ค๊ณ ์ธ์ด๋ฅผ ์ฌ๋ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? Javascript๋ ํ์ฌ ์กด์ฌํ๋ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค. ๋ค๋ฅธ ๊ณ ๊ธ ์ธ์ด๋ณด๋ค ๋ ๋ง์ ์ฝ๋(์ง๊ตฌ์)๊ฐ JavaScript๋ก ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ค์ด๋ฉฐ ์ ๋ ์ฌ๋ผ์ง์ง ์์ต๋๋ค ์ฃ์กํฉ๋๋ค ๋กค
์ด ํธ๋กค๋ณด๋ค ๋ ์ง์งํ ๋ถ๋ค์ ์ํด https://deeplearnjs.org๋ฅผ ํ์ธํ์ธ์ ... tensorflow์ ์ํฅ์ ๋ฐ๊ณ Google์ ์ง์์ ๋ฐ์ต๋๋ค... ์ฒ์๋ถํฐ ์์ํ๋ ๊ฒ๋ณด๋ค Node.js๋ก ์ด์ํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
@somombo ๋ค, ์ ๋ง ์ฌ๋ฏธ์์ ๊ฒ ๊ฐ์ต๋๋ค. RE: tensorflow + deeplearnjs, esp ์ฐธ์กฐ:
@AyalaSaenzJorge ์ด๊ฒ์
@somombo๋ 8์ 26์ผ์ ๋ด๊ฐ ์ deeplearnjs๊ฐ ์ด ํ ๋ก ๊ณผ ๊ด๋ จ์ด ์๋์ง ์ค๋ช
ํ๋ ๋ด ๋๊ธ์ ์ฐธ์กฐํ์ธ์.
์ข์์ ๋๊ธ ์ฃ์กํฉ๋๋ค.
์ ๋. 2017๋
12์ 12์ผ ์คํ 6์ 46๋ถ, "ํ๋ฆฝ ๋ค๋ธ๋ก์คํค" ์๋ฆผ @github.com
๊ธฐ๋ก:
@AyalaSaenzJorge https://github.com/ayalasaenzjorge ์ด๊ฒ์ ์ฅ์์ ๋๋ค
๋ ๋จ์ ์ธ ํ์ด์ด์คํํฐ๊ฐ ์๋ ์ ์ตํ ์๊ฒฌ.
@somombo https://github.com/somombo 8์ 26์ผ ์ ๋๊ธ์ ๋ด์ฃผ์ธ์
์ฌ๊ธฐ์ deeplearnjs๊ฐ ์ด ํ ๋ก ๊ณผ ๊ด๋ จ์ด ์๋ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/tensorflow/tensorflow/issues/37#issuecomment-351232483 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AeZvKtru1EQjtRnoz6ZR36Kh-DTfVNozks5s_xBVgaJpZM4Ge5NV
.
+1
@cpple +1์ ์ถ๊ฐํ์ง ๋ง์ญ์์ค. ๋ ธ์ด์ฆ๊ฐ ๋ฐ์ํ๊ณ ๋ฐ์์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ์ฒซ ๋๊ธ์ ์์ง์๊ฐ๋ฝ์ ์น์ผ์ธ์ ๋ณด์ธ์.
์ ๋ฐ์ดํธ๋ฅผ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค -- ๊ฐ์ ๋ https://github.com/nikhilk/node-tensorflow ์ node.js์ ์์ธก/์ถ๋ก ์ ์ํด TensorFlow ๊ทธ๋ํ(๋ฐ ๋์ค์ ์ ์ฅ๋ ๋ชจ๋ธ)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ง์์ ์ ๊ณตํ ๊ณํ์ ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ์ ๊ด์ฌ์ ํ๋ช ํ๊ธฐ ๋๋ฌธ์ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
์ ๋ deeplearnjs์ ํจ๊ป ์๋ํ๋ headless-gl ํฌํฌ๋ฅผ ๋ง๋ค์์ต๋๋ค(์ด๋ ์ฐจ๋ก๋ก tensorflow์ ํจ๊ป ์๋ํจ). ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ node.js์ GPU์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค(์ง๊ธ๊น์ง๋ OSX์์๋ง ํ ์คํธ๋์์ต๋๋ค).
https://github.com/dfoody/headless-gl ์์ ์ค์น ์ง์นจ๊ณผ ๊ธฐ๋ณธ ์ํ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์์ธํ ๋ด์ฉ์ https://deeplearnjs.org ๋ฅผ ์ฐธ์กฐํ์ธ์.
OSX์ ์ค์นํ๋ ์ผ๋ฐ์ ์ธ ์ง์นจ:
brew install pkg-config cairo pango libpng jpeg giflib
npm install deeplearn-gl
npm install deeplearn
๊ทธ๋ฆฌ๊ณ deeplearnjs์ ํจ๊ป ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋น ๋ฅธ ์ํ:
var gl = require('deeplearn-gl')
var dl = require('deeplearn');
var math = new dl.NDArrayMath('webgl');
var size = 3000;
var start = Date.now();
var a = dl.Array2D.ones([size, size]);
var b = dl.Array2D.ones([size, size]);
var result = math.matMul(a, b);
var promise = result.data().then(function(data) {
console.log("done in ", (Date.now()-start)/1000, "seconds with value", data[0]);
}).catch(console.log);
@dfoody ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง "์ด๋ tensorflow์ ํจ๊ป ์๋ํฉ๋๋ค"๋ผ๋ ํํ์ ์๋ชป๋ ๊ฒ์ ๋๋ค. Deeplearn.js๋ "TensorFlow API๋ฅผ ๋ฏธ๋ฌ๋งํ๋ ์คํ ๋ชจ๋ธ"์ ์ ๊ณตํฉ๋๋ค.
๋ํ deeplearnjs๊ฐ ์ด ํ ๋ก ๊ณผ ๊ด๋ จ์ด ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ๋ 8์ 26์ผ์ ๋ด ์๊ฒฌ์ ์ฐธ์กฐํ์ญ์์ค.
@nikhilk ๋๋์ต๋๋ค. ๊ณ์ํ์ญ์์ค! ๋๋ ๋น์ ์ ํ๋ก์ ํธ๋ฅผ ํ์คํ ์ง์ผ๋ณผ ๊ฒ์ ๋๋ค ;-D
+1
propelml.org - ํฅ๋ฏธ๋กญ๊ฒ ๋ณด์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์์ง๋ง GPU๊ฐ ํ์ฑํ๋์ด ๋ธ๋ผ์ฐ์ ์ ๋ ธ๋ ๋ชจ๋์์ ์คํ๋ฉ๋๋ค.
@7ammer propelml.org๋ ๋ค์ ์ ๋งํด ๋ณด์ ๋๋ค. ๊ณต์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ;-)
NodeJS๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค! ;NS
์ปค๋ฎค๋ํฐ์ ์ผ์ฌ์ฐฌ ๊ตฌ์ฑ์์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ TensorFlow contrib ์ฝ๋๋ฒ ์ด์ค์ ๋ณํฉํ๋ ์๊ด์ ์ํ ๊ฒฝ์ฐ ๋ด๊ฐ ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง์ ๋ํ ๋ช ๊ฐ์ง ํ์ด ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ํ์ง ์์ ๊ฒ์ด๋ผ๋ ์ ์ ์ ์ํ์ญ์์ค.
๋น์ ์์ ๋
ธ๋๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค workspace.bzl TensorBoard๊ฐ์ ๊ทธ๋ฌ๋ ๊ฒ์ฒ๋ผ js.bzl .
TensorFlow๋ rules_nodejs์ ์์กดํ ์ ์์ต๋๋ค.
load("@io_bazel_rules_closure//closure:defs.bzl", "filegroup_external")
filegroup_external(
name = "org_nodejs",
# MIT with portions licensed:
# - MIT
# - Old MIT
# - 2-Clause-BSD
# - 3-Clause-BSD
# - ISC
# - Unicode
# - zlib
# - Artistic 2.0
licenses = ["notice"],
sha256_urls_extract_macos = {
"910395e1e98fb351c62b5702a9deef22aaecf05d6df1d7edc283337542207f3f": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/node-v6.9.1-darwin-x64.tar.xz",
"http://nodejs.org/dist/v6.9.1/node-v6.9.1-darwin-x64.tar.xz",
],
},
sha256_urls_windows = {
"1914bfb950be8d576ce9e49c8a0e51c9f2402560fe3c19093e69bc1306a56e9e": [
"https://mirror.bazel.build/raw.githubusercontent.com/nodejs/node/v6.9.1/LICENSE",
"https://raw.githubusercontent.com/nodejs/node/v6.9.1/LICENSE",
],
"513923b0490ebb7466a56483a62595814ed9d036d6f35476debb0cd606bec526": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/win-x64/node.exe",
"http://nodejs.org/dist/v6.9.1/win-x64/node.exe",
],
"3951aefa4afd6fb836ab06468b1fc2a69fa75bd66ec2f5a0e08c4e32547681e3": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/win-x64/node.lib",
"http://nodejs.org/dist/v6.9.1/win-x64/node.lib",
],
},
sha256_urls_extract = {
"d4eb161e4715e11bbef816a6c577974271e2bddae9cf008744627676ff00036a": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz",
"http://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz",
],
},
strip_prefix = {
"node-v6.9.1-darwin-x64.tar.xz": "node-v6.9.1-darwin-x64",
"node-v6.9.1-linux-x64.tar.xz": "node-v6.9.1-linux-x64",
},
executable = [
"node",
"node.exe",
],
default_visibility = ["//tensorflow/contrib/node:__subpackages__"],
)
์ด์ bazel run //tensorflow/contrib/node:generate
๋ก ๋ฐ๊ฟ ์ ์๋ ๋
ธ๋ ํ๋ก๊ทธ๋จ(์: tsc.js )์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. Bazel์์ ์ด๋ฅผ ์ํํ ์ ์๋ ๋น ๋ฅธ ๋ฐฉ๋ฒ ์ค ํ๋๋ tensorflow/contrib/node/defs.bzl
๋งคํฌ๋ก๋ฅผ ์ ์ํ๋ ๊ฒ์
๋๋ค.
def node_binary(name, srcs, data=None, visibility=None, testonly=None, **kwargs):
native.sh_binary(
name = name,
srcs = [name + ".sh"],
data = srcs + data + ["@org_nodejs"],
testonly = testonly,
visibility = visibility,
**kwargs
)
native.genrule(
name = name + "_sh",
srcs = [srcs[0]],
outs = [name + ".sh"],
cmd = "cat >$@ <<'EOF'\n" +
"#!/bin/bash\n" +
"NODE=external/org_nodejs/bin/node\n" +
"if [[ -e external/org_nodejs/node.exe ]]; then\n" +
" NODE=external/org_nodejs/node.exe\n" +
"fi\n" +
"exec $${NODE} $(location " + srcs[0] + ") \"$$@\"\n" +
"EOF",
executable = True,
testonly = testonly,
visibility = ["//visibility:private"],
)
์ด์ ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ ์ํด. Node ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ธ์ ์ข ์์ฑ์ด ์ ํ ์๋ ๋จ์ผ .js ํ์ผ( tex.web ๊ณผ ๊ฐ์ด 30,000์ค์ด ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ์๋)์ ์์ฑํฉ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ์ ops.pbtxt ๋ฐ api_def/base_api ์ ๋ค๋ฅธ ๋ชจ๋ pbtxt ํ์ผ์ ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ์ ์ด ์์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ TensorFlow C API ๋ฐ Node C++ Addon API ์ ํต์ ํ๋ ์ ํํ ํ๋์ ๊ฑฐ๋ํ C++ ํ์ผ์ ๋๋ค.
load("//tensorflow/contrib/node:defs.bzl", "node_binary")
load("@domain_registry//java/google/registry/builddefs:zip_file.bzl", "zip_file")
node_binary(
name = "generate",
srcs = ["generate.js"],
data = [
"//tensorflow/core:ops/ops.pbtxt",
"//tensorflow/core/api_def:base_api_def",
],
)
genrule(
name = "api",
srcs = [
"//tensorflow/core:ops/ops.pbtxt",
"//tensorflow/core/api_def:base_api_def",
],
cmd = "$(location :generate) $(location api.cc) $(SRCS)",
outs = ["api.cc"],
tools = [":generate"],
)
zip_file(
name = "tfnode",
srcs = [
"package.json",
"README.md",
"api.cc",
"binding.gyp",
"tfnode.js",
],
mappings = {"tensorflow/contrib/node": "package"},
)
๊ทธ๋ฐ ๋ค์ bazel build //tensorflow/contrib/node:tfnode.zip
ํ๋ฉด NodeJS ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ๋ฒ๋ค๋ก ์ ๊ณต๋๊ณ NPM๊ณผ ๊ฐ์ ์ฅ์์ ๋ฐฐํฌํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
๋ด๊ฐ ์ด๊ฒ์ ์์ฑํ๋ค๋ฉด(๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค) TensorFlow API ์ ์์ ๋ฒ ์ด๋ณธ ์ง์ ๋งคํ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ง์ญ ์ฌํ์ ์น๊ตฌ๋ค์๊ฒ ๋์๊ด์ ๋ฒ ๋์ดํ์ผ๋ก ๋ง๋ค๋๋ก ๊ถ์ฅํ ๊ฒ์ ๋๋ค. ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ์น์ํ๊ณ ํ๋์ ์ธ ๊ณ ๊ธ ๊ด์ฉ์ JS ๋ฐ ML API์ ๋ํ ๋ค์ํ ๋น์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ชจ๋ ์ด ๋ฐ์ธ๋ฉ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด๋ฏธ ์ธ์ด ๋ฐ์ธ๋ฉ์ ์์ฑํ ์๊ฐ ์์ต๋๋ค. ์๊ฐ์ ์ป์ผ ๋ ค๋ฉด tensorflow/go/genop/main.go ๋ฐ tensorflow/go/op/generate.go ๋ฅผ ์ฐธ์กฐํ์ธ์.
TensorFlow ํ์ด ์ง๊ธ ์ด๊ฒ์ ์ต์ฐ์ ๊ณผ์ ๋ก ์ผ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค: https://js.tensorflow.org/faq/
์ด ํ ๋ก ์ ์ฌ๊ธฐ๋ก ์ฎ๊ธฐ๊ณ ์ถ์ ์๋ ์์ต๋๋ค: https://github.com/tensorflow/tfjs/issues/36
C API์ ๋ํ Node.js ๋ฐ์ธ๋ฉ์ ์งํ ์ํฉ์ ํด๋น ๋ฌธ์ ์์ ์ถ์ ๋ฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๋ก - TFJS์ ๋ํ Node.js ๋ฐ์ธ๋ฉ์ ๊ณต๊ฐํ์ต๋๋ค. https://github.com/tensorflow/tfjs-node
์ฐ๋ฆฌ๋ ์ ์ ํ NPM ๋น๋๋ฅผ ์ป๊ธฐ ์ํด ์ด์ฌํ ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ ๊ณง ์ถ์ํ ๊ฒ์ ๋๋ค!
์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค. ์ถ๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ํด tensorflow/tfjs ๋ฐ tensorflow/tfjs-node๋ฅผ ์ถ์ ํ์ธ์.
๊ด๋ จ๋๊ณ ๊ด์ฌ์ด ์์ ์ ์์: Webassembly๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์์ TF๋ฅผ ์คํํ ์ ์์์ต๋๋ค. ๋ฐ๋ชจ๋ https://humantoanimal.com ์ ์ฐธ์กฐ
@nuchi , C API์์ WebAssembly๋ก ํ์ํ TensorFlow ์ฝ๋๋ฅผ ์ปดํ์ผํ์ต๋๊น? ์๋๋ฉด TensorFlow.js๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@lastmjs ์ ๊ฐ ์ ๊ณตํ ๋งํฌ์ ์์ธํ ์ค๋ช ๋์ด ์์ต๋๋ค. ์งง์ ๋ฒ์ : Webassembly๋ฅผ XLA ์ปดํ์ผ ๋์์ผ๋ก ์ถ๊ฐํ์ต๋๋ค. ๋๋ ์ด๋ค ์์ผ๋ก๋ Tensorflow.js๋ฅผ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
@nuchi ์๊ณ ํ์
จ์ต๋๋ค ! ์ฌ๊ธฐ์์ TensorFlow์ ๋ํ ๋ ๋ค๋ฅธ WebAssemble ์ฐ๊ตฌ๋ฅผ ์๊ณ ์์ต๋๋ค.
https://medium.com/@tomasreimers/compiling -tensorflow-for-the-browser-f3387b8e1e1c
์ด์ ๋ํ ๊ณต์์ ์ธ ์ง์ ์ด ์์ด ๋คํ์ ๋๋ค. JS์ ์ฉ์ดํจ๊ณผ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ผ๋ก ์๋์์ ๋น ๋ฅธ ๋ณ๋ ฌ GPU ์ปดํจํ ์ฑ๋ฅ์ ๊ฐ๊ณ ์ถ์ต๋๋ค.
์ผ๋ง ์ ์ TensorFlow์ฉ NodeJS ๋ฐ์ธ๋ฉ ์์ ์ ์์ํ์ง๋ง ์ต๊ทผ์๋ ์ด์ ํ ์ ํ ์๊ฐ์ด ๋ณ๋ก ์์์ต๋๋ค.
๊ฐ๋ ์ @jart ๊ฐ ์ ์ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ์ํด ์ธ ๊ฐ์ง ๋ชฉํ๋ฅผ ์ผ๋์ ๋์์ต๋๋ค.
๋์ ํ๋ค ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ๋ ์ฌ์ ๋ด์ฅ, ๋ฉํฐ ํ๋ซํผ ํ์ด์ฌ ๋ฐ์ด๋๋ฆฌ๋ฅผํ๊ณ ์ฆ์ ํ์ํ ๋ชจ๋ ์์ค ํ์ผ์ ๋ค์ด๋ก๋ ํ ์ ์์ต๋๋ค.
๋์ C API์ ์์ ํ 1:1 ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต ํ์ฌ ๊ฐ๋ฅํ ํ ์ ๊ณต ํด์ผ ํฉ๋๋ค.
๋์ swig ์คํฌ๋ฆฝํธ ๋ฅผ
๋๋ ์ด๊ฒ๊ณผ ๊ฝค ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์์ง๋ง ๋ง์ง๋ง์ผ๋ก ๋๋ TF_Session ๊ด๋ จ segfaults์ ๋ฌธ์ ๊ฐ ์์๋ค๋ ๊ฒ์ ๊ธฐ์ตํฉ๋๋ค.
์ง๊ธ์ ๋จผ์ง๋ง ์์ด๋ ์ค์ด๋ฏ๋ก ๋๊ตฐ๊ฐ ๋ฐ์ด๋ค์ด ์ด๋ฅผ ๋์์ฃผ๊ณ ์ถ๋ค๋ฉด ๊ธฐ๊บผ์ด PR์ ๋ฐ๊ฒ ์ต๋๋ค.
ํด๊ฒฐ๋จ์ ๋ฐ๋ผ ์ข ๋ฃ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
+1!