"منظمة العفو الدولية الفصول الدراسية في نهاية الأسبوع" سلو وResNet (مواد قانون) آلة التعلم سوف تواجه "حفرة"

قدمنا في القسم السابق، وهي تقنية أكثر استشرافا للمستقبل، ودعا وحدات سلو مخفي و أكثر سهولة الأمثل ResNet، وسلو زيادة تبسيط عملية للسلوك الخلايا العصبية دفعة Normaliztion ضمنية طبقة تطبيع الفكر، وResNet فمن لإضافة اتصال الهوية يجعل شبكة العميقة لديها تدفق التدرج كبير في عملية التدريب، لتخفيف يختفي التدرج.

نحن أول بيانات أزياء MNIST كل طبقة 56 و 20 لبناء طبقة الشبكة العصبية بسيطة، واستخدام التقنيات شيوعا في الدورة السابقة لدينا المعنية، كنا كما خوارزمية الأمثل آدم، RELU وحدات المخفية. لاحظ أن هنا لا نستخدم هذه العملية الإلتواء، لمجرد أننا نريد أن نرى العمل على حد سواء في عملية التحسين، بدلا من تمثيل الحصول على أفضل.

في keras، اعتمادا على المعرفة التي تعلمناها سابقا، وتحقيق هذا أمر سهل، فإننا يمكن أن يحدد بسرعة الشبكتين التالية:

استيراد نمباي كما أرستها

من keras.layers استيراد المدخلات

من keras.datasets استيراد fashion_mnist، mnist

من keras استيراد النماذج، والطبقات

matplotlib.pyplot استيراد كما معاهدة قانون البراءات

من keras.models استيراد نموذج

من keras.models استيراد متسلسل

من أبتيميزر استيراد keras

من keras.layers استيراد الكثيفة، التسرب، تفعيل

من keras.utils to_categorical استيراد

من BatchNormalization keras.layers استيراد كما BN

(X_test، y_test)، (X_train، y_train) = fashion_mnist.load_data ()

train_labels = to_categorical (y_train)

test_labels = to_categorical (y_test)

X_train = X_train.reshape (10000،28 * 28)

X_train = X_train.astype ( 'float32') / 255

X_test = X_test.reshape (60000، 28 * 28)

X_test = X_test.astype ( 'float32') / 255

صفر  نموذج (ن):

 نموذج = models.Sequential ()

 model.add (الكثيفة (512، وتفعيل = 'relu، input_shape = (28 * 28،)))

 إلى  أنا في  مجموعة (ن):

 model.add (الكثيفة (256، 'relu' = تفعيل))

 model.add (الكثيفة (10، تفعيل = "softmax '))

model.compile (محسن = optimizers.Adam ()، وفقدان = 'categorical_crossentropy'، \

 مقاييس = )

 عودة (النموذجي)

MODEL1 = نموذج (20)

his1 = model1.fit (X_train، train_labels، batch_size = 128، validation_split = 0.3، مطول = 1، العهود = 10)

MODEL2 = نموذج (56)

his2 = model2.fit (X_train، train_labels، batch_size = 128، validation_split = 0.3، مطول = 1، العهود = 10)

هنا نستخدم حلقة بسيطة لتحقيق العدد التراكمي للطبقات، (علما أن هذا هو 21 طبقات و 57 طبقات، بسبب طبيعة طبقة المدخلات هي طبقة خفية، لكنها لن تؤثر على تفسير الواقع، يغفر ما بلدي الإهمال) تليها الخطأ المراقبة على التدريب والاختبار للمجموعات مع العهود التغيير:

W1 = his1.history

W2 = his2.history

matplotlib.pyplot استيراد كما معاهدة قانون البراءات

سيبورن استيراد كما SNS

sns.set (نمط = 'الأبيض')

plt.plot (المدى (10)، ، 'ذ -'، والتسمية = '20 طبقة ')

plt.plot (المدى (10)، ، 'ص -'، والتسمية = '56 طبقة ')

plt.xlabel ( 'العهود')

plt.ylabel ( 'خطأ اختبار')

plt.legend ()

ووفقا لخطأ على نقطة أداء مجموعة الاختبار للعرض، أداء 56 طبقة نموذج بسيط أقل بكثير من طراز 20 طابقا فقط، وهذه المرة، ونحن بحاجة لمراقبة أداء خطأ على مجموعة التدريب لتحديد النموذج الذي هو طبقة بسيطة 56 كان التدريب الجيد، لأنه وفقا لهذه النظرية، والمزيد من طبقات الشبكة العصبية، وزيادة قدرة هذا النموذج، لا يمكننا ببساطة تبدو في مجموعة اختبار لتحديد ما إذا تم أو لم يتم تركيبها نموذج للتدريب:

plt.figure ()

plt.plot (المدى (10)، ، 'ذ -'، والتسمية = '20 طبقة ')

plt.plot (المدى (10)، ، 'ص -'، والتسمية = '56 طبقة ')

plt.xlabel ( 'العهود')

plt.ylabel ( 'خطأ التدريب')

plt.legend ()

plt.show ()

يمكننا أن نرى أن 56 نموذج طبقة تقريبا لم تحصل على أي تدريب، يتم الاحتفاظ معلمات الشبكة العصبية إلى حد كبير في تهيئة مستوى، وهو ما نحتاج إليه للاستفادة من هذه المشكلة الأمثل حلها سلو وResNet.

سلو المستخدمة في keras

سلو في keras بسيطة نسبيا، ونحن يمكن تنشيط مباشرة تنشيط طبقة الحجج وظيفة ل"سلو" (وبطبيعة الحال، يمكننا أيضا إضافة طبقة منفصلة أنفسهم على استعداد، والتي سيتم تغطيتها في الدروس اللاحقة):

صفر  lay56_model (ن):

 نموذج = models.Sequential ()

 model.add (الكثيفة (512، وتفعيل = "سلو"، input_shape = (28 * 28،)))

  إلى  أنا في  مجموعة (ن):

 model.add (الكثيفة (256، "سلو '= تفعيل)) # relu إلى سلو

 model.add (الكثيفة (10، تفعيل = "softmax '))

model.compile (محسن = optimizers.Adam ()، وفقدان = 'categorical_crossentropy'، \

 مقاييس = )

عودة (النموذجي)

كرر الخطوات المذكورة أعلاه، وتعرض للتدريب على التوالي والخطأ على خطأ على مجموعة اختبار مجموعة التدريب:

كما يمكن أن يرى، على الرغم من أن مقارنة relu الكثير من الخير، ولكن عملية التحسين لا يزال ضعيفا، قد تكون هناك أسباب لجولات متكررة جدا، لأن النماذج سرعة التقارب والقدرة الكبيرة عادة ما تكون أبطأ، ونحن سوف العهود قابلة للتوسيع إلى 50 مرة، ونحن سوف نتطلع إلى مستوى أكثر مرضية من التقارب في الجزء الخلفي من جولات:

ولكن يمكن أن ينظر إليه من هذا النموذج الرقم، 56 طبقة من الأخطاء الاختبار والتدريب الشاملة أخطاء على الخطأ الكلي نموذج 20 طبقة، ثم وهذا هو لسلو سواء لاستخدامها؟ إذا كان لا يمكن أن يبنى من الشبكات العصبية تطبيع تفعل؟

هنا نحن بحاجة إلى إيلاء الاهتمام لشرطين سلو من:

  • ومن المفترض أن إدخال البيانات X هو موضوع لتوزيع جاوس القياسية، موحدة الطريقة التي كانت تستخدم في السابق، هو المقياس بسيط:

X_train = X_train.astype ( 'float32') / 255

لكننا نريد تغييره إلى توزيع جاوس، الصورة الرمادية في حد ذاته هو موتر من الدرجة الثانية، فإنه من الصعب القيام به مع الوسائل التقليدية التوحيد، سيضطر توحيد لتدمير بنية الصورة نفسها، ولكن بالنسبة لنا هذا لا علاقة له استخدام موحدة محلية الشبكة العصبية، وجميع البيانات تمهيد، يمكنك استخدام وسائل الأصلي موحدة:

من sklearn.preprocessing StandardScaler استيراد

X_train = X_train.reshape (10000،28 * 28)

نطاق = StandardScaler (). صالح (X_train)

X_train = scale.transform (X_train)

  • ومن المفترض أن معاملات الوزن طاعة الصفر الحسابي والتباين كما عكس أبعاد المدخلات، فمن الصعب للتأكد من أن عملية التدريب، كل سلو معاملات الوزن طاعة التوزيع، ولكن يمكننا على الأقل أن تفعل ذلك في عملية التهيئة ، keras توفر مهيئ lecun_normal، يمكننا بسهولة ضبط التهيئة لكل طبقة:

صفر  lay56_model (ن):

 نموذج = models.Sequential ()

 model.add (الكثيفة (512، وتفعيل = "سلو"، \

 kernel_initializer = lecun_normal ()، \

 input_shape = (28 * 28،)))

 إلى  أنا في  مجموعة (ن):

 model.add (الكثيفة (256، وتفعيل = "سلو"، \

 kernel_initializer = lecun_normal ()))

model.add (الكثيفة (10، kernel_initializer = lecun_normal ()، وتفعيل = "softmax '))

model.compile (محسن = optimizers.Adam ()، وفقدان = 'categorical_crossentropy'، \

 مقاييس = )

  عودة (النموذجي)

بعد ذلك، نقوم بتدريب المستقبل لتعديل نتائج النموذج هي كما يلي:

كما هو مبين، يمكننا أن نرى أن أعمق في بيانات الشبكة وتم تطبيع لتوزيع جاوس القياسية والمحددة التهيئة العملية الأوزان قيمة مساعدة في تحسين أفضل من الضحلة، سيتم تخفيض على بعد خطوات قليلة في الخطأ إلى أكثر مستويات منخفضة.

في وحدة نمطية البناء المتبقية Keras

نحن بحاجة إلى بناء شبكة مع وظيفة رسم الخرائط الهوية، ودورها هو تضاف المدخلات والانتاج الحالي قبل ان يحصل على طبقات، في keras نحن بحاجة لكتابة وظيفة:

صفر  identity_block (المدخلات، وحدة، والعمل):

 س = layers.Dense (وحدات، وتفعيل عمل =) (المدخلات)

 س = layers.Activation ( 'relu') (خ)

 س = layers.Dense (وحدات، وتفعيل عمل =) (خ)

 س = layers.Activation ( 'relu') (خ)

 س = layers.Dense (وحدات، وتفعيل عمل =) (خ)

 س = layers.Activation ( 'relu') (خ)

 س = layers.Dense (وحدات، وتفعيل عمل =) (خ)

 س = layers.add ( )

 س = layers.Activation ( 'relu') (خ)

 عودة  س

الذي تجدر الإشارة، اعتمدنا شكل بسيط من مجموع اثنين التنسورات، وظائف لامدا في الواقع بشكل جيد ويمكن أيضا أن تستخدم عملية محددة. ثم مرة أخرى إلى وظيفة التنشيط، والنظام هنا هو الأفضل عدم لتحويل، لأنه في آخر طبقة ربط وحدة الانتاج، ونحن ما زلنا نأمل أن يكون غير الخطية.

ثم نستخدم النموذج الوظيفي إضافة إلى ذلك identity_block، لأن النموذج هو أفضل وظيفية ومرنة:

صفر  res_model ():

 input_tensor = الإدخال (الشكل = (28 * 28،))

 س = الكثيفة (100، تفعيل = 'relu') (input_tensor)

 إلى  أنا في  مجموعة (14):

 س = identity_block (س، 100، 'relu')

 ذ = الكثيفة (10، تفعيل = 'softmax') (خ)

 نموذج = نموذج (المدخلات = input_tensor والمخرجات = ذ)

model.compile (محسن = optimizers.Adam ()، وفقدان = 'categorical_crossentropy'، \

 مقاييس = )

 عودة (النموذجي)

لأن كل وحدة تشمل طبقة المتبقية 4، لذلك نحن تدوير مجرد 14 مرة هنا، ولكن قبل بداية الدورة، لدينا طبقة إضافية، أي ما مجموعه 57 طبقات، ولكن لا يؤثر، لأن طبقة 57 يجب أن تكون أكثر من 56 طبقات الأمثل صعبة، لتسهيل العملية، يتم تعيين الخلايا العصبية طبقة خفية إلى 100 (وبطبيعة الحال، طبقة الشبكة 20، يجب تعيين عدد من الوحدات الخفية إلى 100)؛ لسهولة التفسير، لم نستخدم دفعة تطبيع، لأن تأثير يصبح حتى حسنا، نحن لا يمكن أن أقول في النهاية هو دور وحدة المتبقية أو تأثير BN.

بابي تدريبهم مباشرة، يمكنك الحصول على:

تدرب في الأصل أصعب طبقة الشبكة العصبية 56، إضافة بسيطة من وحدة المتبقية، فإن أثر التدريب تكون أعلى بكثير من طبقة تقارب الشبكة العصبية 20! البصيرة الأولى إلى قوة ResNet الطلاب الذين تهدئة ببطء، كوب من القهوة، وهذه المرة، ونحن لم يأخذ وحدة جدا المتبقية من ذلك بكثير وبنية معقدة، كل وحدة ترتيب بسيط لالمتبقية، والتغيير باختصار، لا علاقة بين الخريطة الهوية، ومخلفات وحدة الاتصال في العديد من المهام يمكن أن تستخدم أيضا يصبح معقدا جدا، ولكن المبدأ الأساسي هو نفسه.

الكاتب: الراهب دون هيد آند شولدرز للطبع، يرجى ترك رسالة وراء الكواليس، والامتثال للمعايير طبع

سلو وResNet (أوراق النظرية) | آلة التعلم سوف تواجه "حفرة"

قوي إزالة المخزون: دفعت جيجابايت اثنين GDDR5X نسخة GTX 10606GB الذاكرة

اندروز 10 نظام التعرض: الطلاقة أخيرا تجاوزت أبل! العضو: لقد سمعت هذه الكلمات 6 سنوات

مفهوم السيارات ليست بالضرورة السوبر مفهوم سيارة قوانغتشو للسيارات تشي تشوان ENTRANZE لاول مرة المحلية

وداعا الكلاسيكية: هذا سوني الكلاسيكية توقفت تماما المنتج

ألعاب التنظيم الكلي: تينسنت، نيتياس VS لحظة الألم من المصانع الصغيرة الكوارث

اللوحات الأم ASUS ROG ونشر مجموعة متنوعة من X299 الثقيلة منتجات جديدة، والكثير من وأسود

روثس ايفورا GT410 الرياضة المدرجة للبيع 972،000 يوان /4.1 ثواني Pobai

لينوفو ثينك باد E580 خريطة جولة دفتر: 6.9MM حدود الدقيقة

وخلافا لمعظم كمبيوتكس معرض الكمبيوتر! اليوم الأول Computex2017

كشف الصغيرة الكهربائية SUV CS3 بيف عضوا جديدا الفهد المسمى "هيلتر سكيلتر أغنية"

إطلاق HTC U12 الحياة، قد يكون جوجل بكسل 2 شقيق المفقود منذ زمن طويل