[英]How To Save Model image classifier in TensorflowJS
我在瀏覽器中用 TensorFlow.js 創建了一個圖像分類器,代碼運行良好,但是當頁面重新加載時,代碼需要再次訓練數據(需要時間),所以我不想再次訓練數據,我想保存 model 並加載它們。 我正在嘗試使用此代碼保存 model
await model.save('anime/saved-model');
但它不起作用,順便說一句,這是我的代碼
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Jotaro atau Giorno</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/knn-classifier"></script>
<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
</head>
<body>
<h1>Test Image Giorno and Jotaro</h1>
<input type='file' onchange="readURL(this);" />
<img id="image_baru" src="#" alt="your image" />
<button id="tombolPrediksi">Prediksi</button>
<h3>output in the console</h3>
</body>
</html>
Javascript
let mobileneModule;
let ClassifierKNN;
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#image_baru')
.attr('src', e.target.result)
.width(300)
.height(300);};
reader.readAsDataURL(input.files[0]);}
}
const initScript = async function(){
ClassifierKNN = knnClassifier.create();
mobileneModule = await mobilenet.load();
const jotaroExample = ()=>{
for(let i=1; i<=3;i++){
const im = new Image(300,300);
im.src = 'anime/jotaro/'+i+'.jpg';
im.onload = ()=>{
let trainingImageJotaro = tf.browser.fromPixels(im);
let predJotaro = mobileneModule.infer(trainingImageJotaro,'conv_preds');
ClassifierKNN.addExample(predJotaro,"Jotaro Kujo");
console.log("Giorno ok")
}
im.onload();
}}
const giornoExample = ()=>{
for(let i=1; i<=3;i++){
const im2 = new Image(300,300);
im2.src = 'anime/giorno/'+i+'.jpg';
im2.onload = ()=>{
let trainingImageGiorno = tf.browser.fromPixels(im2);
let predGiorno = mobileneModule.infer(trainingImageGiorno,'conv_preds');
ClassifierKNN.addExample(predGiorno,"Giorno Giovanna");
console.log("Giorno Oke")
}
im2.onload();
}}
await jotaroExample();
await giornoExample();
//save model
await model.save('anime/saved-model');
}
initScript();
const prediksiGambar = async function(){
let imgX = document.getElementById('image_baru');
const tensorX = tf.browser.fromPixels(imgX);
const logitsX = mobileneModule.infer(tensorX,'conv_preds');
let result = await ClassifierKNN.predictClass(logitsX);
console.log('hasil prediksi:');
console.log(result);
}
document.getElementById("tombolPrediksi").addEventListener("click",prediksiGambar);
我希望有一個人可以幫助我:)
await model.save('downloads://my-model');
// saves under the my-model in the browsers storage
await model.save('localstorage://my-model');
// Create your classifier:
let classifier = knnClassifier.create();
// Add some examples:
classifier.addExample(...);
// Save it to a string:
let str = JSON.stringify(Object.entries(classifier.getClassifierDataset()).map(([label, data])=>[label, Array.from(data.dataSync()), data.shape]) );
// Load it back into a fresh classifier:
classifier = knnClassifier.create();
classifier.setClassifierDataset( Object.fromEntries( JSON.parse(str).map(([label, data, shape])=>[label, tf.tensor(data, shape)]) ) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.