تطبق مثال علي الشبكة 8_6_52 كل عام وانتم بخير


انضم إلى المنتدى ، فالأمر سريع وسهل

تطبق مثال علي الشبكة 8_6_52 كل عام وانتم بخير

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

    تطبق مثال علي الشبكة

    الزعيم
    الزعيم
    الرئيس
    الرئيس


    ذكر
    عدد الرسائل : 1095
    العمر : 37
    الموقع : https://pioneer.yoo7.com
    العمل/الترفيه : الحاسب الالى
    المزاج : الكمبيوتر
    احترامك لقوانين المنتدى : 0
    نقاط العضو :
    تطبق مثال علي الشبكة Left_bar_bleue100 / 100100 / 100تطبق مثال علي الشبكة Right_bar_bleue

    الاوسمة : تطبق مثال علي الشبكة 110
    تاريخ التسجيل : 01/08/2008

    تطبق مثال علي الشبكة Empty تطبق مثال علي الشبكة

    مُساهمة من طرف الزعيم الإثنين 06 أكتوبر 2008, 14:18

    تطبيق مثال عملي على شبكة Perceptron
    المثال:
    تطبق مثال علي الشبكة NNEx
    لنفرض أن لدينا شبكة من النوع Perceptron ونريد تعليمها كيف تطبق الدالة المنطقية AND، و هذه الدالة تعطي القيمة 1 إذا كانت كلاً من قيمة المدخلين مساوية للواحد، وصفر في الحالات الأخرى.
    وإليك مجموعة الأمثلة التالية لتدريب الشبكة:

    I1
    I2
    t
    0.0
    0.0
    1.0
    1.0
    0.0
    1.0
    0.0
    1.0
    0
    0
    0
    1


    حيث I1 و I2 ترمز للمدخلات، بينما t ترمز للمخرج أو النتيجة الهدف (المرغوب بها).
    وقاعدة التحويل هي:
    if Sj>0 then Xj=1
    if Sj<=0 then Xj=0
    وسنفرض معدل التعلم بالقيمة C=0.5.
    لتمثيل هذه الشبكة فإننا نحتاج لوحدتي إدخال لأن هناك مدخلين، ووحدة معالجة واحدة لأن هناك مخرج واحد كالتالي:
    من الرسم نجد أن هناك طبقة واحدة من الوصلات البينية وسنفرض لها قيم أوزان مختلفة على أن تكون في المدى من -0.5 إلى 0.5
    w11=0.1
    w12=0.3
    سنبدأ الآن بالمدخل الأول ونطبق أول عميلة وهي عملية الجمع:
    S= 0.1 * 0.0 + 0.3 * 0.0
    S=0.0
    وحيث أن وحدة المعالجة هذه هي آخر وحدة معالجة فيجب تطبيق قاعدة التحويل:
    S=0.0<=0.0
    إذاً X=0
    وبعد ذلك سنطبق عملية ضبط الأوزان، ولكن أولاً نتحقق مما إذا كان هناك حاجة لضبط الأوزان أم لا:
    الناتج الهدف للمدخل الأول هو 0 والناتج الذي أخرجته الشبكة هو 0 وحاصل طرح هذين الناتجين هو 0، وهذا يدل على أن أوزان الشبكة ليست بحاجة إلى تعديل.
    لننتقل إلى المدخل الثاني مستخدمين نفس الأوزان السابقة لأنه لم يتم تعديلها لعدم الحاجة لذلك:
    نبدأ من جديد بتطبيق عملية الجمع:
    Sj=∑ai wji
    S= 0.1 * 0.0 + 0.3 * 1.0
    S=0.3
    ثم قاعدة التحويل:

    if Sj>0 then Xj=1
    if Sj<=0 then Xj=0
    S=0.3>0.0
    X=1
    وبعد ذلك عملية ضبط الأوزان:
    الناتج الهدف للمدخل الثاني هو 0 أيضاً، والناتج الذي توصلت له الشبكة هو 1 بطرح ناتج الشبكة من الناتج الهدف يعطي القيمة -1
    وهي غير مساوية للصفر لذا لا بد من ضبط جميع أوزان الشبكة.
    wjinew= wjiold+C(tj-Xj)ai
    w11new=0.1+ 0.5 * (-1)* 0.0

    w11new=0.1

    w12new=0.3+ 0.5 * (-1)* 1.0
    w12new= -0.2
    وبذلك نكون قد انتهينا من المدخل الثاني لنبدأ في الثالث مستخدمين الأوزان بعد تعديلها، متبعين نفس الخطوات السابقة:
    قاعدة الجمع:
    S= 0.1 * 1.0 +(- 0.2) * 0.0
    S=0.1
    قاعدة التحويل:
    S=0.1>0.0
    X=1
    بعد ذلك عملية ضبط الأوزان:
    الناتج الهدف للمدخل الثاني هو 0 أيضاً، والناتج الذي توصلت له الشبكة هو 1 بطرح ناتج الشبكة من الناتج الهدف يعطي القيمة -1
    وهي غير مساوية للصفر لذا لا بد من ضبط جميع أوزان الشبكة.
    عملية ضبط الأوزان:
    w11new=0.1+ 0.5 * (-1)* 1.0

    w11new= -0.4

    w12new= -0.2+ 0.5 * (-1)* 0.0
    w12new= -0.2
    ننتقل للمدخل الرابع والأخير مستخدمين الأوزان بعد التعديل:
    عملية الجمع:
    S= -0.4 * 1.0 +(- 0.2) * 1.0
    S= -0.6
    قاعدة التحويل:
    S= -0.6<0.0
    X=0
    بعد ذلك عملية ضبط الأوزان:
    الناتج الهدف للمدخل الثاني هو 1 أيضاً، والناتج الذي توصلت له الشبكة هو 0 بطرح ناتج الشبكة من الناتج الهدف يعطي القيمة 1
    وهي غير مساوية للصفر لذا لا بد من ضبط جميع أوزان الشبكة.
    عملية ضبط الأوزان:
    w11new= -0.4+ 0.5 * (1)* 1.0

    w11new= 0.1

    w12new= -0.2+ 0.5 * (1)* 1.0
    w12new= 0.3
    وبهذا نكون قد انتهينا من عرض جميع الأمثلة (متجهات من الأنماط) على الشبكة وعرض جميع الأمثلة على الشبكة تسمى محاولة، ففي هذه المحاولة أعطت الشبكة نتيجة واحدة فقط صحيحة من أصل 4 نتائج، أي أن الشبكة لم تتعلم بعد وتحتاج لمحاولات أخرى بنفس الطريقة، حتى تستطيع إعطاء إجابات صحيحة لكل الأمثلة، حينها نقول أن الشبكة تعلمت، ويتبقى فقط اختبارها.

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


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


    • بداية البرنامج:
    تطبق مثال علي الشبكة Per1


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


    • بعد ذلك ننتقل للخطوة الثانية وهي تدريب الشبكة، ويتم ذلك عن طريق تطبيق العمليات السابقة برمجياً على فئة التدريب ولعدة محاولات حتى تتعلم الشبكة:
    تطبق مثال علي الشبكة Per3


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


    ذكر
    عدد الرسائل : 1095
    العمر : 37
    الموقع : https://pioneer.yoo7.com
    العمل/الترفيه : الحاسب الالى
    المزاج : الكمبيوتر
    احترامك لقوانين المنتدى : 0
    نقاط العضو :
    تطبق مثال علي الشبكة Left_bar_bleue100 / 100100 / 100تطبق مثال علي الشبكة Right_bar_bleue

    الاوسمة : تطبق مثال علي الشبكة 110
    تاريخ التسجيل : 01/08/2008

    تطبق مثال علي الشبكة Empty رد: تطبق مثال علي الشبكة

    مُساهمة من طرف الزعيم الإثنين 06 أكتوبر 2008, 14:19

    لتحميل الشيفرة المصدرية للبرنامج
    public void PerceptronAlg() {
    int testPerformance;

    string text;




    testPerformance=NetPerformance();
    good[tries]=testPerformance;


    while(tries < SESSION)
    {
    if(testPerformance != total)
    {

    TeachNet();
    tries++;
    testPerformance=NetPerformance();
    good[tries]=testPerformance;




    }
    else
    break;



    }






    x = new double[tries+1];
    y = new double[tries+1];
    int i;
    for ( i=0; i
    {
    x[i] = Convert.ToDouble(i);
    y[i] = Convert.ToDouble( good[i] );
    }



    zedGraphControl1.GraphPane.AddCurve( "Sine Wave", x, y, Color.Olive, SymbolType.Circle);
    zedGraphControl1.GraphPane.AxisChange();
    zedGraphControl1.*******();




    if(NetPerformance()!= total)
    {
    text="network failedn The number of correct answers is: "+ Convert.ToString(NetPerformance());
    MessageBox.Show(text);
    }
    else
    {
    text="network succeedn The number of correct answers is: "+ Convert.ToString(NetPerformance());
    MessageBox.Show(text);
    }

    }




    public void TeachNet() {
    Vector pattern;

    int correctAnswer;
    int netOutput;
    for(int i=0;i
    {
    pattern = patterns[i];
    correctAnswer = target[i];
    netOutput = ThresholdRule(pattern);
    if( netOutput!= correctAnswer)
    {
    UpdateWeight(pattern,netOutput,correctAnswer);
    }

    }

    }



    public int ThresholdRule(Vector inputPat) {


    switch(s)
    {
    case "<":
    if(WeightedSum(inputPat) < S )
    return cat1;
    else
    return cat2;
    break;
    case ">":
    if(WeightedSum(inputPat) > S )
    return cat1;
    else
    return cat2;
    break;
    case "<=":
    if(WeightedSum(inputPat) <= S )
    return cat1;
    else
    return cat2;
    break;
    case ">=":
    if(WeightedSum(inputPat) >= S )
    return cat1;
    else
    return cat2;
    break;
    default:
    return 0;
    break;
    }
    }


    publicvoid UpdateWeight(Vector inputPat, int output, int desiredOutput) {
    w.x1 = w.x1 + C * (desiredOutput - output) * inputPat.x1;
    w.x2 = w.x2 + C * (desiredOutput - output) * inputPat.x2;
    bais = bais + C * (desiredOutput - output);
    }



    publicdouble WeightedSum(Vector inputs) {

    return
    (inputs.x1 * w.x1) + (inputs.x2 * w.x2) + bais;
    }



    publicint NetPerformance() {
    Vector pattern;
    int
    counter=0;
    for(int
    i=0;i
    {
    pattern=patterns[i];
    if
    (ThresholdRule(pattern)==target[i])
    counter++;


    }

    return
    counter;
    }



    publicvoid TestNet() {
    int [] dis=newint
    [total1];
    int
    netPass=0;
    Vector pattern;
    int
    correctAnswer;
    int
    netOutput;
    for(int
    i = 0;i
    {
    pattern = testingPattern[i];
    correctAnswer = testingTarget[i];
    netOutput = ThresholdRule(pattern);
    dis[i]=netOutput;

    if
    ( netOutput== correctAnswer)
    {
    netPass++;
    }

    }

    if
    (netPass == total1)
    label6.Text+="Network passed the testing process successfullyn Number of correct answers: "+Convert.ToString(netPass)+"t";
    else
    label6.Text+="Network didn't pass the testing process successfullyn Number of correct answers: "+Convert.ToString(netPass)+"t";

    }

      مواضيع مماثلة

      -

      الوقت/التاريخ الآن هو الأحد 19 مايو 2024, 22:18