Theano לעומת TensorFlow: השוואה מהירה של מסגרות



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

עידן למידה עמוקה ו נמצא בשיאו. זה הולך ליצור 2.3 מיליון משרות עד שנת 2020. עם מסגרות חדשות שיעלו מדי חודש, TensorFlow ו- Theano היו שם זמן מה וזכו לכמות טובה של פופולריות גם כן. אז במאמר זה של Theano לעומת TensorFlow, אדון בנושאים הבאים:

מה זה תאנו?

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





theano-logo

זה מאפשר לך להגדיר, לייעל ולהעריך ביטויים מתמטיים הכוללים מערכים רב מימדיים ביעילות. זה יכול לפעול גם על מעבד וגם על GPU.



מה זה TensorFlow?

TensorFlow היא ספריית תוכנת קוד פתוח של Google Brain לתכנות זרימת נתונים במגוון משימות.

זוהי ספריית מתמטיקה סמלית המשמשת ליישומי למידת מכונה כמו .



Theano לעומת TensorFlow

נשווה את Theano לעומת TensorFlow בהתבסס על המדדים הבאים:

פּוֹפּוּלָרִיוּת:

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

מהירות ביצוע:

תיאנו TensorFlow
מבצע משימות מהירות יותר מ- TensorFlow. במיוחד משימות ה- GPU היחידות פועלות במהירות במהירות ב- Theano.מהירות הביצוע של TensorFlow היא איטית יותר בהשוואה ל- Theano, אך במשימות מולטי-GPU היא מובילה.

יתרונות טכנולוגיים:

תיאנו TensorFlow
הוא תומך במגוון רחב של פעולות.

Theano מחשבת את השיפוע בעת קביעת ה- שְׁגִיאָה.

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

TensorFlow עדיין צריך להיות תואם לתאנו.

זה לא המקרה של TensorFlow

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

תְאִימוּת:

תיאנו TensorFlow
Keras - ספריית למידה עמוקה ומדהימה תואמת את Theano. זה משתלב היטב.

יש לו תמיכה מקומית של Windows.

אלגוריתמים ומבני נתונים בג'אווה

הוא תומך גם בעטיפות ברמה גבוהה כמו לזניה.

אבל במקרה של TensorFlow, זה עדיין לא ממש שם. עם זאת, ב- v2.0 זה לא יהיה המקרה.

נכון לעכשיו, TensorFlow חסר תמיכה זו.

אין תמיכה בלזניה.

תמיכה בקהילה:

תיאנו TensorFlow
ל- Theano יש תמיכה גדולה יותר בקהילה כפי שהגיעה לפני TensorFlow.

יש לו יותר תיעוד מאשר TensorFlow

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

התיעוד פחות יחסית.

קריאות קוד:

בואו נשווה את Theano לעומת TensorFlow בהתבסס על הקוד שלהם. הנה אני לוקח סקריפט לדוגמא בסיסי שבו ניקח כמה נתונים מזויפים ונתחיל את ההתאמה הטובה ביותר עבור הנתונים האלה כדי שיוכל לחזות נקודות נתונים עתידיות.

קוד תאנו:

יבוא theano ייבא theano.tensor כ T ייבוא ​​numpy # שוב, בצע 100 נקודות numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # כוונו את דגם Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b # חישבו את הדרגתיות WRT את השגיאה הממוצעת בריבוע עבור כל עלות פרמטר = T.mean (T.sqr (y - Y)) שיפוע W = T.grad (עלות = עלות, wrt = W) שיפוע B = T.grad (עלות = עלות, wrt = b) עדכונים = [[W, W - שיפוע W * 0.5], [b, b - שיפוע B * 0.5]] רכבת = theano.function (קלטים = [X, Y], תפוקות = עלות, עדכונים = עדכונים, allow_input_downcast = True) עבור i ב xrange (0, 201): הרכבת (x_data, y_data) הדפיס W.get_value (), b.get_value ()

קוד שווה ערך TensorFlow:

ייבא tensorflow כ tf ייבא numpy כ np # הפוך 100 נקודות נתונים מזויפות ב- NumPy. x_data = np.float32 (np.random.rand (2, 100)) # קלט אקראי y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # בנה מודל ליניארי. b = tf. משתנה (tf.zeros ([1])) W = tf. משתנה (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # למזער את השגיאות בריבוע. הפסד = tf.reduce_mean (tf.square (y - y_data)) אופטימיזציה = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # לאתחול המשתנים. init = tf.initialize_all_variables () # הפעל את הגרף sess = tf.Session () sess.run (init) # התאם את המישור. לשלב במערך x (0, 201): sess.run (רכבת) אם שלב% 20 == 0: שלב הדפסה, sess.run (W), sess.run (b) # לומד הכי מתאים הוא W: [[0.100 0.200]], ב: [0.300]

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

אתחול דגם:

# TensorFlow b = tf. משתנה (tf.zeros ([1])) W = tf. משתנה (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .אחיד (-1.0, 1.0, (1, 2)), שם = 'W') y = W.dot (X) + b

כפי שניתן לראות כאן כי TensorFlow אינו מצריך טיפול מיוחד במשתני X ו- Y. מצד שני, Theano דורש מאמץ נוסף כדי לוודא שהמשתנים כן תשומות סמליות לפונקציה. ההגדרה של b ו- W הם מסבירים וגם נחמדים יותר.

הלמידה: אופטימיזציה

# הפסד זרימת טנסור = tf.reduce_mean (tf.square (y - y_data)) # (1) אופטימיזציה = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) שיפוע W = T.grad (עלות = עלות, wrt = W) # (2) שיפוע B = T. grad (עלות = עלות, wrt = b) # (2) עדכונים = [[W, W - שיפוע W * 0.5], [b, b - שיפוע B * 0.5]] # (2) רכבת = פונקציית ה-ean (כניסות = [X, Y], תפוקות = עלות, עדכונים = עדכונים, allow_input_downcast = נכון) # (3)

עבור (1) MSE כמעט זהה עבור Theano לעומת TensorFlow.

עבור (2) הגדרת מיטוב קל ופשוט כמו שזה נעשה במקרה של TensorFlow, אבל Theanno נותן לך הרבה מאוד שליטה על אופטימיזציה למרות שזה די ארוך ומגביר את מאמץ האימות.

עבור (3) פונקציית אימון הקוד כמעט דומה

גוף אימונים:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) לצעד ב xrange (0, 201): sess.run (רכבת) # Theano עבור i ב xrange (0, 201): הרכבת (x_data, y_data) הדפיס W.get_value (), b.get_value ()

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

פסק דין סופי: Theano לעומת TensorFlow

בהערה מסכמת, ניתן לומר כי לשני ה- API יש ממשק דומה . אבל TensorFlow הוא יחסית קל יותר אתה משתמש מכיוון שהוא מספק הרבה כלי ניטור וניקוי באגים. תיאנו לוקח את ההובלה שימושיות ומהירות , אך TensorFlow מתאים יותר לפריסה. ניירת או תיעוד שכן Theano הוא יותר מ- TensorFlow ו- TensorFlow להיות שפה חדשה לאנשים אין הרבה משאבים, מלכתחילה. ספריות עמוק של קוד פתוח כמו Keras, Lasagne ו- Blocks היו בנוי על גבי תיאנו.

אני מקווה שההשוואה הזו הספיקה לך כדי להחליט באיזו מסגרת לבחור, בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. הכשרת הסמכה זו אוצרת על ידי אנשי מקצוע בתעשייה בהתאם לדרישות ולדרישות התעשייה. תוכלו לשלוט במושגים כמו פונקציית SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) ולעבוד עם ספריות כמו Keras & TFLearn.

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות של 'Theano vs TensorFlow' ונחזור אליך.