קורס יסודות בינה מלאכותית : RB33-10 מבוא לרשתות נוירונים
חלק א : מבוא לרשתות נוירונים קצת חומר תיאורטי – איך הכל עובד ?
תרגיל כיתה 1 : תרגול COLAB רשת נוירונים
התקן ספריות לפי הצורך – עבוד שלב אחרי שלב -פנה למרצה לשאלות
נתונה טבלה הבאה תוצאות ניסוי מעבדה
| # | X | Y |
|---|---|---|
| 1 | -4.000 | -1285.600 |
| 2 | -3.837 | -1056.338 |
| 3 | -3.673 | -859.830 |
| 4 | -3.510 | -692.529 |
| 5 | -3.347 | -551.145 |
| 6 | -3.184 | -432.619 |
| 7 | -3.020 | -333.606 |
| 8 | -2.857 | -251.001 |
| 9 | -2.694 | -181.925 |
| 10 | -2.531 | -123.737 |
| 11 | -2.367 | -74.024 |
| 12 | -2.204 | -30.599 |
| 13 | -2.041 | 8.259 |
| 14 | -1.878 | 43.950 |
| 15 | -1.714 | 77.434 |
| 16 | -1.551 | 109.240 |
| 17 | -1.388 | 139.488 |
| 18 | -1.224 | 167.912 |
| 19 | -1.061 | 193.890 |
| 20 | -0.898 | 216.475 |
| 21 | -0.735 | 234.426 |
| 22 | -0.571 | 246.237 |
| 23 | -0.408 | 250.174 |
| 24 | -0.245 | 244.325 |
| 25 | -0.082 | 226.646 |
| 26 | 0.082 | 194.999 |
| 27 | 0.245 | 147.192 |
| 28 | 0.408 | 81.025 |
| 29 | 0.571 | -5.592 |
| 30 | 0.735 | -114.849 |
| 31 | 0.898 | -249.536 |
| 32 | 1.061 | -412.119 |
| 33 | 1.224 | -604.807 |
| 34 | 1.388 | -829.621 |
| 35 | 1.551 | -1088.473 |
| 36 | 1.714 | -1383.237 |
| 37 | 1.878 | -1715.813 |
| 38 | 2.041 | -2088.194 |
| 39 | 2.204 | -2502.529 |
| 40 | 2.367 | -2961.189 |
| 41 | 2.531 | -3466.831 |
| 42 | 2.694 | -4022.476 |
| 43 | 2.857 | -4631.575 |
| 44 | 3.020 | -5297.084 |
| 45 | 3.184 | -6022.547 |
| 46 | 3.347 | -6811.175 |
| 47 | 3.510 | -7666.923 |
| 48 | 3.673 | -8593.574 |
| 49 | 3.837 | -9595.813 |
| 50 | 4.000 | -10678.304 |
תרגיל 1
בעזרת בינה מלאכותית כתוב תכונה לפי שלבים זכרו לבקש קוד עבדו סביבת COLAB
1.העתק את הטבלה ובנה קוד פייתון שמציג הנתונים בגרף בצבע כחול שים לב לכל הנתונים הרץ בקולאס
2.צור בינה מלאכותית עבוד הנתונים הבונה קוד עבור רשת נוירונים ( מסוג ANN ) לניבוי ערכים עבור תוצאות מעבדה הכניס הערות בקוד להסבר מאנגלית
3. . הצג גרף ERROR LOST , val עבור 20 איפוקס בלבד
4. שמור את המודל שנוצר הדפס את הנתיב שהוא נשמר model name
5.בעזרת קוד תוכנה טען את המודל שנישמר ובצע פרדיקציה עבור הנתונים הבאים
-5 – 4.3 ,0 ,2,1.5 , חשבו את גודל השגיאה מול נתוני TURE
4.הצג את הנקודות הפרדיקציה על גבי הגרף על גרף הפונקציה בצבע אדום
5. בקוד ידנית ל 150 איפוקס מה קרה ל VAL , ERROR LOST
6.הצג למרצה את התוצאה
תרגיל 2
- בקשת מהבינה מלאכותית לכתוב שוב אותו קוד עם הערות ובלוקים ומה עושה כל בלוק
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# ========================================== # AI MODEL TRAINING FOR X -> Z # ========================================== import numpy as np import pandas as pd import matplotlib.pyplot as plt import tensorflow as tf # כדי לקבל תוצאה דומה בכל הרצה np.random.seed(42) tf.random.set_seed(42) # ========================================== # 1. DATASET # ========================================== data = { "X": [-4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0], "Z": [25360, 12000, 4800, 1150, 0, -210, 0, 220, 300, 300, 310, 400, 490, 300, -800, -3700, -10040] } df = pd.DataFrame(data) print("Dataset:") display(df) # ========================================== # 2. SHOW DATA GRAPH # ========================================== plt.figure(figsize=(8, 5)) plt.scatter(df["X"], df["Z"], label="Data Points") plt.plot(df["X"], df["Z"], label="Original Data") plt.xlabel("X") plt.ylabel("Z") plt.title("Original Dataset X -> Z") plt.grid(True) plt.legend() plt.show() # ========================================== # 3. PREPARE DATA # ========================================== X = df["X"].values.reshape(-1, 1) Z = df["Z"].values.reshape(-1, 1) # Normalization X_mean = X.mean() X_std = X.std() Z_mean = Z.mean() Z_std = Z.std() X_norm = (X - X_mean) / X_std Z_norm = (Z - Z_mean) / Z_std # ========================================== # 4. BUILD AI MODEL # ========================================== model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation="tanh", input_shape=(1,)), tf.keras.layers.Dense(64, activation="tanh"), tf.keras.layers.Dense(64, activation="tanh"), tf.keras.layers.Dense(1) ]) model.compile( optimizer=tf.keras.optimizers.Adam(learning_rate=0.01), loss="mse" ) model.summary() # ========================================== # 5. TRAIN MODEL # ========================================== EPOCHS = 350 history = model.fit( X_norm, Z_norm, epochs=EPOCHS, verbose=1 ) # ========================================== # 6. SHOW ERROR / LOSS GRAPH # ========================================== plt.figure(figsize=(8, 5)) plt.plot(history.history["loss"]) plt.xlabel("Epoch") plt.ylabel("Loss / Error") plt.title("Learning Error Graph") plt.grid(True) plt.show() # ========================================== # 7. PREDICTION TEST # ========================================== test_x = np.array([-5, -4.3, 0, 2, 1.5]).reshape(-1, 1) # Normalize test input test_x_norm = (test_x - X_mean) / X_std # Predict normalized Z pred_norm = model.predict(test_x_norm) # Convert prediction back to real Z values pred_z = pred_norm * Z_std + Z_mean result = pd.DataFrame({ "X": test_x.flatten(), "Predicted Z": pred_z.flatten() }) print("Predictions:") display(result) # ========================================== # 8. SHOW MODEL PREDICTION ON GRAPH # ========================================== x_curve = np.linspace(-5, 4.5, 300).reshape(-1, 1) x_curve_norm = (x_curve - X_mean) / X_std z_pred_norm = model.predict(x_curve_norm) z_pred = z_pred_norm * Z_std + Z_mean plt.figure(figsize=(9, 6)) plt.scatter(X, Z, label="Original Data") plt.plot(x_curve, z_pred, label="AI Prediction") plt.scatter(test_x, pred_z, color="red", label="Test Predictions") plt.xlabel("X") plt.ylabel("Z") plt.title("AI Model Prediction") plt.grid(True) plt.legend() plt.show() |
תרגיל כיתה 3 :
התקן ספריות לפי הצורך – עבוד שלב אחרי שלב -פנה למרצה לשאלות
בניסוי במעבדה התקבל הגרף הממדי הבא מתוך קובץ CSV
הורד את הקובץ surface_data
נתו
-
-
- פתח את הקובץ בקובץ אקסל ובדוק את נתוני הגרף
- בנה קוד בקולאב שטוען את הקובץ ממחשב PC לתוך הקולאב , הצג גרף בצורה תלת מימד
- בנה טבלת סיכום לפי הנתונים למדדים מינימום מקסימום ממוצע וסטיית תקן

-
5. תכנון רשת נוירונים עבור קובץ CSV
צור בינה מלאכותית עבוד הנתונים הבונה קוד עבור רשת נוירונים ( מסוג ANN ) לניבוי ערכים עבור תוצאות מעבדה הכניס הערות בקוד להסבר מאנגלית
6. . הצג גרף ERROR LOST , val עבור 20 איפוקס בלבד
7. שמור את המודל שנוצר הדפס את הנתיב שהוא נשמר model name
8.בעזרת קוד תוכנה טען את המודל שנישמר ובצע פרדיקציה עבור הנתונים הבאים
x y -0.497487 1.100503 1.552764 -1.341709 -2.969849 2.366834 0.316583 0.467337 1.160804 0.346734 -2.035176 2.487437 -2.336683 2.246231 1.703518 -1.251256 1.190955 -1.251256 -2.577889 -1.673367
9.הצג את הנקודות הפרדיקציה על גבי הגרף על גרף הפונקציה בצבע אדום
10. בקוד ידנית ל 250 איפוקס מה קרה ל VAL , ERROR LOST
11 . בדוק בעזרת המודל את הפרדיקציה של Z את הנתונים הבאים הצג אותם על גרף כנקודה אדומה
המודל ינבא את ערכי Z ויציג אותם על גרף
x y
-1.284921 2.419773
0.883402 -0.514882
2.735112 1.109331
-2.421007 -1.774902
0.119822 2.888441
1.663401 -2.005118
-0.778201 0.336490
2.190342 -0.993112
-1.900771 1.558240
0.444829 -2.721045
12. הצג למרצה את הגרפים ואת הפרדיקציה וחשב ערך TRUE
12
VS

3. תרגול 1 : הרצת תרגיל (עם קוד פשוט ) רשתות נוירונים פרדיקציה
קישור :
https://colab.research.google.com/drive/1aS5y_LKPePjloHi57PZforMGqOESZGgX?usp=sharing




4. תרגיל כיתה 2 : בניית רשת נוירונים בעזרת בינה מלאכותית
4.1 בנה בעזרת בינה מלאכותית רשת נוירונים בקוד פייתון – בסביבת פיתוח קולאב אשר מקבל את הנתונים הבאים
4.2 הצג את גרף הלמידה הפעל על 40 איפוקס , 100 איפוקס האם הרשת למדה או דרוש יותר אימון ?

4.3 נבא את התוצאות : הבאות
0.1 , 1.5 . -2.85 , 2.6
4.4 הצג את גרף הנתונים של סידרה a ואת הערכים לניסוי
נתונים ערכים לשאלה :
תרגיל כיתה 5 :
בניסוי במעבדה התקבל הגרף הממדי הבא מתוך קובץ CSV
הורד את הקובץ surface_data
נתו
- פתח את הקובץ בקובץ אקסל ובדוק את נתוני הגרף
- בנה קוד בקולאב שטוען את הקובץ ממחשב PC לתוך הקולאב , הצג גרף בצורה תלת מימד
- בנה טבלת סיכום לפי הנתונים למדדים מינימום מקסימום ממוצע וסטיית תקן

5. תכנון רשת נוירונים
רשתות ניירונים ANN בינה מלאכותית
הרשת שבה השתמשנו היא רשת מסוג Classification (סיווג), כלומר – רשת שנועדה לבחור בין כמה אפשרויות ולהחליט לאיזו קטגוריה שייך הקלט. במקרה שלנו, הרשת מקבלת מיקום של נקודה במרחב (שני ערכים: X ו־Y) ומסווגת אותה לאחת משלוש קבוצות: אדום, ירוק או כחול.

רשת כזו שייכת למשפחת הרשתות העצביות המלאכותיות (Artificial Neural Networks), ובפרט – לרשתות מסוג Dense Feedforward, שבהן כל נוירון בשכבה אחת מחובר לכל הנוירונים בשכבה הבאה. הרשת מתבססת על למידה מפוקחת (Supervised Learning) – כלומר, היא לומדת מדוגמאות מתויגות מראש.
במה היא שונה מרשת שחוזה ערך כמו טמפרטורה?
רשת שמטרתה לחזות טמפרטורה (או כל ערך מספרי אחר) נקראת Regression Network (רשת רגרסיה). במקום לבחור קטגוריה, היא מנבאת ערך רציף אחד, למשל: 21.4 מעלות.
הבדל עיקרי בין סיווג לרגרסיה:
-
Classification – הפלט הוא אחת מתוך קבוצה סופית של אפשרויות (למשל: אדום, ירוק או כחול) , זהוי מילה שהוקלטה , קטגוריה של המוצר , קטגוריה של התקלה , האם האדם קופץ הולך , נופל מתגלגל .
- הפלט ברשת סיווג הוא לרוב וקטור של הסתברויות לכל קטגוריה, והרשת בוחרת את ההסתברות הגבוהה ביותר.
-
Regression – הפלט הוא מספר ממשי אחד מתוך טווח בלתי מוגבל (למשל: חיזוי מחיר של מוצר, טמפרטורה , גובה , לחץ של תמיסה).
- רגרסיה הפלט הוא פשוט מספר אחד – פלט אחד




