knaka Tech-Blog

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

TensorFlow.js + node/express , HTTP経由でモデル読込み、予測結果の出力

index:

概要:

前のTensorFlow.js 関係で、
node側で学習したモデルを、HTTP経由で読み込み
ブラウザ側で、評価する例となります。
前回と異なり。node側で評価しない構成です

環境

TensorFlow.js
node.js
Vue.js
Ubuntu16

参考のコード

github.com

実装など

expressに、htmlを配置しておきます
tf.loadLayersModel で、URL指定して。読み込めました

https://github.com/kuc-arc-f/tfjs_app1_express2/blob/master/public/train.html

async function run_train() {
    const data = await getData();
    var chart_dats = convert_chart_arr(data)
console.log(chart_dats.lbl.length )
    //return
    const tensorData = convertToTensor(data);
    const {inputs, labels} = tensorData;
    const model = await tf.loadLayersModel('http://localhost:3000/my-model/model.json');
    //pred
    const [xs, preds] = testModel(model, data, tensorData, 
                        chart_dats.lbl.length);
//    console.log( preds );
    //chart-disp
    var config = get_chart_config(chart_dats, preds);
    var ctx = document.getElementById('myChart').getContext('2d');
    window.myLine = new Chart(ctx, config);

    console.log('Done Training');
}

機械学習は、事前に完了させておきます
https://github.com/kuc-arc-f/tfjs_app1_express2/blob/master/train.js

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);
});

まとめ

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

TensorFlow.js で、モデルを保存する。ブラウザ版 #javascript #機械学習 #tensorflow

index:

概要:

前のTensorFlow.js 関係で、
学習済のモデルを、保存する例となります。

環境

TensorFlow.js
ブラウザ

保存の処理

Local Storage に、保存する場合ですが、他にもindexDBなど。あるようです

await model.save('localstorage://my-model');

例です

学習後、モデル保存し、
モデル読み込み、評価後、結果出力、

gist.github.com

node.js版

・環境: ubuntu16

npm install @tensorflow/tfjs-node

・保存
https://github.com/kuc-arc-f/tfjs_pred_2/blob/master/t6-save.js

   await model.save('file://test-model');

・ロード
https://github.com/kuc-arc-f/tfjs_pred_2/blob/master/t6-read.js

   const load_model = await tf.loadLayersModel('file://test-model/model.json');