11-Amaliy mashg’ulot: Perseptron arxitekturasi
Download 254.53 Kb. Pdf ko'rish
|
11-mavzu
11-Amaliy mashg’ulot: Perseptron arxitekturasi Preseptron algoritmi ikkita (binar) sinfni klassifikasiya qiluvchi algoritmidir. Bu model yagona neyrondan tarkib topgan bo’lib kirish qiymatini olib qaysi sinfga tegishli ekani bashorat qiladi. Buning uchun kirish qiymatlarining vaznlarga ko’paytmasi xisoblanadi. Kirish qiymatlarining vaznlarga ko’paytmasi yig’indisi faollashtirish deyiladi. Faollashtirish = vaznlar * kirish qiymatlari + b Agar faollashtirish 0.0 dan yuqori bo’lsa, model 1.0 qiymatni chiqaradi; aks holda 0.0 qiymat chiqaradi. Bashorat qilinadi 1: agar faollashtirish > 0.0 Bashorat qilinadi 0: agar faollashtirish <= 0.0 Perseptronning sxematik chizmasidan ko’rinib turibdiki kirish x i qiymatlariga mos w i vazn qiymatlari ko’paytirilib yig’indisi xisoblanadi. Chiqishda faollashtirish funksiyasi (bu yerda qadam “step” funksiya) yig’indini qiymati bo’sag’a qiymatidan katta yoki kichikligiga qarab 1 yoki 0 qiymatni beradi. Bo’sag’a faollashtirish funksiyasi Bo’sag’a faollashtirish funksiyasidan foydalanilganda vaznlar bilan kirish qiymatlari ko’paytmasi yig’indisi bo’sag’a qiymatidan katta bo’lsa neyron faollashadi aks holda neyron faollashmaydi. f(s) = 1: agar s > 0.0 f(s) = 0: agar s <= 0.0 Yuqoridagi formuladan ko’rinib turibdiki agar yig’indi s ning qiymati musbat bo’lsa f(s) funksiya qiymati 1 ga teng bo’ladi aks holda 0 ga teng bo’ladi. Funksiya qiymati 1 ga teng bo’lganda keyingi qatlamdagi neyron kirishiga yoki chiqishga qiymat beriladi. using System; namespace test{ class Program { static void Main(string[] args) { int[,] input = new int[,] { {1,0}, {1,1}, {0,1}, {0,0} }; int[] outputs = { 0, 1, 0, 0 }; Random r = new Random(); double[] weights = { r.NextDouble(), r.NextDouble(), r.NextDouble() }; double learningRate = 1; double totalError = 1; while (totalError > 0.2) { totalError = 0; for (int i = 0; i < 4; i++) { int output = calculateOutput(input[i, 0], input[i, 1], weights); int error = outputs[i] - output; weights[0] += learningRate * error * input[i, 0]; weights[1] += learningRate * error * input[i, 1]; weights[2] += learningRate * error * 1; totalError += Math.Abs(error); } } Console.WriteLine("Results:"); for (int i = 0; i < 4; i++) Console.WriteLine(calculateOutput(input[i, 0], input[i, 1], weights)); Console.ReadLine(); } private static int calculateOutput(double input1, double input2, double[] weights) { double sum = input1 * weights[0] + input2 * weights[1] + 1 * weights[2]; return (sum >= 0) ? 1 : 0; } } } Download 254.53 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling