nodejs / tensorflow.js 참고

2021. 10. 25. 18:10개발/nodejs

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]