קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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

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

מהו סיווג רב-מעמדי?

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

אתה יכול להשתמש בסיווג רב-מעמדי כדי לסווג תמונות בכתב יד ממערך הנתונים של MNIST ל-10 קטגוריות. קטגוריות אלו יתאימו לספרות 0 עד 9.

הבנת מערך הנתונים של MNIST

מערך הנתונים של MNIST הוא מערך נתונים פופולרי עבור למידת מכונה ואלגוריתמים של ראייה ממוחשבת. הוא מכיל 70,000 תמונות בכתב יד בגווני אפור בגודל של 28 על 28 פיקסלים. הספרות בכתב יד הן בטווח 0 עד 9.

instagram viewer

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

הכנת הסביבה שלך

כדי לעקוב אחר הדרכה זו, עליך להכיר את ה יסודות פייתון. כדאי שיהיה לך גם א ידע בסיסי בלמידת מכונה. לבסוף, אתה אמור להיות נוח להשתמש ב-Jupyter Notebook או Google Colab.

קוד המקור המלא זמין ב-a מאגר GitHub.

צור מחברת Jupyter חדשה או היכנס אליו גוגל קולאב. הפעל פקודה זו כדי להתקין את החבילות הנדרשות:

!pip התקן את numpy matplotlib tensorflow opencv-python

אתה תשתמש ב:

  • Matplotlib להדמיית נתונים.
  • NumPy כדי לתפעל מערכים.
  • TensorFlow כדי ליצור ולהכשיר את המודל שלך.
  • OpenCV כדי להזין את הדגם עם ספרות בכתב יד משלך.

ייבוא ​​המודולים הדרושים

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

יְבוּא זרימת טנסור כפי ש tf
מ זרימת טנסור יְבוּא קרס
יְבוּא matplotlib.pyplot כפי ש plt
%matplotlib מוטבע
יְבוּא רדום כפי ש np
יְבוּא cv2

שורת הקוד השנייה מייבאת את מודול Keras מה- ספריית Google TensorFlow. אתה תשתמש ב-Keras כדי לאמן את הרשת העצבית העמוקה שלך עם TensorFlow בתור הקצה האחורי.

טעינה והצגה של ערכת הנתונים

מערך הנתונים של MNIST מובנה ב-Keras. טען את מערך הנתונים של MNIST ופצל אותו לקבוצות הדרכה ובדיקות. אתה תשתמש בערכת האימונים כדי לאמן את המודל שלך ובערכת המבחן כדי להעריך את הדיוק של המודל שלך בסיווג תמונות חדשות שלא נראו.

(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()

בדוק את אורך ההכשרה והמבחנים. מערך הנתונים של MNIST כולל 60,000 תמונות לאימון ו-10,000 תמונות לבדיקה.

לן (X_train)
לן (X_test)

בדוק את צורת התמונה הראשונה במערך הנתונים של MNIST שאמור להיות 28 על 28 פיקסלים. לאחר מכן הדפס את ערכי הפיקסלים שלו ודמיין אותם באמצעות Matplotlib.

X_train[0].צוּרָה
X_train[0]
plt.matshow (X_train[0])
y_train[0]

פלט ההדמיה הוא כדלקמן:

התמונה המדומיינת מראה שהתמונה הראשונה במערך הנתונים מכילה את המספר חמש.

עיבוד מוקדם של נתונים

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

מנרמל את ערכי הפיקסלים

נרמל את ערכי הפיקסלים של התמונות במערך הנתונים על ידי חלוקת כל ערך ב-255. ערכי הפיקסלים של מערך הנתונים הלא מנורמל נעים בין 0 ל-255 כאשר אפס הוא שחור ו-255 הוא לבן. חלוקת כל ערך פיקסל ב-255 מבטיחה שכל פיקסל נמצא בטווח שבין 0 ל-1. זה מקל על המודל ללמוד את התכונות והתבניות הרלוונטיות בנתונים.

X_train = X_train / 255
X_test = X_test / 255

לאחר מכן הדפס את ערכי הפיקסלים של התמונה הראשונה.

X_train[0]

שימו לב שהם נמצאים כעת בטווח שבין 0 ל-1.

המרת מטריצות התמונה למערך 1D

שכבת הקלט של הרשת העצבית מצפה בדרך כלל לכניסות 1D, אז צור מערך 1D של ערכי הפיקסלים של התמונה. לשם כך, השתמש בפונקציה reshape() כאשר מספר הגולמיים מוגדר למספר התמונות במערך הנתונים.

X_train_flattened = X_train.reshape (len (X_train), 28 * 28)
X_test_flattened = X_test.reshape (len (X_test), 28 * 28)
X_train_flatened.shape
X_train_flatened[0]

התמונות שלך מוכנות כעת לאימון ובדיקת המודל.

יצירת מודל הרשת העצבית העמוקה

צור מודל רציף עם מודול Keras של Tensorflow באמצעות שכבת קלט, שתי שכבות נסתרות ושכבת פלט. הגדר את צורת הקלט ל-28 על 28 מכיוון שזו הצורה של התמונות המקוריות במערך הנתונים. השתמש ב-128 צמתים עבור השכבות הנסתרות. שכבת הפלט צריכה לכלול 10 נוירונים בלבד מכיוון שאתה מסווג רק ספרות 0 עד 9.

דגם = קרס. סִדרָתִי([
keras.שכבות. שטח (input_shape=(28, 28)),

keras.שכבות. צָפוּף(128, הפעלה='רלו'),
keras.שכבות. צָפוּף(128, הפעלה='רלו'),

keras.שכבות. צָפוּף(10, הפעלה='softmax')
])

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

model.compile (אופטימיזר='אדם',
הפסד='קרוסנטרופיה_קטגורית_דלה',
מדדים=['דיוק'])

model.fit (X_train, y_train, epochs=5)

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

model.evaluate (X_test, y_test)

הפונקציה evaluate תחזיר את האובדן והדיוק של המודל. הדגם מייצר דיוק של 98%.

שימוש במודל כדי לסווג ספרות בכתב יד משלך

כדי לסווג את הספרות שלך בכתב יד, עליך להכין את התמונות שלך כך שיתאימו לאלו של מערך הנתונים של MNIST. אם לא תעשה זאת, יוביל הדגם שלך לביצועים גרועים.

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

  1. טען את התמונה המכילה את הספרה באמצעות OpenCV.
  2. המר אותו לגווני אפור ושנה את גודלו ל-28 על 28 פיקסלים.
  3. הפוך ונרמל את ערכי הפיקסלים.
  4. לבסוף, שטחו את התמונה למערך 1D.

העבירו את התמונה המעובדת מראש למודל לצורך חיזוי והדפיסו את הערך החזוי על המסך.

img = cv2.imread('digits/digit1.png', cv2.IMREAD_GRAYSCALE)
img_resize = cv2.resize (img, (28, 28))
img_flip = cv2.bitwise_not (img_resize)
img_normalized = img_flip.astype('float32') / 255.0

# שטחו את התמונה למערך 1D
input_data = img_normalized.flatten().reshape( 1,28,28)

# בצע תחזית באמצעות המודל
prediction = model.predict (input_data)
הדפס (f'תחזית: {np.argmax (תחזית)}')

העברת תמונה מעובדת מראש המכילה מספר לדגם.

הפלט של המודל הוא כדלקמן:

המודל הצליח לסווג נכון את הספרה שבע.

רשתות עצביות בצ'אטבוטים

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

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