ايجاد شبكه‌هاي عصبي با ابزار GUI مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط مجتبی آیتی نیا   
یکشنبه, 30 خرداد 1389 ساعت 08:43

به طور كلي در نرم‌افزار MATLAB به سه روش مي‌توان شبكه‌هاي عصبي را ايجاد كرد:

  1. كدنويسي
  2. استفاده از سيستم‌هاي بلوكي(Simulink)
  3. استفاده از محيط گرافيكي(GUI)

در اين نوشتار قصد دارم نحوه‌ي استفاده از GUI در جعبه‌ابزار شبكه عصبي را به دوستان معرفي كنم البته به دوستان توصيه مي‌كنم كه ابتدا با كدنويسي آشنا شوند زيرا ممكن است درجايي مجبور به نوشتن كد باشند مگر كساني كه شبكه عصبي، درس تخصصي آنها نبوده و فقط براي انجام قسمتي از پروژه‌شان مي‌خواهند از شبكه‌هاي عصبي استفاده كنند كه استفاده از GUI در اين مورد بسيار ساده و سريع است.

براي شروع nntool را در خط فرمان تايپ و اينتر كنيد و يا از مسير Start >> Toolboxes >> Neural Network >> Neural Network Tool استفاده كنيد پنجره‌اي مانند شكل زير مشاهده مي‌كنيد:

 

براي ايجاد يك شبكه جديد، روي دگمه New كليك كنيد همان‌طور كه مشاهده مي‌شود، ‌پنجره‌اي باز مي‌شود كه مي‌توانيد در آن پارامترهاي شبكه‌ي مورد نظرتان را وارد كنيد:

در تب Network شما مي‌توانيد تنظيمات مربوط به شبكه عصبي مورد نظرتان را وارد كنيد و در زبانه دوم يعني Data شما داده‌هاي خود را وارد مي‌كنيد. حالا براي مثال اول مي‌خواهيم با يك تك پرسپترون، گيت NAND دو ورودي را پياده‌سازي كنيم ابتدا نام شبكه مورد نظر را در قسمت Name وارد كنيد من نام NAND را وارد مي‌كنم سپس در قسمت Network Type نوع شبكه را Perceptron انتخاب كنيد پس از آن به تب Data رفته و در قسمت Name نام p و در قسمت Value مقدار [1 0 1 0;1 1 0 0] و در Data Type حالت Inputs را انتخاب كرده و به روي Create كليك كنيد ديالوگي مبني بر ذخيره ديتا مشاهده مي‌‌كنيد آن را Ok كنيد سپس براي ذخيره‌ي داده‌هاي تارگت مشابه حالت قبل عمل كنيد يعني در قسمت Name نام t و در قسمت Value مقدار [0 1 1 1] و در Data Type حالت Targets را انتخاب كرده و به روي Create كليك كنيد ديالوگ مشاهده شده را Ok كنيد. به تب Network بازگشته و داده‌هاي ورودي و تارگت را از منوي مقابلشان انتخاب كنيد براي ديدن ساختار شبكه، بر دگمه View كليك كنيد بصورت زير:

همان‌طور كه مي‌بينيد از تابع محدود كننده سخت نامتقارن استفاده كرده‌ايم تا خروجي‌هاي ما صفر يا يك شوند حالا براي ايجاد شبكه، Create را كليك، و ديالوگ پس از آن را Ok كنيد به پنجره اصلي بازگشته و در قسمت Networks به روي NAND كليك كرده و Open را بزنيد در پنجره باز شده به تب Train رفته و مقادير ورودي و تارگت را وارد كرده و براي شروع آموزش Train Network را بفشاريد همان‌طور كه مشاهده مي‌كنيد به پرفورمانس صفر رسيده‌ايم(اتفاقي كه در هيچكدام از مسائل واقعي كه ما با آن سروكار داريم، هرگز رخ نخواهد داد!) كه دليلش را هم احتمالا مي‌دانيد حال به پنجره اصلي بازگشته و مقادير خروجي و خطا را به ازاي داده‌هاي آموزشي مشاهده كنيد كه البته از پرفورمانس صفر مي‌توان حدس زد كه چه مقاديري به دست آمده است.

اكنون اگر بوسيله‌ي همين روش تابع XOR را پياده‌سازي كنيد نتايج وحشتناكي خواهيد گرفت.

براي مثال دوم مي‌خواهيم تابع سينوس را بوسيله‌ي يك شبكه عصبي MLP ، تقريب بزنيم براي اين منظور در پنجره مديريت شبكه و ديتا، New را كليك  كرده و مانند شكل زير عمل  كنيد:

شبكه را دو لايه قرار داده‌ايم كه در لايه اول ده نرون با تابع تبديل تانژانت سيگموئيد و لايه دوم كه همان لايه خروجي است را تابع تبديل خطي داده‌ايم(نرون‌هاي لايه خروجي برابر تعداد خروجي‌هاي شبكه مي‌باشد كه در اين مثال برابر يك است.)

البته من يادم رفت كه نحوه‌ي ايجاد داده‌ها را به شما بگم در اينجا ديگر نمي‌توانيد از روش قبل براي ايجاد داده‌هاي خود استفاده كنيد و بايد ديتا را يا از يك فايل mat بگيريد و يا از فضاي كاري متلب. دستورات زير را در خط فرمان تايپ و اينتر كنيد:

;p=0:0.1:4*pi

;(t=sin(p

به پنجره‌ي اصلي بازگشته و Import را كليك كنيد سپس داده‌هاي p و t را به ترتيب عنوان داده‌هاي ورودي و تارگت، Import كرده و سپس Close كنيد.

حال به پنجره‌ي تنظيمات بازگشته و داده‌هاي ورودي و تارگت را وارد كرده و شبكه را ايجاد كنيد. شبكه‌اي را كه با نام Sin ذخيره كرده‌ايد، باز كنيد و به تب Train برويد و پس از وارد كردن داده‌هاي ورودي و تارگت، به تب Training Parameters برويد همانطور كه ملاحظه مي‌كنيد در اينجا مي‌توانيد پارامترهاي زيادي را تغيير دهيد مثلا ممكن است در مساله‌اي خاص، پرفورمانسي برابر 0.001 كافي باشد كه مي‌توانيد در قسمت goal آن عدد را وارد كنيد و نيز تنظيمات ديگري از جمله زمان، تعداد مراحل آموزش و ...

 

 

مقادير را پيش‌فرض قرار داده و شبكه را آموزش دهيد:

 

اگر به مقاديري غير از آنچه در بالا آمده، رسيده‌ايد، تعجب نكنيد.

در تب View/Edit Weights مي‌توانيد تمام وزن‌ها و باياس‌ها را مشاهده كنيد به پنجره‌ي اصلي بازگرديد و Export را كليك كرده و شبكه و نيز داده‌هاي خروجي و خطا را به فضاي كاري متلب انتقال دهيد و كدهاي زير را اجرا كنيد:

(subplot(2,1,1

;(y1=sim(Sin,p

('plot(p,t,p,y1,'m

;([xlim([0 4*pi]);ylim([-1 1

;('(title('Network Output (Training Data

(subplot(2,1,2

;x=0:0.001:4*pi

;(y2=sim(Sin,x

('plot(x,sin(x),x,y2,'m

;([xlim([0 4*pi]);ylim([-1 1

;('(title('Network Output (Test Data

همان‌طوري كه مشاهده مي‌شود شبكه با ده نرون به خوبي آموزش ديده و براي داده‌هاي تست نيز خروجي مناسبي داريم.

(توجه كنيد كه در شكل، منحني‌هاي خروجي و تارگت روي هم افتاده‌اند)

 

نكته: توجه كنيد كه تابع سينوس يكي از ساده‌ترين توابع است و آن را مي‌توانيد با تعداد نرون‌هاي كمتري(حتي دو سه نرون) با تقريب نسبتا خوبي پياده‌سازي كنيد. درواقع بسته به خودتان است كه چه ميزان دقت مورد نياز شماست. يكي از توابع سخت براي پياده‌سازي، تابع مربعي مي‌باشد كه دليل آن تغييرات شديد در لبه‌هاي بالارونده و پائين‌رونده‌ي آن است به عبارتي ديگر اگر شما مي‌خواهيد دو تابع سينوسي و مربعي را با دقت يكساني تقريب بزنيد، شما مجبور هستيد تا شبكه‌ي بزرگتري را براي تابع مربعي درنظر بگيريد اين تابع را خودتان پياده‌سازي كنيد تا درك بهتري از شبكه عصبي داشته باشيد.

اگر سؤالي داشتيد در بخش نظرات آن را مطرح كنيد.

  • موج و ساحل
    سلام آفا مجتبي
    كارت خيلي خوبه
    تبريك ميگم
    ادامه بده
  • ناشناس
    :P لطفا" با برنامه نويسي هم آموزش بدين
  • mujtaba65
    سعي مي‌كنم كه سر فرصت با برنامه‌نويسي هم آموزش بدم.
  • ناشناس
    سلام
    من یه شبکه عصبی پرسپترون از طریق کد نویسی برای کنترل پسورد طراحی کردم ولی نمیدونم نمونه های پسورد را برای آموزش چطوری به شبکه بدم.
    مثلا پسورد fAr12@g بعنوان یک پسورد strong میباشد.

    ممنون
  • صانع
    دمت داغ
    پهلون دست درست
    به درد من كه خيلي خورد
  • shahram  - neural net
    salam
    mamnoon az matalebe mofidetoon
    man chanta mushkel daram dar murede sakhte shabake ba matlab
    mishe telphoni ba ham harf bezanim agar vaghtesho dashtin
    manoon misham
    lotfan be mail bezanid
    sh.rezaeii@yahoo.com
    bazam mamnoon
  • saeed  - تشکر
    سلام دوست گرامی از راهنمایی ها که برای دوستان مبتدی مثل من گذاشتین واقعا ممنونم...اما اگه امکانش هست در مورد شبکه های هاپفیلد هم یک مثال بگذارید چون شدیدا نیازمندش هستم و در واقع روند انجام پروژه ام به تعویق افتاده است. پیشاپیش سپاسگذارم. (ssm3500@yahoo.com)
  • saye  - aneural netwok
    سلام،خسته نباشد و خدا قوت
    ميشه كدنويسي تو مطلب براي شبكه عصبي مصنوعي رو با مثال y=sinx بنويسيد تو سايت يا ايميل كنيد. من تو مطلب مبتدب هستم براي پروژه ام نيازش دارم.
    ممنون ميشم كمكم كنيد
  • mujtaba65
    سلام ممنون
    با دستور newff مي‌توني اين‌كار رو انجام بدي. يه سرچ توي help بزن ساختارش رو متوجه مي‌شي.
  • saye  - neural network
    سلام مجدد
    همون طور كه دفعه پيش خدمتتون عرض كردم،من كلا تو برنامه نويسي و مطلب مبتدي هستم،خواستم شما بازدن مثالي مثل y=sinx راهنماييم كنيد.
    پروژه ام روي شبكه هاي عصبي تو مطلب هست،الان هم چند وقته دنبالش هستم يادبگيرم. اگر شما جزوه اي يا چيزي در مورد nntool مطلب داريد،كه كامل ياد داده باشه(به زبان فادرسي) ممنون ميشم كمكم كنيد.
    با تشكر :evil:
  • saye  - re: neural network
    سلام،يه مشكلي برام تو nntool مطلب پيش اومده! ميشه لطف كنيد راهنماييم كنيد.
    من داده هايي رو تو excel دارم،دو ستون به عنوان ورودي،يه ستون به عنوان خروجي.اينها رو وارد مطلب كردم؛به اين شكل:تو خط فرمانinput رو تايپ كرده و علامت كروشه گذاشتم،بعد داده ها رو از excelكپي كرده و pasteكردم،در نهايت با بستن كروشه وگذاشتن علامت (،)و(;)به خط بعدي رفته وoutput رو به همين ترتيب وارد كردم وقتي شبكه رو ايجاد ميكنم و بعد از انجام مراحل لازمtrain رو ميزنم آموزش نميبينه و پيغام زير تو صفحه اصلي مطلب ظاهر ميشه:
    ??? Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

    Error in ==> nntool at 681
    [errmsg,errid] = me.message;

    com.mathworks.jmi.MatlabException: Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
  • mujtaba65
    سلام
    داده‌هاتو بصورت سطري وارد كن نه ستوني!
    در ضمن نيازي به كپي پست نيست! فايل اكسلت رو در دايركتوري جاري متلب قرار بده و از كد زير استفاده كن:
    کد:
    xlsread('data.xlsx')
    input=mydata(:,1:2);
    target=mydata(:,3);

    بعد براي سطري كردن هم:
    کد:
    input=input';
    target=target';

    موفق باشي
  • ناشناس
    سلام.می خوام یک شبکه عصبی در محیط متلب برای یک متغییر وابسته به سه پارامتر دیگر طراحی کنم.کمک کنید(نوع شبکه و روش آموزش)
  • رضا  - تشکر
    واقعا من از شما متشکرم کارتون خداپسندانه است.
  • جودی  - XOR in Matlab
    سلام
    مرسی از آموزش خوب تون.میشه برای گیت XOR هم راهنمایی کنید که چه جوری رسم کنیم تو نرم افزار matlab?
    با تشکر
  • mujtaba65
    سلام
    بايد يك شبكه دو لايه ايجاد كني مثل شبكه اي كه براي تابع سينوس ايجاد كردم.
  • جودی  - XOR in Matlab
    سلام
    مرسی از آموزش خوب تون.میشه برای گیت XOR هم راهنمایی کنید که چه جوری رسم کنیم تو نرم افزار matlab?
    با تشکر
  • مسعود  - سلام و خسته نباشيد
    من قرار يك موتور القايي را با شبكه عصبي تعيين خطا كنم توي كجاي آموزش شبكه عصبي بايد تغييرات بدم تا بتونم شبكه آن قسمت و پارامتر ورودي را كه باعث ايجاد آن خطا شده رو برام تعيين كنه!خيلي ممنون
  • ناشناس  - شبكه عصبي
    ممنون به خاطر مطالبي كه در مورد شبكه هاي عصبي گذاشتيد.مي خواستم بدونم مي تونيد يك مثال بهتري رو انجام بدين وبه صورت pdf يا odc قرار بدين.
    باز هم تشكر مي كنم.javascript:JOSC_emoticon(":P")
  • احد  - مشکل ترینینگ
    سلام
    دستت درد نکنه از آموزشت. من یه مشکلی داشتم. همین مشکل رو یکی از دوستان هم در پستهای بالایی نوشتن ولی جوابشو ندادین. یک ورودی به صورت ماتریس 8 در 36 هست و تارگت من هم یک ماتریس 8 در یک هست. وقتی که ورودی و تارگت رو وارد میکنم و ترینینگ رو میزنم ایراد زیر رو میده.
    ??? Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

    Error in ==> nntool at 681
    [errmsg,errid] = me.message;

    com.mathworks.jmi.MatlabException: Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

    میشه راهنمایی کنی؟
    ممنون
  • mujtaba65
    سلام
    ورودي رو بصورت 36 در 8 و خروجي رو بصورت 1 در 8 وارد كن.
  • aamm  - سوال تشخيص خطا
    سلام من جواب نگرفتم براي تشخيص خطاي يك سيتم با شبكه عصبي بايد مدل خطا دار را به شبكه آموزش دهيم تا شناسايي بشه يا نه چون من مي خوام بدونم كدوم قسمت وبه چه ميزاني داراي اختلال است! ممنون از آموزشتون
  • mujtaba65
    سلام
    تشخيص خطا!
    منظورت رو متوجه نشدم؟
  • aamm
    با عرض سلام مجدد تشخيص خطا با استفاده از شبكه عصبيfault detection ابتدا مدل درست كاركرد رفتار يك سيستم رو به شبكه عصبي آموزش ميدن بعد وقتي رفتار واقعي رو بهش ميدن با اولي مقايسه مي شه ودر صورت اختلاف بعنوان خطا ميگيريم حالا اگر بخواهيم تعيين كنيم كدوم پارامتر باعث ايجاد اين خطا و به چه درصدي در ايجاد خطا نقش داشته بايد چكار كنيم من تازه با شبكه عصبي آشنا شدم لطفا اگر راه ديگري بوسيله شبكه عصبي براي اين كار به نظرتون ميرسه بگين ممنون!
  • mujtaba65
    سلام
    اينكه كدوم پارامتر باعث خطا شده رو جوابي براش ندارم
  • ناشناس
    تابع sim را چگونه بدست آوریم
  • aamm
    سلام آيا مي توان برنامه هاي شبكه عصبي را روي IC DSP ريخت آيا SUPPORT ميكنه ميشه لطفا يك سايتي براي اين كار معرفي كنيد ممون!
  • مجتبی
    سلام وقت بخیر
    می شود بگویید چگونه از این روش در طراحی یک کنترل کننده استفاده کنیم
  • gozal  - تشکر
    سلام دمتون گرم این مطالب خیلی به دردم خورد.@@@
  • سجاد  - سوال
    سلام مهندس
    من میخوام با سه تا داده یه داده رو پیش بینی کنم.
    با mlp هم میخوام انجامش بدم. یعنی سه تا ورودی دارم و یه خروجی. با روشی که شما فرمودین میشه انجام داد از قسمت nntoo ؟ اگه تعداد نمونه ها زیاد باشه مشکلی پیش نمیاد؟ بعد از این که داده های ورودی و خروجی رو برای آموزش به شبکه دادم و شبکه آماده شد کجا باید داده های ورودی رو برای پیش بینی خروجیم وارد کنم؟
    خیلی تابلو که من هیچی از شبکه و متلب سر در نمیارم :oops: البته رشته من چیز دیگه ایه تو یه قسمت از پایان نامه نیاز به این مورد پیدا کردم
    لطفن کمک کنید :?:
  • mujtaba65
    سلام
    آره ميشه.
    تعداد نمونه‌‌ها زیاد باشه فكر نكنم مشکلی پیش بیاد فقط اگه داده‌هات پراكندگي زيادي دارند بايد شبكه‌ات به اندازه‌اي باشه كه بتونه خودش رو با داده‌ها تطبيق بده.
    شبكه رو كه سيو كردي هم مي‌توني با ابزار nntool و هم از طريق دستور sim خروجي شبكه رو بدست بياري.
  • سجاد
    سلام مهندس جان
    مهندس من یه شبکه رو درست کردم به روش mlp که فرمودید.
    3 پارامتر 132 نمونه را برای ورودی دادم 1پارامتر و 132 نمونه رو واسه هدف تعریف کردم. بعد 3پارامتر از 132 نمونه دیگه رو دادم و با سیمولیشن 132 داده رو گرفتم. ولی داده هایی رو که به من داده از نظر ضریب همبستگی و میانگین و واریانس با داده های واقعی خودم نمیخونه. چیکار باید بکنم . تعداد لایه 2 بود و تعداد نرون 10.
    یه مشکلی هم داشتم وقتی تعداد لایه 3 و تعداد نرون 20 بود اصلا ترین نمیکرد.
    کجای کارم گیر داره که داده هام اینقدر با هم متفاوت میشه
  • mujtaba65
    سلام
    گفتم ممكن هست پراكندگي داده‌هات زياد باشه. براي همين شبكه نتونه خودش رو تطبيق بده!
    تعداد لايه‌ها رو همون دو بزار و تعدا نرون‌ها رو بطور پيوسته زياد كن ببين چه تغييراتي حس مي‌كني.
  • ناشناس
    سلام
    برای اینکه یه برنامه m فایل که الگوریتم pso را پیاده سازی کرده با benchmark ها تست کنم باید چطوری عمل کنم
    من کلا در مورد نحوه استفاده از benchmarkها اطلاعاتی ندارم
    ممنون
  • ناشناس
    مهندس من هنوز به نتیجه نرسیدم
    داده های من دمای مینیمم و ماکزیمم و بارندگی هستن و خروجی هم دبی (آبدهی رودخانه ست)
    داده های قبل هم بر داده های بعدی تاثیر میزارن
    با این تفاسیر چه تغییراتی رو اعمال کنم که نتیجه بگیرم

    در ضمن تا همین جاش هم کلی کمک کردین من کلا از شبکه سر در نمیاوردم ولی الان کلی جلو افتادم دستت درد نکنه اگه کارت به هیدرولوژی افتاد ایشالا جبران کنیم :D
  • mujtaba65
    سلام
    فكر كنم بايد از شبكه‌هاي بازگشتي استفاده كني.
  • ناشناس
    سلام
    من تو یه مقاله خوندم روش شبکه پرسپترون چند لايه با الگوريتم (BP (Back Propagation نتایج خوبی میده ولی توی آموزش شما قسمت Network Type نتونستم همچین روشی رو پیدا کنم،
  • mujtaba65
    شبکه پرسپترون چند لايه با الگوريتم (BP (Back Propagation همون چيزي كه در مثال گفتم ولي بعيد مي‌دونم با اين شبكه بتوني جواب بگيري چون اين شبكه بدون فيدبك هست.
  • ناشناس
    باز نتیجه نگرفتم. میشه یه مقدار درباره Network Type توضیح بدین. راستی من یکی از ورودی هام تاثیر مستقیم تری روی خروجی داره ، جایی رو نباید تنظیم کنم.
  • mujtaba65
    از شبكه Layer Recurrent استفاده كن.
  • maryam
    سلام و وقت بخیر.
    مرسی از مطالب مفید تون.
    ببخشید یک سوال دارم .ماتریس ورودی من 220 سطر و 15 ستون و تارگت 220 سطر و دو ستون داره .وقتی در شبکه این ها رو انتخاب می کنم ،این پیغامو میده eceed dimension
    میشه لطفاً راهنمایی کنید.
    بسیار ممنون
  • mujtaba65
    سلام - ممنون
    داده‌هات رو بصورت 15 سطر و 220 ستون براي ورودي و 2 سطر و 220 ستون براي تارگت وارد كن.
  • ناشناس
    مهندس کجا میشه به داده های ورودی وزن داد، میخوام یکی از داده ها رو که تاثیرش خیلی بیشتره نسبت به دوتای دیگه، وزن بیشتری بدم شاید جواب بده.
    یه سوال دیگه هن داشتم:
    من 143 نمونه رو با هم به شبکه میدم (یعنی 143 ستون و 3 ردیف، واسه ورودی) و 143 نمونه رو واسه هدف گذاشتم (143 ستون و 1 ردیف)اینجوری درسته یا من باید هر کدام از نمونه ها رو جدا جدا به شبکه بدم؟
    ممنون از راهنمای هاتون
  • mujtaba65
    سلام
    يعني چي؟! وزن رو به داده كه نمي‌دن! وزن و باياس در طي آموزش شبكه ايجاد مي‌شه.
    طريقه دادن ورودي و تارگت رو در نظرات قبلي توضيح دادم.
  • elmaes
    سلام
    مرسی بابت مطالب مفیدتون .
    من به شدت نیازمند راهنماییتون هستم .مرسی
    شیکه آموزش داده شده ولی چطور می تونم یک نمونه رو تست کنم ببینم خوب جواب میده یا نه؟
    مرسی هم توی nf tool , و هم nntool این مشکلو دارم .
    خیییلی ممنون
  • mujtaba65
    سلام - ممنون
    شبكه‌ت رو سيو كن بعد با استفاده از دستور sim اون رو تست كن.
  • elmaes
    سلام،
    بسیار ممنون از اینکه سوالات رو می خونید وجواب میدید.من به شدت گیر کردم.
    میخوام شبکه رو برای شناسایی مکان آسیب یک سازه اموزش بدم.(پیش بینی x,y)
    به نظر شما استفاده از شبکه back propagation مفید است؟
    لطفاً اگر توضیحی در مورد مسئله من دارین ،ممنون می شوم که بگید و یا اگر لینکی هست برای استفاده بفرمایید.
  • mujtaba65
    سلام - خواهش مي‌كنم
    بايد ببيني رياضيات مساله به چه صورت است يعني پارامترهاي ورودي‌ت به چه صورت تغيير مي‌كنند و آيا برهم تاثير دارند و ديگر شرايط كه برای شناسایی مکان آسیب یک سازه نياز است. چون من از عمران سر در نمي‌يارم نمي‌تونم بيشتر از اين كمكت كنم.
  • mahdi  - سلام
    واقعا خدا قوت خیلی کمکم کردی به کارت ادامه بده موفق باشی
نوشتن نظر
Your Contact Details:
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Security
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.
آخرین بروز رسانی در شنبه, 25 تیر 1390 ساعت 08:41