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



 
الرئيسيةبوابة 2أحدث الصورالتسجيلشاتدخول

 

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

اذهب الى الأسفل 
كاتب الموضوعرسالة
الزعيم
الرئيس
الرئيس
الزعيم


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

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

تطبق مثال علي الشبكة Empty
مُساهمةموضوع: تطبق مثال علي الشبكة   تطبق مثال علي الشبكة I_icon_minitimeالإثنين 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
بإمكانك تحميل البرنامج من هنا:
لتحميل البرنامج
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://pioneer.yoo7.com
الزعيم
الرئيس
الرئيس
الزعيم


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

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

تطبق مثال علي الشبكة Empty
مُساهمةموضوع: رد: تطبق مثال علي الشبكة   تطبق مثال علي الشبكة I_icon_minitimeالإثنين 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";

}

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://pioneer.yoo7.com
 
تطبق مثال علي الشبكة
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: البرامج :: منتدى البرمجة-
انتقل الى: