نمایش نتایج 1 تا 23 از 23

نام تاپیک: پیاده سازی شبکه ی عصبی در VB6

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    پیاده سازی شبکه ی عصبی در VB6

    سلام دوستان،
    کسی برای شبکه ی عصبی سورس کدی، قطعه کدی، ... چیزی داره اگه بخوام تو VB6 پیاده سازی کنم. اگه راهنمایی کنید خیلی ممنون می شم...

  2. #2

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    دوست عزیز منظورتان از شبکه عصبی چیست؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    منظورم شبکه ی عصبی مصنوعی یا همان Artificial Neural Network هست که در هوش مصنوعی و یادگیری کاربرد داره.

  4. #4

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    سلام - دوست گرامی شما برای پیاده سازی یک شبکه عصبی باید سراغ نرم افزار متلب بری که که تولباکس های زیادی هم در این رابطه داره .برای پیاده سازیش هم توی متلب یه کتابی هست بنام شبکه های عصبی در متلب از مصطفی کیا کتاب خیلی خوبیه در ضمن پیاده سازی شبکه عصبی توی وی بی کار درستی نیست و کار مشکلی هم هست اگه می خوای زبانی رو برا پیاده سازی انتخاب کنی برو سرغ سی شارپ
    موفق باشی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    چرا کار درستی نیست؟! من فعلا فقط می خوام یاد بگیرم خودم بنویسم، نه این که از نرم افزار های آماده استفاده کنم.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    این هم یه نمونه ی شبکه ی عصبی که XOR رو یاد می گیره : Planet Source Code

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    بالاخره خودم درست کردم:
    Public NN_IHWeights(1 To 100, 1 To 300)
    Public NN_HOWeights(1 To 300)
    Public NN_LearningSpeed

    Public Sub NN_RandomizeWeights(IHWeights(), HOWeights())
    Randomize Timer
    For j = 1 To 300
    For i = 1 To 100
    IHWeights(i, j) = Rnd
    Next i
    Next j
    For i = 1 To 100
    HOWeights(i) = Rnd
    Next i
    End Sub

    Public Sub NN_Train(InputLayer(), ByRef IHWeights(), ByRef HOWeights(), Output, LearningSpeed)
    Dim HLY(1 To 300)
    Dim Y
    Dim HLErrors(1 To 300)
    Dim OError
    Dim NewIHWeights(1 To 100, 1 To 300)
    Dim NewHOWeights(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    OError = Output - Y
    For i = 1 To 300
    HLErrors(i) = HOWeights(i) * OError
    Next i
    For j = 1 To 300
    For i = 1 To 100
    NewIHWeights(i, j) = IHWeights(i, j) + LearningSpeed * HLErrors(j) * ActivationDerivative(InputLayer(i))
    Next i
    Next j
    For i = 1 To 100
    NewHOWeights(i) = HOWeights(i) + LearningSpeed * OError * ActivationDerivative(HLY(i))
    Next i
    For j = 1 To 300
    For i = 1 To 100
    'If IHWeights(i, j) <> NewIHWeights(i, j) Then Beep
    IHWeights(i, j) = NewIHWeights(i, j)
    Next i
    Next j
    For i = 1 To 300
    HOWeights(i) = NewHOWeights(i)
    Next i
    End Sub

    Public Sub NN_Run(InputLayer(), IHWeights(), HOWeights, Output)
    Dim HLY(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    Output = Y
    End Sub

    Public Function Activation(Value)
    Activation = (1 / (1 + Exp(Value * -1)))
    End Function

    Public Function ActivationDerivative(Value)
    DeltaX = 0.01
    ActivationDerivative = (Activation(Value + DeltaX) - Activation(Value - DeltaX)) / DeltaX
    End Function

    فقط یه مشکلی: چی کار کنیم که تابع Activation خطای Overflow نده؟
    آخرین ویرایش به وسیله IamOverlord : شنبه 22 بهمن 1390 در 15:51 عصر

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1390
    محل زندگی
    C#‎‎‎,VB6‎‎‎,vb.net,Assembly,AVR,Java For Android
    پست
    1,112

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    سلام
    اگه میشه این کدهارو یه کم توضیح بدید .
    چه کاری میتونیم با این کدها انجام بدیم و چه جوری تو پروؤه استفاده بشه

    یا علی (ع)

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    سلام.
    این کد یه شبکه ی عصبی طراحی می کنه که 100 تا ورودی می گیره و یه خروجی می ده، اما اون وسط یه لایه ی پنهان هم هست که 3 برابر تعداد ورودی هاست یعنی 300 تا.

    حالا شبکه یه روال NN_Train داره که یاد می گیره به ازای چه ورودی هایی، چه خروجی ای بده. به این زیربرنامه باید 100 ورودی شبکه رو از طریق InputLayer بدید، بعد وزن های هر کدام از نورون های بین لایه ی ورودی (I) و پنهان (H)، بعد وزن های هر کدام از نورون های بین لایه ی پنهان (H) و خروجی (O)، بعد بگید قراره خروجی شبکه چی باشه از طریق Ouput، بعد بگید سرعت یادگیری شبکه چه قدره از طریق LearningSpeed، که یه عددی بین 0 تا 1 هست که فعلا من 0.05 تنظیم می کنم. در یادگیری شبکه از روش Error Back Propagation استفاده کردم.

    ضمنا قبل از این که شبکه شروع به یادگیری اطلاعاتش کنه یه بار باید وزن نورون ها به طور Random تنظیم شده باشه که این کارو از طریق روال NN_RandomizeWeights باید انجام داد.

    بعد از این که به شبکه یاد دادیم که چه خروجی ای به ازای چه ورودی هایی داشته باشه، حالا می تونیم ازش استفاده کنیم و بهش ورودی های جدید بدیم و خروجی بخوایم. این کارو از طریق روال NN_Run باید انجام داد، که بهش اول ورودی مورد نظرتون رو می دید، بعد مشخصات شبکه ی عصبی تعلیم دیده رو (که همان وزن نورون های بین لایه های I و H، و لایه های H و O هست.)، بعد متغیری که می خواید پاسخ رو در اون قرار بده رو بهش می دید.

    خوب این وسط در طی مراحل یادگیری از یه تابع معروف استفاده شده که بهش تابع Activation هم می گن، مشکل این جاست که گاهی این تابع Overflow می ده، مثلا اگه ورودی اش 500 باشه، اگه بشه این مشکل رو حل کرد خیلی خوب می شه.

    یه نمونه برنامه هم نوشتم با این Module که قراره یه دنباله ی عددی رو با استفاده از شبکه ی عصبی پیش بینی کنه. اول باید روی دکمه ی Randomize Weights کلیک کنید، بعد روی Import From Function کلیک کنید و بنویسید :
    ((-1)^x+)/2,1,120
    بعد روی کلیک کنید چند بار تا شبکه دنباله ی داده شده رو یاد بگیره. بعد در TextBox پایین-سمت چپ ورودی های جدیدتون مثلا 121 و 122 رو به ترتیب بدید و روی دکمه ی پایینی کلیک کنید تا نتیجه ی پیش بینی رو بهتون نمایش بده. نتیجه باید پس از هر دفعه یادگیری به همان دنباله ی 0 و 1 که تولید کردیم نزدیک بشه.

    خواهشا همه کمک کنید این پروژه درست بشه چیز توپی در میاد...
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر دائمی آواتار Mr'Jamshidy
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    Network
    پست
    994

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    میدونی دوست من،

    تلاش خوبیه
    منم خیلی دوست دارم کمکت کنم
    در واقع به این مبحث علاقه خاصی دارم

    اما هیچ اطلاعاتی در موردش ندارم
    تنها کاری که از دستم بر میاد اینه که دورادور این تاپیک رو زیر نظر بگیرم و هر موقع واقعا از دستم کاری بر میومد یک کمکی بکنم

    امیدوارم که این تاپیک رو ادامه بدید و دلسرد نشید، و همینطور موفق باشید

  11. #11
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    اول اینکه شما بر اساس رفرنسی که mlp رو پیدا کردید bias رو در نظر نگرفته که یعنی اینکه در مینیم محلی گیر کنیم احتمالش زیاده دوم اینکه temperature parameter رو در نظر نگرفته این پارامتر باعث میشه که نمونه های ورودی تمایز بهتری پیدا کنند سوم اینکه آموزش در این مورد بسیار کندی و برای موارد کاربردی عملی نیست که بایستی momentom رو به آن اضافه کنید.
    در این رفرنس activation function رو sigmoid در نظر گرفته و مشتق آن برابر است با a* (a-1( می باشد
    البته اگر دقت داشته باشید تکنیکی که در اینجا برای اصلاح وزن استفاده شده از طریق dynamic programming که روش های سریع تری هم وجود داره

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    سلام دوست عزیز.
    من تازه کارم تو این زمینه
    اگه می شه یه توضیح مختصر در مورد Bias بدید. چی کار باید می کردم که گیر نکنه؟!
    برای Momentum، می شه رو همین کدی که نوشتم پیاده کرد؟ اصلا ایده اش چیه؟!
    دلیل استفاده ام از اون مقاله هم این بود که نسبتا بهتر فهمیدمش.
    اگه مقاله ی خوبی پیدا کردید لطفا معرفی کنید.

  13. #13
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    به نظرم اگر میخاید شبکه عصبی رو خوب متوجه بشید کتاب hagan رو بخونید انواع شبکه ها و انواع optimization رو توضیح داده فقط RBF رو نداره به نظر من و چندتا از دوستان یکی از بهترین هاست
    کتاب haykin هم خوبه

  14. #14
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    چرا وقتی LearningSpeed رو می برم بالا شبکه ام به هم می ریزه؟! و گاهی وقتا خروجی شبکه رو 0.5 ثابت می مونه؟!

    Public NN_IHWeights(1 To 100, 1 To 300)
    Public NN_HOWeights(1 To 300)
    Public NN_LearningSpeed

    Public Sub NN_RandomizeWeights(IHWeights(), HOWeights())
    Randomize Timer
    For j = 1 To 300
    For i = 1 To 100
    IHWeights(i, j) = Rnd
    Next i
    Next j
    For i = 1 To 100
    HOWeights(i) = Rnd
    Next i
    End Sub

    Public Sub NN_Train(InputLayer(), ByRef IHWeights(), ByRef HOWeights(), Output, LearningSpeed)
    Dim HLY(1 To 300)
    Dim Y
    Dim HLErrors(1 To 300)
    Dim OError
    Dim NewIHWeights(1 To 100, 1 To 300)
    Dim NewHOWeights(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    OError = Output - Y
    For i = 1 To 300
    HLErrors(i) = HOWeights(i) * OError
    Next i
    For j = 1 To 300
    For i = 1 To 100
    NewIHWeights(i, j) = IHWeights(i, j) + LearningSpeed * HLErrors(j) * ActivationDerivative(InputLayer(i))
    Next i
    Next j
    For i = 1 To 100
    NewHOWeights(i) = HOWeights(i) + LearningSpeed * OError * ActivationDerivative(HLY(i))
    Next i
    For j = 1 To 300
    For i = 1 To 100
    IHWeights(i, j) = NewIHWeights(i, j)
    Next i
    Next j
    For i = 1 To 300
    HOWeights(i) = NewHOWeights(i)
    Next i
    End Sub

    Public Sub NN_Run(InputLayer(), IHWeights(), HOWeights, Output)
    Dim HLY(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    Output = Y
    End Sub

    Public Function Activation(Value)
    If Value > 100 Then
    Activation = 0.99
    'MsgBox "Overflow!+"
    ElseIf Value < -100 Then
    Activation = 0.01
    'MsgBox "Overflow!-"
    Else
    Activation = CDec((1 / (1 + Exp(Value * -1))))
    End If
    End Function

    Public Function ActivationDerivative(Value)
    DeltaX = 0.001
    ActivationDerivative = (Activation(Value + DeltaX) - Activation(Value - DeltaX)) / DeltaX
    End Function

  15. #15
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    گام حرکت تو فضایی هستش که دارید توش حرکت می کنید گاهی اوقات گام حرکت تون بزرگه که شما از global minimum که با روش gradient descent به دنبال اون هستید از روش رد می شید و می گذرید برای همین گفته میشه که انتخاب گام حرکت بایستی به صورت داینامیک باشه تو استراتژی آموزش گام حرکت متغیر رو هم بایستی اعمال کنید روش هایی هم برای اینکار موجوده.

    در حالتی مه رو 0.5 ثابت می مونه علتش این هستش شبکه تو یک minimum محلی گیر می کنه و همون به انواع جواب فرض می کنه سعی کنید اعداد تصادفی تونو خیلی کوچک انتخاب کنید

  16. #16
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    گام حرکت تو فضایی هستش که دارید توش حرکت می کنید گاهی اوقات گام حرکت تون بزرگه که شما از global minimum که با روش gradient descent به دنبال اون هستید از روش رد می شید و می گذرید برای همین گفته میشه که انتخاب گام حرکت بایستی به صورت داینامیک باشه تو استراتژی آموزش گام حرکت متغیر رو هم بایستی اعمال کنید روش هایی هم برای اینکار موجوده.
    منظورتون اینه که طی یادگیری مرتب گام حرکت رو تغییر بدم و ثابت نباشه؟

    در حالتی مه رو 0.5 ثابت می مونه علتش این هستش شبکه تو یک minimum محلی گیر می کنه و همون به انواع جواب فرض می کنه سعی کنید اعداد تصادفی تونو خیلی کوچک انتخاب کنید
    یعنی در روال Randomize به جای تولید اعداد بین 0 تا 1، مثلا بین 0 تا 0.1 تولید کنم؟

  17. #17
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    یه باگی داشت کدم، فقط 100 تا از 300 تا نورون Hidden-Output برای استفاده در نظر گرفته می شد. کد اصلاح شد:


    Public NN_IHWeights(1 To 100, 1 To 300)
    Public NN_HOWeights(1 To 300)
    Public NN_LearningSpeed

    Public Sub NN_RandomizeWeights(IHWeights(), HOWeights())
    Randomize Timer
    For j = 1 To 300
    For i = 1 To 100
    IHWeights(i, j) = Rnd * 0.01
    Next i
    Next j
    For i = 1 To 100
    HOWeights(i) = Rnd
    Next i
    End Sub

    Public Sub NN_Train(InputLayer(), ByRef IHWeights(), ByRef HOWeights(), Output, LearningSpeed)
    Dim HLY(1 To 300)
    Dim Y
    Dim HLErrors(1 To 300)
    Dim OError
    Dim NewIHWeights(1 To 100, 1 To 300)
    Dim NewHOWeights(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    OError = Output - Y
    For i = 1 To 300
    HLErrors(i) = HOWeights(i) * OError
    Next i
    For j = 1 To 300
    For i = 1 To 100
    NewIHWeights(i, j) = IHWeights(i, j) + LearningSpeed * HLErrors(j) * ActivationDerivative(InputLayer(i))
    Next i
    Next j
    For i = 1 To 300
    NewHOWeights(i) = HOWeights(i) + LearningSpeed * OError * ActivationDerivative(HLY(i))
    Next i
    For j = 1 To 300
    For i = 1 To 100
    IHWeights(i, j) = NewIHWeights(i, j)
    Next i
    Next j
    For i = 1 To 300
    HOWeights(i) = NewHOWeights(i)
    Next i
    End Sub

    Public Sub NN_Run(InputLayer(), IHWeights(), HOWeights, Output)
    Dim HLY(1 To 300)
    For j = 1 To 300
    For i = 1 To 100
    HLY(j) = HLY(j) + IHWeights(i, j) * InputLayer(i)
    Next i
    HLY(j) = Activation(HLY(j))
    Next j
    For i = 1 To 300
    Y = Y + HOWeights(i) * HLY(i)
    Next i
    Output = Y
    End Sub

    Public Function Activation(Value)
    If Value > 100 Then
    Activation = 0.999999999999
    'MsgBox "Overflow!+"
    ElseIf Value < -100 Then
    Activation = 0.000000000001
    'MsgBox "Overflow!-"
    Else
    Activation = CDec((1 / (1 + Exp(Value * -1))))
    End If
    End Function

    Public Function ActivationDerivative(Value)
    ActivationDerivative = Activation(Value) * (1 - (Activation(Value)))
    End Function

  18. #18
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    Thumbs up نقل قول: پیاده سازی شبکه ی عصبی در VB6

    سلام دوستان.
    خیلی ممنونم Delphi_CAT عزیز.
    در کل مشکلاتی که فعلا به ذهنم رسیده بود حل شد و کد ویرایش شد.
    یه ListBox هم اضافه شده که مقدار وزن های نورون های بین لایه ی پنهان و خروجی که 300 تا هستند رو نشون می ده.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله IamOverlord : سه شنبه 25 بهمن 1390 در 20:26 عصر دلیل: اصلاح برنامه

  19. #19
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    یکی از راههای ابتدایی به این صورت است .گام حرکت رو در ابتدا بزرگ انتخاب کرده و با یک ضریب خطی نسبت به خطا آنرا کاهش بدید .
    اعداد تصادفی رو کوچکتر از 0.01 در نظر بگیرید

  20. #20
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    من می خوام از این شبکه برای پیش بینی دنباله های عددی استفاده کنم. می خواستم ببینم باید چه تغییراتی توش بدم و چی کار کنم؟

  21. #21
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    نقل قول نوشته شده توسط IamOverlord مشاهده تاپیک
    من می خوام از این شبکه برای پیش بینی دنباله های عددی استفاده کنم. می خواستم ببینم باید چه تغییراتی توش بدم و چی کار کنم؟
    Public Input2Hidden(1 To 10, 1 To 30)
    Public Hidden2Output(1 To 30)
    Public LearningSpeed
    Public InputLayer(1 To 10)
    Public HiddenLayerE(1 To 30)
    Public HiddenLayerY(1 To 30)
    Public OutputE
    Public OutputY
    Public DesiredOutputY
    Public HiddenLayerYError(1 To 30)
    Public OutputYError

    Private Function Activation(x)
    Activation = Sigmoid(x)
    End Function

    Private Function ActivationDerivative(x)
    ActivationDerivative = SigmoidDerivative(x)
    End Function

    Private Function Sigmoid(x)
    Sigmoid = 1 / (1 + Exp(-x))
    End Function

    Private Function SigmoidDerivative(x)
    SigmoidDerivative = (Sigmoid(x + 10 ^ (-5)) - Sigmoid(x - 10 ^ (-5))) / 2
    End Function

    Public Sub NN_Run()
    'set Hidden Layer E & Y
    For j = 1 To 30
    HiddenLayerE(j) = 0
    For i = 1 To 10
    HiddenLayerE(j) = HiddenLayerE(j) + Input2Hidden(i, j) * InputLayer(i)
    Next i
    HiddenLayerY(j) = Activation(HiddenLayerE(j))
    Next j
    ' set OutputLayer E & Y
    OutputE = 0
    For i = 1 To 30
    OutputE = OutputE + Hidden2Output(i) * HiddenLayerY(i)
    Next i
    OutputY = Activation(OutputE)
    End Sub

    Public Sub NN_Train()
    NN_Run
    OutputYError = DesiredOutputY - OutputY
    ' calculate hidden layer error
    For i = 1 To 30
    HiddenLayerYError(i) = Hidden2Output(i) * OutputYError
    Next i
    For j = 1 To 30
    For i = 1 To 10
    Input2Hidden(i, j) = Input2Hidden(i, j) + LearningSpeed * HiddenLayerYError(j) * (ActivationDerivative(HiddenLayerE(j)) * InputLayer(i))
    Next i
    Next j
    For i = 1 To 30
    Hidden2Output(i) = Hidden2Output(i) + LearningSpeed * OutputYError * (ActivationDerivative(OutputE) * HiddenLayerY(i))
    Next i
    End Sub

    Public Sub NN_RandomizeWeights()
    Randomize Timer
    For i = 1 To 10
    For j = 1 To 30
    Input2Hidden(i, j) = Rnd * 0.5 - 0.25
    Hidden2Output(j) = Rnd * 0.5 - 0.25
    Next j
    Next i
    End Sub

  22. #22
    کاربر دائمی آواتار joker_pok
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    تبریز
    پست
    171

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    منم علاقه خاصی به این برنامه های هوشمند دارم اما هیچ اطلاعاتی ندارم کاش میشد کمک کنم و باهمکاری تیم برنامه نویس یه کاریش می کردیم

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: پیاده سازی شبکه ی عصبی در VB6

    از این برنامه ها برای پیش بینی استفاده می کنم، مثلا با همین ماژولی که گذاشتم می شه یه سری ساده ی سینوسی رو پیش بینی کرد:
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.jpg‏ (101.2 کیلوبایت, 55 دیدار)

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •