ייצוא מודל בינה מלאכותית לשימוש בדפדפן
אחרי שלמדנו כיצד לפתח מודלים של בינה מלאכותית הגיע הזמן לאפשר למשתמשים רגילים להשתמש בבינה שאנו מפתחים. הממשק שדרכו אנשים בדרך כלל עובדים עם תוכנות הוא באמצעות האינטרנט. מדריך זה מסביר כיצד לייצא מודלים של בינה מלאכותית מבוססי ספריית 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 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.