קורס יסודות בינה מלאכותית : 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 |
- בנה בעזרת בינה מלאכותית – רשת ניירונים אשר מקבלת את הנתונים ומייצרת מודל
- הצג איפוקס , בדוק עבור 20 , 100 , 350 . הצג גרף ERROR LOST
- הרץ על המודל שאומן את המספרים בצעו פרדיקציה חשבו שגיע לפי נתוני TURE
-5 – 4.3 ,0 ,2,1.5
4.הצג את הנקודות על גרף הפונקציה
5.עבור סעיף 3 שאל את הבינה מלאכותית מה ניתן לשפר שהפרדיקציה תהייה טובה יותר
תרגיל 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() |
VS

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




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

4.3 נבא את התוצאות : הבאות
0.1 , 1.5 . -2.85 , 2.6
4.4 הצג את גרף הנתונים של סידרה a ואת הערכים לניסוי
נתונים ערכים לשאלה :
רשתות ניירונים ANN בינה מלאכותית
הרשת שבה השתמשנו היא רשת מסוג Classification (סיווג), כלומר – רשת שנועדה לבחור בין כמה אפשרויות ולהחליט לאיזו קטגוריה שייך הקלט. במקרה שלנו, הרשת מקבלת מיקום של נקודה במרחב (שני ערכים: X ו־Y) ומסווגת אותה לאחת משלוש קבוצות: אדום, ירוק או כחול.

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




