Deep Learning with MATLAB in R2018a | MATLAB With Fun

מאת רועי פן

לפני מספר ימים שוחררה גרסת ה-MATLAB הראשונה לשנה זו, R2018a, והיא כוללת יכולות חדשות רבות ותיקוני באגים בכלים הקיימים, ואף מספר כלים חדשים (לסקירת יכולות הגרסה – לחצו פה).

תחום ה-Deep Learning קיבל תשומת לב רבה בגרסה הקודמת (לחצו לסקירה), וגם בגרסת R2018aנמשכים המאמצים של  MathWorks לתת ערך מוסף משמעותי למשתמשים ב-MATLAB בתחום זה.

כזכור – כבר בגרסה הקודמת היו ל-MATLAB יתרונות רבים בהשוואה לחלופות החינמיות, למשל:

    • מהירות אימון (ראו בתחתית הפוסט שנפתח על ידי לחיצה פה)
    • אפשרות להמיר בצורה אוטומטית את קוד ה-MATLAB לקוד CUDA מהיר וחסכוני בזיכרון לצורך מימוש על מערכות Embedded (לחצו לפוסט בנושא ה-GPU Coder)
    • נוחות עבודה – הודות לשימוש בסביבת פיתוח שנועדה למהנדסים ומדענים
    • יכולות ויזואליזציה ודיבאגינג – צפיה ב-activations, הצגת Deep Dream Images, צפיה במשקולות, בחינה של התקדמות האימון בכיוון הנכון וכו’…
  • תמיכה מקצועית בטלפון 03-7660111 לבעלי רישיון תחת חוזה שירות

וכל זאת – מבלי להתפשר על האפשרות לייבא מודלים שפותחו ואומנו בסביבות החינמיות (Keras,Caffe, PyTorch). בקרוב, אגב, גם מתוכננת תמיכה ב-ONNX לצורך ייבוא וייצוא של המידע.

אז…מה נשתנה בתחום ה-Deep Learning בגרסת R2018a? להלן החידושים המרכזיים:

    • תצוגה גרפית של הרשת בעזרת ה-Network Analyzer App – לצורך איתור בעיות אפשריות לפני ביצוע האימון (מתוכנן להשתחרר בעוד כשבוע)
    • יצירה, אימון וניתוח של רשתות DAG – אימון מהיר יותר (בעזרת GPUs), חישוב והצגה של activationsשל שכבות ביניים, החלפה פשוטה יותר של שכבות בעת עריכת רשתות מסוג זה.
    • המרה של קוד MATLAB לקוד CUDA – אפשר כעת להמיר גם רשתות DAG ולייצר קוד CUDA מתוך רשתות נפוצות נוספות כמו GoogLeNet, ResNet (50/101), SegNet ו-SqueezeNet (טעינת הרשת האחרונה בצורה נוחה צפויה להתאפשר במהלך אפריל). לרשימת הרשתות והשכבות הנתמכות על ידי ה-GPU Coder – לחצו פה. בנוסף, יש כעת אפשרות להשתמש ב-TensorRT בעת יצירת קוד CUDA, בהמשך לרמיזה שנרמזה בבלוג זה בעבר (לחצו לקריאה, לפני הגרף השני), מה שיאפשר קבלת קוד CUDA מהיר במיוחד.
    • תמיכה ביצירת קוד עבור חומרות נוספות – ה-GPU Coder מסוגל כעת לייצר קוד C עבור רשתות גם עבור מעבדים של אינטל (Intel Xeon CPU, למשל) ופלטפורמות Arm (Mali GPU, Neon), דבר שיאפשר, למשל, לטרגט טלפון אנדרואיד.
    • יכולות חדשות באפליקציות התיוג   ה-Ground Truth Labeler תומך כעת ב-Sub-Labels וכן בצירוף Attributes ל-labels (הנ”ל יכולים להיות ערכים נומרים ועשויים לסייע בתרחישי תיוג לצורך משימות רגרסיה). ה-Image Labeler מקל כעת עוד יותר על ביצוע תיוג ברמת הפיקסל, באמצעות אופציית ה-Smart Polygon המאפשרת לעדן את הסגמנטציה בתוך איזור עניין על ידי סימון פיקסלים בתור רקע או אובייקט.
    • ולידציה של Custom Layers  – כזכור, החל מהגרסה הקודמת ניתן לייצר סוגים חדשים של שכבות באמצעות שפת MATLAB, והחל מהגרסה הנוכחית – ניתן לבצע ולידציה אוטומטית לטיפוסי המידע והמימדים, לבחון תאימות מבחינת עבודה עם GPU ולוודא שהגרדיאנטים הוגדרו כנדרש.
    • תמיכה של רשתות CNN במידע תמונתי בעל יותר מ-3 ערוצים (מולטיספקטרלי)
    • שיפור מהירות ריצה על CPU באימון ו-Inference
    • אופטימייזרים חדשים – Adam ו-RMSProp (בנוסף ל-SGDM)
    • שימוש בטכניקת Gradient Clipping כדי למנוע “התפוצצות” של הגרדיאנטים ברשתות עמוקות במיוחד (שימושי לרוב בעבודה עם RNNs)
  • LSTM  תמיכה ברשתות LSTM עם שכבת רגרסיה בקצה; תמיכה ברשתות LSTM דו-כיווניות (כדי ללמוד מכל ההקשר של הרצף)

https://matlabisrael.blogspot.co.il

Leave a Reply