개발/nodejs
nodejs / tensorflow.js 참고
2어진
2021. 10. 25. 18:10
tensorflow.js
모델 설정 및 저장/불러오기 참고
- tjs.js
...
const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');
const tjs = {}
// 입력값 1차원 배열 크기지정
const input = tf.input({shape: [10]});
// 히든레이어
const hidden = tf.layers.dense({units: 5}).apply(input);
// 결과값
const output = tf.layers.dense({units: 2}).apply(hidden);
// 모델 세팅
tjs.model_set = async()=>{
// 저장된 값 불러오기
let p = __dirname + '/model.json'
tf.loadLayersModel('file://' + p).then(res => {
tjs.model = res;
tjs.model.compile({optimizer: tf.train.adam(), loss: tf.losses.meanSquaredError})
}).catch(err => {
// 저장된 모델이 없을경우
tjs.model = tf.model({
inputs: input,
outputs: output
})
tjs.model.compile({optimizer: tf.train.adam(), loss: tf.losses.meanSquaredError})
});
}
// 모델 저장
tjs.model_save = async()=>{
let p = __dirname;
await tjs.model.save('file://' + p);
//
}
module["exports"] = tjs;
...
app.js
const tjs = require('/dir/tjs.js')
...
// 서버 실행시 모델 세팅
tjs.model_set();
...
학습
const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');
const tjs = require('/dir/tjs.js');
// 입력값 ( 모델 만들때 배열 크기와 동일해야됨 )
let in_list = [1,0,1,0,0,1,0,0,0,0];
let independent = independent = tf.tensor([in_list]);
// 결과값
let out_list = [1,0];
let dependent = tf.tensor([out]);
// 입력값, 결과값, 학습시킬수
tjs.model.fit(independent, dependent, {epochs: (10)});
결과
// 입력값
let in_list = [1,0,1,0,0,1,0,0,0,0];
// 결과 출력
let out = await tjs.model.predict(tf.tensor([in_list])).data();
// -> [0.902101,0.0018741]