תמיר נווה
שיעור #1 – מהי למידת מכונה
שיעור #13 – תרגיל מסכם שני, הכוונה לפתרון ופתרון
שיעור #12 – תרגיל ראשון: הכוונה לפתרון ואז פתרון
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import random
ax = plt.axes()
for n in range(10):
x = random.random()
y = random.random()
r = random.random()
g = random.random()
b = random.random()
for circle_rad in range(0,10):
p1 = patches.Circle((x, y), circle_rad/10, facecolor=(r,g,b))
ax.add_patch(p1)
plt.pause(.00000001)
שיעור #11 – תרגיל מסכם ראשון
import matplotlib.pyplot as plt
import matplotlib.patches as patches
ax = plt.axes()
p1 = patches.Circle((0.2, 0.3), 0.1, facecolor=(1, 0, 0))
p2 = patches.Rectangle((0.6, 0.6), 0.2, 0.1, facecolor=(1, 1, 0))
ax.add_patch(p1)
ax.add_patch(p2)
plt.pause(0.5)
ax.cla()
שיעור #10 – להכניס חיים עם גרפיקה
import matplotlib.pyplot as plt
import matplotlib.patches as patches
ax=plt.axes()
p1 = patches.Circle((0.2, 0.3), 0.1, facecolor=(1,1,0))
ax.add_patch(p1)
plt.show()
שיעור #9 – פונקציות
הערות:
# יש לשים לב שהוספתי הערות לקוד ע”י שימוש בסימן –
מה שאומר שכל שורה שמתחיל ב # נועדה לנו המתכנתים (המחשב מתעלם ממנה)
– כמו בתנאים ובלולאות גם בפונקציות יש חשיבות לשוליים (indent), ז”א ההבדלה בין קוד ששייך לפונקציה לבין קוד ראשי הוא ע”י השוליים
ראינו דוגמה לפונקציה שקראנו לה addNumbers המקבלת שני מספרים (קלט) ומחזירה שני מספרים (פלט), וקוד ראשי שמפעיל את הפונקציה:
def addNumbers(x,y):
return x+y,x>
# Main code
print(addNumbers(4,5))
כמו כן ראינו קוד שמציג נתונים על אנשים אך עושה זאת בצורה לא יעילה ולא מומלצת (לא מבנית), כי למשל אם נרצה לשנות ולהוסיף עוד אנשים או עוד פרטים על אנשים נצטרך לכתוב עוד הרבה מידי שורות קוד:
print(“My name is Yossi”)
print(“I live in Tel Aviv”)
print(“My name is Baruch”)
print(“I live in Haifa”)
print(“My name is Dan”)
print(“I live in Beer Sheva”)
הדרך הנכונה\יעילה יותר לכתוב קוד זה (שעושה בדיוק אותו דבר) הינה ע”י שימוש בפונקציה שקראנו לה ShowDetails ולולאה שקוראת לפונקציה בעבור כל איש שרוצים להציג את הפרטים עליו: (יש לשים לב שבהגדרת הפונקציה אין פקודת return שמחזירה ערך כלשהוא, לא מחייב…)
def ShowDetails(name,city):
print(“My name is ” + name)
print(“I live in ” + city)
# Main code
names=[‘Yossi’,’Baruch’,’Dan’]
cities=[‘Tel Aviv’,’Haifa’,’Beer Sheva’]
for k in range(3):
ShowDetails(names[k], cities[k])
שיעור #8 – תנאים
כאן כבר עוסקים בדוגמה מעט יותר ארוכה
כדי להבין את הקוד קודם נבין את הפסדו-קוד
ז”א מה הקוד עושה בשפה חצי אנושית חצי של מחשב
פסדו-קוד:
- שמור מערך בזכרון של שלושה מילים: ספסל, חתול וכלב
- הגרל מספר בין 0 ל 2
- הדפס למשתמש: “נסה לנחש מה בחרתי”
- רוץ שלוש פעמים על:
- קלוט קלט מהמשתמש
- השווה האם הקלט מהמשתמש שווה למספר שהגרלתי
- אם כן הדפס למשתמש “צדקת!”
- אחרת הדפס למשתמש “לא…”
קוד להדגמת תנאים – משחק ניחוש:
import random
objects=[“bench”,”cat”,”dog”]
x=random.randint(0,len(objects)-1)
print(“Try to guess my thought . . . (take 3 guesses)”)
for k in range(3):
a=input(“Trial #” + str(k) + “: “)
if a==objects[x]:
print(“You Right !”)
else:
print(“Nope…”)
שיעור #7 – לנפות (לדבג) חלק 2
קוד המחשב עצרת:
factorial=1
for k in range(1,30):
factorial=factorial * k
print(factorial)
שיעור #6 – לנפות (לדבג) חלק 1
מקשי קיצור לניפוי (debug) של קוד ב Pycharm:
F7 – Step Into (הרץ שורת קוד נוכחית וכנס לפונקציות אם יש)
F8 – Step Over (הרץ שורת קוד נוכחית)
F9 – Resume Program (המשך ריצה כרגיל משורת הקוד הנוכחית)
Ctrl+F2 – Stop (עצור)
Ctrl+F8 -Toggle Line Breakpoint (הוסף\הסר נקודת עצירה)
שיעור #5 – לולאות
דוגמא פשוטה ללולאה:
for k in range(3,80,3):
print(k)
דוגמא נוספת ללולאה – קוד שמחשב עצרת:
factorial=1
for k in range(1,30):
factorial=factorial * k
print(factorial)
יש לשים לב: (אינדנטציה – indentation)
בשפת פייתון יש חשיבות לאינדנטציה (שוליים)
השורה הראשונה הינה ללא indent (שוליים) ולשורה השניה יש indent (שוליים)
רק השורות שיש להם שוליים ביחס לשורת ה for הן אלו שיבצעו בחזרתיות
ובאופן כללי נראה בהמשך שלמקטעי קוד מסויימים יש את אותם השוליים וכך ניתן להבדיל אותם ממקטעי קוד אחרים.
שיעור #4 – סוגי משתנים
קוד בסיסי להכרת סוגי משתנים:
a=432
b=213.452
c=[5,3,7,3]
d=”asdfjklsdjflkjsdlfjsdkl”
print(“Variable a= “,a,type(a))
print(“Variable b= “,b,type(b))
print(“Variable c= “,c,type(c))
print(“Variable d= “,d,type(d))
שיעור #3 – משתנים
קוד בסיסי של הכרת המושג משתנים:
a=22
b=30
c=a+b
print(“a =”,a)
print(“b =”,b)
print(“c =”,c)
שיעור #2 – לכתוב קוד
הקוד הראשון:
print(“hello”)
שיעור #1 – התקנות
קישור להורדת Python Interpreter:
https://www.python.org/downloads/
קישור להורדת Pycharm (גירסת Community):
https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows&code=PCC
דגשים:
- יש לבחור python 64bits
- בהתקנת הפייתון יש לסמן וי תחת add path
ריכוז מאוד מוצלח של קישורים בנושאי למידה עמוקה
מיועד ל- כל אחד (כתבה לא טכנית)
נכתב על ידי תמיר נווה
ריכוז מאוד מוצלח של קישורים של וידאוים, בלוגים, קודים, ספרים בנושאים
Deep learning Vision:
https://github.com/kjw0612/awesome-deep-vision
RNN:
https://github.com/kjw0612/awesome-rnn#codes
Tutorials:
https://github.com/TarrySingh/Artificial-Intelligence-Deep-Learning-Machine-Learning-Tutorials
Hello world!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
מהי למידה עמוקה
מיועד ל- כל אחד (כתבה לא טכנית)
נכתב על ידי תמיר נווה
“למידה עמוקה” (Deep Learning) הינו ענף ברשתות ניורונים שעשה מהפכה כמעט בכל תחומי האלגוריתמיקה.
המהפיכה התחילה בראייה ממוחשבת (computer vision) והמשיכה לנושאים שונים כמו עיבוד שפה טבעית (NLP), תרגום, עיבוד אות שמע (speech, voice), מכוניות אוטונומיות, רובוטיקה, התנהגות ברשת ועוד ועוד… רבים מכנים זאת (באופן שגוי) כבינה מלאכותית (AI=Artificial Intelligence) אך למעשה זה רק ענף של התחום.
המפורסמים שבהישגים בתחום הינם ניסוי החתול של גוגל, הנצחון הראשון של מחשב נגד אלוף העולם במשחק גו (וקודם לכן deepmind שנקנתה ע”י גוגל ביותר מחצי מיליארד דולר), ההתפתחות של המכוניות האוטונומיות.
כמו כן קיימים מגוון מוצרים ושירותים שכולנו משתמשים בהם, אשר מבוססים על למידה עמוקה כמו למשל siri, תירגום סימולטני בסקייפ, google photos, ועוד ועוד…
למידה עמוקה מושכת אליה יותר ויותר יזמים, מתכנתים ואלגוריתמאים ממגוון תחומים מכיוון שבעיות רבות שבעבר לא היו פתירות, הינן פתירות כעת ומהוות כר נרחב למיזמים.
ידוע שבתחום למידת המכונה (machine learning) יש צורך בהרבה רקע מתמטי ויש הרבה משוואות מתמטיות “מפחידות”
מנגד, דווקא ללמידה עמוקה נדרש יחסית מעט רקע מקדים, והרבה אנשים ללא רקע אקדמי קודם כלל מצליחים להכנס לתחום.
האינטואיציות הדרושות לתחום זה לרוב שונות מהאינטואיציות של אנשי האלגוריתמיקה מהדור הישן.
נדרשת פחות חשיבה בצורה של מודלים מתמטיים ויותר בצורה של איזו ארכיטקטורה תהיה אפקטיבית ותשיג את המטרה אם נזין לה הרבה נתונים ונאמן אותה בצורה נכונה.