ייצוא מודל בינה מלאכותית לשימוש בדפדפן

מחבר:
בתאריך:

אחרי שלמדנו כיצד לפתח מודלים של בינה מלאכותית הגיע הזמן לאפשר למשתמשים רגילים להשתמש בבינה שאנו מפתחים. הממשק שדרכו אנשים בדרך כלל עובדים עם תוכנות הוא באמצעות האינטרנט. מדריך זה מסביר כיצד לייצא מודלים של בינה מלאכותית מבוססי ספריית Keras לדפדפן באמצעות tensorflowjs. הדוגמה שלנו מתבססת על המודל שפתחנו במדריך "מודל לינארי הכולל משתנים קטגוריים לחיזוי מחירי בתים". תוכלו לראות את הקוד בפעולה אם תגללו לתחתית המדריך, ותזינו ערכים לטופס. שימו לב! מחירי הבתים החזויים מבוססים על נתונים של מחירי בתים בסקרמנטו בארה"ב וכל קשר ביניהם ובין המציאות הישראלית מקרי בהחלט.

ייצוא מודל Keras ל-tensorflowjs לצורך שימוש באפליקציה בדפדפן

 

שמירת המודל

אחרי שפיתחתי ואימנתי את המודל באמצעות Keras, שמרתי אותו לתיקיית Models.

כדי ליצור את התיקייה השתמשתי בפקודה הבאה שהרצתי בטרמינל:

!mkdir Models/

בסביבת colab סימן הקריאה (!) משמש לעבודה עם הטרמינל.

נשמור את המודל שפתחנו לקובץ בפורמט h5:

# Save Python model
model.save('Models/multivariate_and_categorical_analysis_for_home_prices.h5', overwrite=True)
  • לקובץ המודל המיוצא נתתי שם תיאורי multivariate_and_categorical_analysis_for_home_prices.h5
  • הכרחי שפורמט הקובץ יהיה h5.

נוודא שקובץ המודל אכן קיים בתיקייה Models:

!ls –la Models

 

ייצוא המודל לקבצים שניתן להשתמש בהם בדפדפן

כדי לייצא את המודל לקבצים שניתן להשתמש בהם אחר כך בדפדפן, נתחיל מיצירת התיקייה שאליה נייצא את הקבצים:

!mkdir ModelJS/

נתקין את ספריית tensorflowjs שתשמש להמרת המודל באמצעות pip:

!pip3 install tensorflowjs

את ההמרה בפועל מבצעת הפונקציה tensorflowjs_converter, שממקמת את הקבצים המומרים בתיקיית היעד:

!tensorflowjs_converter --input_format=keras Models/multivariate_and_categorical_analysis_for_home_prices.h5 ModelJS/

הפרמטרים שמקבלת הפונקציה הם:

  • הפורמט של הקובץ המקורי שהוא Keras
  • מקור המודל (קובץ h5) שיצרנו בצעד הקודם
  • והתיקייה שאליה הפונקציה צריכה לייצא את הקבצים המומרים (ModelJS/)

נוודא שקבצי המודל אכן יוצאו לתיקיית היעד:

!ls -la ModelJS/

אפשר למצוא בתיקייה את הקבצים הבאים: model.json וקבצים נוספים.

  • קובץ json מכיל את כל המידע על המודל כולל ארכיטקרטורה ומטה-מידע.
  • כל יתר הקבצים הם קבצי המשקולות. ככל שהמודל יהיה מורכב יותר כך יהיו יותר קבצי משקולות.

 

הורדת הקבצים מסביבת colab

את המודל פתחתי בסביבת colab. אחרי שקבלנו קבצי מודל ניתנים לייצוא, נוריד אותם אל המחשב כדי שנוכל להשתמש בהם בהמשך:

import os
from google.colab import files

src_folder = 'ModelJS/'

for filename in os.listdir(folder):
  files.download('%s%s' % (src_folder, filename)) 
  print("download %s%s" % (src_folder, filename))

 

פיתוח האפליקציה

האפליקציה כוללת קובץ index.html ואת תיקיית ה-api.

הקובץ index.html מכיל טופס אינטרנטי וסקריפט שישגר את המידע שמזין המשתמש לצד ה-api שיחזיר מצידו את המידע שיוצג למשתמש באפליקציה בתור תחזית מחירי הדירות.

את הטופס נמקם בתוך index.html לחץ כאן כדי להוריד את קוד ה-HTML של הטופס.

בתיקיית ה-api נמקם את קבצי המשקולות של המודל המאומן שהורדנו בצעד הקודם. לחץ כאן כדי להוריד את קבצי המשקולות.

הסקריפט מבוסס ה-javascript הבא שולח את הנתונים לצד ה-api ומציג את הנתונים המוחזרים למשתמש.

// API url
var model;
var apiUrl = './api/model.json';

// get the model from the api when loaded
(async function getModel() {
    return model = await tf.loadLayersModel(apiUrl);
}());

var predict = function(){
  var beds = +jQuery('#beds').val();
  var baths = +jQuery('#baths').val();
	
  // convert m^2 to sq__ft
  var sq__ft = jQuery('#sq__ft').val() * 10.764; 
	
  // one-hot encode the type
  var multiFamily = 0;
  var residential = 0;
  var type = jQuery('#type').val();
  if(type == 1){
    multiFamily = 1;
  } else if(type == 2){
    residential = 1;
  }

  // send to the api
  var inputData = tf.tensor2d([[beds,baths,sq__ft,multiFamily,residential]], [1, 5]);

  // get the results
  var res = model.predict(inputData).dataSync();

  // convert dollars to nis
  var resNis = res[0] * 3.5;
	
  // show the results
  jQuery('#msg').text(Math.ceil(resNis) + '₪');
};

// on form submit call the predict method
jQuery('#theForm').on('submit', function(event){
	event.preventDefault();
    predict();
});

הסקריפט מדבר בעד עצמו, ולכן לא ארחיב עליו את ההסברים. לחץ כאן כדי להוריד גרסה משוכללת יותר של הסקריפט.

 

הערכת מחירי בתים

לכל המדריכים בנושא של למידת מכונה

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים