knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

TensorFlow.js + node/express , モデルの評価結果を出力

index:

概要:

前のTensorFlow.js 関係で、
学習済で保存モデルから、node.js で予測値を出力し。
グラフ表示する例となります

環境

TensorFlow.js
node.js
Vue.js
express
Ubuntu16

画面

前回の、回帰モデルの結果


f:id:knaka0209:20191013143938p:plain

参考のコード

github.com

npm install
npm start

実装など

機械学習は、事前に実行して。モデルを保存しておきます
https://github.com/kuc-arc-f/tfjs_app1_express1/blob/master/train.js

async function run_train() {
    const tr = new LibTrain( )
    const dTrain = new LibTrainData( )
    const appConst = new LibConst( )
//    console.log(appConst.model_name )
//return;
    const model = tr.createModel();  
    const data = await tr.getData();
    var chart_dats = dTrain.convert_chart_arr(data)
    console.log(chart_dats.lbl.length )
    const tensorData = tr.convertToTensor(data);
    const {inputs, labels} = tensorData;
    // Train the model  
    console.log('Training-start');
    await tr.trainModel(model, inputs, labels,
            tensorData, chart_dats.lbl.length
            ,chart_dats  );
    console.log('#fit-complete');    
       //pred
    const [xs, preds] = tr.testModel(model, data, tensorData, 
                    chart_dats.lbl.length);
console.log( preds );
    await model.save(appConst.model_name );

}

api : モデル読み込み。評価処理、
https://github.com/kuc-arc-f/tfjs_app1_express1/blob/master/routes/api_train.js

router.get('/chart_items', async function(req, res) {
    console.log('Hello TensorFlow, t3-read');
    const tr = new LibTrain( )
    const dTrain = new LibTrainData( )
    const appConst = new LibConst( )
    //
    const data = await tr.getData();
    var chart_dats = dTrain.convert_chart_arr(data)
    console.log(chart_dats.lbl.length )
    const tensorData = tr.convertToTensor(data);
    
    const model = await tf.loadLayersModel(appConst.model_name + '/model.json');
    //pred
    const [xs, preds] = tr.testModel(model, data, tensorData, 
    chart_dats.lbl.length);
//console.log( preds );    
    //out
    var items = []
    preds.forEach( function (item) {
        items.push(item  );
    });
    var arr ={
        'pred' : items,
        'chart_dats' : chart_dats,
    }
    var param = {"docs": arr };
    res.json(param);
});

まとめ

前回のブラウザ版と、比較して
事前に、学習処理が必要ですが
評価時に、学習しない分。かなり高速表示できました。