آموزش برنامه نویسی

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزش برنامه نویسی

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزشگاه تحلیل داده فعالیت رسمی خود را از سال 1380 در قالب آموزشگاه تخصصی نرم افزار آغاز نموده. این موسسه از همان ابتدای تأسیس با بهره مندی از استاید حرفه ای رشته های نرم افزار و بانک های اطلاعاتی ، فعالیت تخصصی خود را در زمینه آموزش برنامه نویسی و بانک های اطلاعاتی آغاز نمود و پس از گذشت اندک زمانی توانست در زمینه نرم افزار و شبکه بعنوان یکی از حرفه ای ترین موسسات ایران ظاهر شود. با توجه به اینکه مدیریت آموزشگاه شخصاً در رشته نرم افزار تحصیل کرده و سابقه طولانی در تحلیل و طراحی و پیاده سازی نرم افزار و بانک های اطلاعاتی دارند ، خط مشی کلی موسسه بر مبنای آموزش پایه ای ، کاربردی ، عملی و تخصصی نرم افزار بنا شده است.


آدرس : خیابان شریعتی بالاتر از ملک جنب بانک صادرات طبقه دوم واحد 7
همراه: 09123840871 تلفن: 88146323 - 88146330

۳ مطلب با کلمه‌ی کلیدی «دوره سی شارپ تحلیل داده» ثبت شده است

  • ۰
  • ۰

 

آموزش ماشین لرنینگ
آموزش ماشین لرنینگ

 

سیستم‌های محاسباتی که به نظر می‌رسد فعالیت‌هایی شبیه مغز ایجاد می‌کنند، ممکن است نتیجه هدایت محققان به سمت یک نتیجه خاص باشد. شبکه‌های عصبی، نوعی از سیستم محاسباتی که بر اساس سازمان‌دهی مغز انسان مدل‌سازی شده‌اند، اساس بسیاری از سیستم‌های هوش مصنوعی را برای کاربردهایی مانند تشخیص گفتار، بینایی رایانه و تجزیه و تحلیل تصویر پزشکی تشکیل می‌دهند.

در زمینه علوم اعصاب، محققان اغلب از شبکه‌های عصبی استفاده می‌کنند تا سعی کنند همان نوع وظایفی را که مغز انجام می‌دهد مدل‌سازی کنند، به این امید که مدل‌ها بتوانند فرضیه‌های جدیدی را در رابطه با نحوه انجام آن وظایف توسط مغز ارائه دهند. با این حال، گروهی از محققان MITتاکید می کنند که در تفسیر این مدل ها باید احتیاط بیشتری کرد. شما باید بدانید که پیش از هر چیز نیاز به داشتن دانش اصولی در زمینه ماشین لرنینگ ، زبان پایتون و کتابخانه هایی دارید مانند تنسرفلو که در زمینه هوش مصنوعی مورد استفاده قرار می گیرند.

در تجزیه و تحلیل بیش از 11000 شبکه عصبی که برای شبیه‌سازی عملکرد سلول‌های شبکه - اجزای کلیدی سیستم ناوبری مغز - آموزش دیده بودند، دریافتند که شبکه‌های عصبی تنها زمانی فعالیت سلول‌های شبکه‌ای تولید می‌کنند که محدودیت‌های بسیار خاصی به آنها داده شود که در سیستم های بیولوژیکی یافت نمی شوند. تیم MIT دریافت که تعداد بسیار کمی از شبکه‌های عصبی فعالیت‌های شبکه‌ای سلول‌مانند را ایجاد می‌کنند، که نشان می‌دهد این مدل‌ها لزوماً پیش‌بینی‌های مفیدی درباره نحوه عملکرد مغز ایجاد نمی‌کنند.

شفر، که اکنون دانشجوی کارشناسی ارشد علوم کامپیوتر در دانشگاه استنفورد است، نویسنده اصلی این مطالعه جدید است که در کنفرانس 2022 سیستم های پردازش اطلاعات عصبی ارائه خواهد شد. ایلا فیته، استاد علوم مغز و عصب شناسی و عضو موسسه تحقیقات مغز مک گاورن MIT، نویسنده ارشد این مقاله است. میکائیل خونا، دانشجوی کارشناسی ارشد MITدر رشته فیزیک، نیز عضو نویسندگان است.

مدل سازی سلول های شبکه

شبکه های عصبی، که محققان برای چندین دهه از آن برای انجام انواع وظایف محاسباتی استفاده می کنند، از هزاران یا میلیون ها واحد پردازشی متصل به یکدیگر تشکیل شده است. هر گره دارای اتصالاتی با نقاط قوت متفاوت با گره های دیگر در شبکه است. همانطور که شبکه مقادیر عظیمی از داده ها را تجزیه و تحلیل می کند، نقاط قوت آن اتصالات تغییر می کند زیرا شبکه انجام وظیفه مورد نظر را یاد می گیرد.

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

طبق تحقیقات نشان داده شده است که سلول‌های مکانی هر زمان که یک حیوان در یک مکان خاص باشد شلیک می‌کنند و هر سلول مکانی ممکن است به بیش از یک مکان پاسخ دهد. از طرف دیگر سلول های شبکه ای بسیار متفاوت عمل می نمایند. هنگامی که یک حیوان در فضایی مانند اتاق حرکت می کند، سلول های شبکه تنها زمانی شلیک می کنند که حیوان در یکی از رئوس یک شبکه مثلثی باشد.

گروه های مختلف سلول های شبکه؛ شبکه هایی با ابعاد کمی متفاوت ایجاد می کنند که روی یکدیگر همپوشانی دارند. این مسئله به سلول های شبکه اجازه می دهد تا با استفاده از تعداد نسبتاً کمی سلول، تعداد زیادی موقعیت منحصر به فرد را رمزگذاری کنند. این نوع رمزگذاری مکان همچنین امکان پیش بینی مکان بعدی حیوان را بر اساس یک نقطه شروع و یک سرعت مشخص می کند. در چندین مطالعه اخیر، محققان شبکه های عصبی را برای انجام همین کار، که به عنوان یکپارچه سازی مسیر شناخته می شود، آموزش داده اند.

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

در چندین مطالعه قبلی، محققان گزارش کرده‌اند که مدل‌های آن‌ها واحدهایی با الگوهای فعالیت تولید می‌کنند که الگوهای شلیک سلول‌های شبکه‌ای را از نزدیک تقلید می‌کنند. این مطالعات به این نتیجه رسیدند که نمایش های شبکه مانند سلول به طور طبیعی در هر شبکه عصبی آموزش دیده برای انجام وظیفه یکپارچه سازی مسیر ظاهر می شوند.

با این حال، محققان MIT به نتایج بسیار متفاوتی دست یافتند. در تجزیه و تحلیل بیش از 11000 شبکه عصبی که در مورد یکپارچه سازی مسیر آموزش داده بودند، دریافتند که در حالی که تقریبا 90 درصد از آنها این کار را با موفقیت یاد گرفته اند، تنها حدود 10 درصد از آن شبکه ها الگوهای فعالیتی را تولید می کنند که می تواند به عنوان سلول-شبکه طبقه بندی شود. این مورد شامل شبکه‌هایی می‌شود که در آن‌ها حتی تنها یک واحد امتیاز شبکه بالایی را به دست آورده است.

به گفته تیم MIT، احتمالاً مطالعات قبلی تنها به دلیل محدودیت‌هایی که محققان در آن مدل‌ها ایجاد می‌کنند، فعالیت‌هایی شبیه سلول شبکه ایجاد می‌کنند.

مطالعات قبلی این داستان را ارائه کرده‌اند که اگر شبکه‌ها را برای یکپارچه‌سازی مسیرها آموزش دهید، سلول‌های شبکه را دریافت خواهید کرد. چیزی که ما دریافتیم این است که در عوض، شما باید این توالی طولانی از انتخاب پارامترها را انجام دهید، که می دانیم با زیست شناسی ناسازگار هستند، و سپس در بخش کوچکی از این پارامترها، نتیجه دلخواه را خواهید گرفت.

مدل های بیولوژیکی بیشتر

یکی از محدودیت‌هایی که در مطالعات قبلی یافت شد این است که محققان از مدل خواسته بودند تا سرعت را به یک موقعیت منحصربه‌فرد تبدیل کند که توسط یک واحد شبکه که مربوط به یک سلول مکانی گزارش شده است. برای اینکه این اتفاق بیفتد، محققان همچنین نیاز داشتند که هر سلول مکانی فقط با یک مکان مطابقت داشته باشد، که نحوه عملکرد سلول های مکان بیولوژیکی نیست: مطالعات نشان داده اند که سلول های مکانی در هیپوکامپ می توانند به 20 مکان مختلف پاسخ دهند، نه فقط یک مکان.

وقتی تیم MIT مدل‌ها را طوری تنظیم کرد که سلول‌های مکانی بیشتر شبیه سلول‌های مکان بیولوژیکی باشند، مدل‌ها همچنان می‌توانستند وظیفه یکپارچه‌سازی مسیر را انجام دهند، اما دیگر فعالیت سلول‌های شبکه‌ای تولید نمی‌کردند. فعالیت شبه سلول‌های شبکه‌ای نیز زمانی ناپدید شد که محققان به مدل‌ها دستور دادند تا انواع مختلفی از خروجی مکان را تولید کنند، مانند موقعیت مکانی روی یک شبکه با محورهای Xو Y یا مکان به عنوان فاصله و زاویه نسبت به یک نقطه اصلی.

فیتی می‌گوید: «اگر تنها کاری که از این شبکه می‌خواهید انجام دهد یکپارچه‌سازی مسیر است، و مجموعه‌ای از الزامات بسیار خاص و نه فیزیولوژیکی را بر واحد بازخوانی تحمیل می‌کنید، در این صورت می‌توانید سلول‌های شبکه را به دست آورید. اما اگر هر یک از این جنبه‌های این واحد بازخوانی را آرام کنید، به شدت توانایی شبکه برای تولید سلول‌های شبکه را کاهش می‌دهد. در واقع، معمولاً این کار را نمی‌کنند، حتی اگر هنوز وظیفه یکپارچه‌سازی مسیر را حل می‌کنند.»

بنابراین، اگر محققان قبلاً از وجود سلول‌های شبکه‌ای اطلاع نداشتند و مدل را برای تولید آنها راهنمایی نمی‌کردند، بسیار بعید بود که آنها به عنوان یک پیامد طبیعی آموزش مدل ظاهر شوند. محققان می گویند که یافته های آنها نشان می دهد که هنگام تفسیر مدل های شبکه عصبی مغز، احتیاط بیشتری لازم است.

وقتی از مدل‌های یادگیری عمیق (deep learning) استفاده می کنید، آنها می‌توانند ابزار قدرتمندی باشند، اما باید در تفسیر آنها و تعیین اینکه آیا واقعاً پیش‌بینی‌های جدید انجام می‌دهند یا حتی به آنچه که مغز در حال بهینه‌سازی است، بسیار محتاط بود. کنت هریس، استاد علوم اعصاب کمی در دانشگاه کالج لندن، می‌گوید امیدوار است این مطالعه جدید دانشمندان علوم اعصاب را تشویق کند که در بیان آنچه می‌توانند با تشابهات بین شبکه‌های عصبی و مغز نشان دهند، مراقب باشند.

شبکه های عصبی می توانند منبع مفیدی برای پیش بینی ها باشند. اگر می‌خواهید یاد بگیرید که چگونه مغز یک محاسبات را حل می‌کند، می‌توانید شبکه‌ای را برای انجام آن آموزش دهید، سپس این فرضیه را آزمایش کنید که مغز به همان روش کار می‌کند. هریس که در این مطالعه شرکت نداشت، می‌گوید چه این فرضیه تأیید شود یا نه، چیزی یاد خواهید گرفت. این مقاله نشان می‌دهد که «پیش‌بینی» قدرت کمتری دارد: شبکه‌های عصبی پارامترهای زیادی دارند، بنابراین واداشتن آنها به تکرار یک نتیجه موجود چندان تعجب‌آور نیست.

به گفته محققان MIT، هنگام استفاده از این مدل‌ها برای پیش‌بینی نحوه عملکرد مغز، مهم است که هنگام ساخت مدل‌ها، محدودیت‌های بیولوژیکی واقعی و شناخته شده را در نظر بگیریم. آنها اکنون روی مدل‌هایی از سلول‌های شبکه کار می‌کنند که امیدوارند پیش‌بینی‌های دقیق‌تری از نحوه عملکرد سلول‌های شبکه‌ای در مغز ایجاد کنند.

Khona می‌گوید: «مدل‌های یادگیری عمیق به ما بینشی در مورد مغز می‌دهند، اما تنها زمانی که دانش بیولوژیکی زیادی را به مدل تزریق کنید. اگر از محدودیت‌های صحیح استفاده کنید، مدل‌ها می‌توانند راه‌حلی شبیه به مغز به شما ارائه دهند.»

این تحقیق توسط دفتر تحقیقات نیروی دریایی، بنیاد ملی علوم، بنیاد سیمونز از طریق همکاری سیمونز بر روی مغز جهانی، و موسسه پزشکی هوارد هیوز از طریق برنامه دانش پژوهان دانشکده تامین شد.

  • افشین رفوآ
  • ۰
  • ۰

به بخش جدید آموزش سی شارپ خوش آمدید.

در این درس قصد داریم تا شما را با مفهوم تابع سازنده Constructor و destructor در C# و کاربرد آن ها آشنا کنیم.

تابع سازنده یا Constructor متد ویژه ای است که هر بار به محض ساخته شدن یک شی یا object از کلاس، اجرا می شود. درواقع از تابع سازنده برای مقداردهی اولیه متغیرها یا اجرای یک کد ثابت استفاده می شود. یک تابع سازنده هیچ گاه مقدار خروجی یا return ندارد و به همین دلیل در تعریف آن، هیچ نوع متغیری جهت return تعریف نمی شود. ساختار کلی تعریف تابع سازنده Constructor در کلاس های C# به صورت زیر است :

public ClassName()

به همین روش تابع سازنده کلاس Car را به صورت زیر نیز می توانید تعریف کنید :

public Car()

 

در مثال عملی این درس، کلاسی به نام Car داریم که دارای یک تابع سازنده بوده که یک پارامتر متنی String را به عنوان ورودی دریافت می کند. البته تابع های سازنده در C# می توانند overload نیز شوند. یعنی این که ما چندین تابع سازنده هم نام برای یک کلاس داشته باشیم، ولی پارامترهای ورودی آن ها با هم متفاوت باشد. کلاس زیر یک کد عمل را نشان می دهد :

public Car()

{

}

public Car(string color)

{

this.color = color;

}

یک تابع سازنده، می تواند تابع سازنده دیگر را فراخوانی کند که به صورت های مختلف ممکن است کد زیر یک مثال در این زمینه ارائه داده است :

public Car()

{

Console.WriteLine("Constructor with no parameters called!");

}

public Car(string color) : this()

{

this.color = color;

Console.WriteLine("Constructor with color parameter called!");

}

اگر متد مثال فوق را اجرا کنید، خواهید دید که تابع سازنده ای که هیچ پارامتری را به عنوان ورودی ندارد، ابتدا اجرا می شود. از این حالت برای مقداردهی اشیا (objects) یک کلاس با یک تابع سازنده پیش فرض استفاده می شود. اگر بخواهید که تابع سازنده دار ای پارامتر فراخوانی شود، می توانید به صورت کد زیر عمل کنید :

public Car(string color) : this()

{

this.color = color;

Console.WriteLine("Constructor with color parameter called!");

}

public Car(string param1, string param2) : this(param1)

{

}

اگر شما تابع سازنده ای که دارای 2 پارامتر است را فراخوانی کنید، پارامتر اول برای فراخوانی تابع سازنده ای که دارای 1 پارامتر است، استفاده می شود.

 

آموزش کار با تابع تخریب کننده یا Destructor در C# :

تابع تخریب کننده یا Destructor در زبان C#، متدی است که در هنگام از بین رفتن یک شی از کلاس، اجرا می شود. زبان C#، یک زبان پاک کننده خودکار سیستم یا garbage collector است. به این معنی که اشیایی که دیگر در برنامه نیاز ندارید را جهت خالی کردن حافظه و آزاد نمودن سیستم، پاک می کند. از طرف دیگر در برخی موارد شاید نیاز داشته باشید تا یک Clean up در سیستم انجام دهید، اینجاست که تابع های تخریب کننده Destructor به کار می آیند. تابع های تخریب کننده چندان شبیه سایر متدها در زبان C# نیستند. در کد عملی زیر یک مثال از تابع تخریب کننده نشان داده شده است :

~Car()

{

Console.WriteLine("Out..");

}

به محض این که شی ایجاد شده از کلاس، توسط تمیز کننده خودکار garbage collector جمع آوری شده، متد فوق فراخوانی می شود.

  • افشین رفوآ
  • ۰
  • ۰

به بخش جدید آموزش سی شارپ خوش آمدید.

در این درس قصد داریم تا شما را با مفهوم کلاس ( class ) در C# و کاربرد آن ها آشنا کنیم. همچنین به بیان نحوه تعریف کلاس ها در برنامه و تعیین خواص و متدها برای آن ها خواهیم پرداخت. اول از همه با مفهوم کلاس Class در C# شروع می کنیم. یک کلاس، مجموعه ای از خاصیت ها، متغیرها و متدهای مرتبط با هم است. یک کلاس خصوصیات ذکر شده را توصیف و پیاده سازی کرده و برای استفاده از آن در کد برنامه، بایستی یک نسخه از آن را (که به آن شی یا object می گویند) بسازید. بر روی شی یا object ایجاد شده، می توانید متغیرها و متدهای کلاس را به کار ببرید. هر تعداد که نیاز داشته باشید می توانید شی یا object از روی کلاس ساخته و در نقاط مختلف کد برنامه استفاده کنید. مبحث شی گرایی یا object oriented یک مقوله بسیار گسترده است که در این درس، درس های دیگر این بخش به مهم ترین جزئیات آن خواهیم پرداخت.

در این بخش و در مثال Hello World مشاهده می کنیم که از یک کلاس در کد برنامه استفاده شده است و در C# تقریبا همه چیز بر مبنای کلاس ها ایجاد می شوند. در کد این درس قصد داریم تا کلاس خود را گسترش داده و با انواع امکانات آن آشنا شویم :

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Car car;

car = new Car("Red");

Console.WriteLine(car.Describe());

car = new Car("Green");

Console.WriteLine(car.Describe());

Console.ReadLine();

}

}

class Car

{

private string color;

public Car(string color)

{

this.color = color;

}

public string Describe()

{

return "This car is " + Color;

}

public string Color

{

get { return color; }

set { color = value; }

}

}

}

آموزش سی شارپ : همانطور که مشاهده می کنید، در کد فوق یک کلاس جدید به نام Car ایجاد کرده ایم. برای سهولت کار، این کلاس جدید را به همراه کلاس Program در فایل اصلی برنامه قرار داده ایم، اما روش رایج این است که هر کلاس درون فایلی جداگانه هم نام خود کلاس ایجاد شود. کلاس Car دارای یک متغیر (ویژگی) به نام Color است که برای تعیین رنگ خودرو به کار می رود. ویژگی Color به صورت خصوصی یا private تعیین شده که به این معناست که توابع و کلاس های خارج از تابع Car امکان دسترسی مستقیم به این خاصیت را ندارند. فقط توابع و متدهای داخل کلاس Car می توانند به خاصیت Color دسترسی مستقیم داشته باشند.

نکته :

اگر تابع یا کلاسی خارج از کلاس Car بخواهد به خاصیت خصوصی یا private به نام Color دسترسی داشته باشد، بایستی از یک Property برای این منظور استفاده کند. یک Property به نام Color در انتهای کد کلاس Car تعریف شده که وظیفه خواندن و نوشتن این خاصیت را بر عهده داشته و به سایر کلاس ها و توابع برنامه اجازه دسترسی به آن را می دهد.

همچنین کلاس Car دارای یک تابع سازنده یا Constructor می باشد. تابع سازنده، متدی است که وظیفه ساخت یک نمونه شی از کلاس مربوطه و برگردندن آن را به عهده داشته و به محض ساخته شدن یک نمونه شیء از کلاس اجرا می شود. تابع سازنده کلاس Car دارای یک پارامتر بوده که برای مقداردهی اولیه شی Car با خاصیت Color بزرگ قرمز (Red) به کار می رود. بنابراین هر شی از کلاس Car که ساخته شود، رنگ قرمز را به صورت پیش فرض برای خاصیت Color خود خواهد داشت. برای نشان دادن درستی این مسئله نیز تابع Describe طراحی شده که نام هر شی یا object ساخته شده با مقدار رنگ آن را در خروجی نشان می دهد.

 

آموزش ویژگی های کلاس (C# Properties)

ویژگی (Property) در C# به شما امکان کنترل روش دسترسی و تغییر متغیرهای یک کلاس را می دهد. استفاده از ویژگی در C#، راه توصیه شده و درست جهت دسترسی به متغیرهای یک کلاس، به وسیله متدها یا توابع خارج از کلاس جاری، در زبان برنامه نویسی شی گرا object oriented می باشد. به عبارت دیگر، وقتی که یک متد یا کلاس دیگری در برنامه، بخواهد به متغیر یک کلاس دسترسی داشته باشد، بهتر است به جای این که مستقیما متغیر را استفاده کند، از طریق یک ویژگی یا Property در کلاس خود متغیر، به آن دسترسی داشته باشد. در مثال آموزشی درس قبل (کار با کلاس ها) برای اولین بار روش استفاده از یک ویژگی یا Property را نشان دادیم. یک ویژگی یا Property همانند ترکیبی از یک متغیر Variable و یک متد method است. ویژگی نمی تواند پارامتری را دریافت کند، اما به وسیله آن می توانید قبل از ارسال و دریافت متغیر، مقدار آن را تغییر دهید. هر ویژگی یا Property از دو قسمت اصلی get و set تشکیل شده که همانند کد مثال زیر درون مجموعه Property تعریف می شوند :

private string color;

public string Color

{

get { return color; }

set { color = value; }

}

متد get مقدار متغیر را خوانده و آن را به برنامه بر می گرداند، از طرف دیگر متد set هم مقدار مورد نظر را به متغیر نسبت می دهد. مثال اول، ساده ترین حالت تعریف Property در C# است، اما می توانید آن را گسترش نیز بدهید.

نکته مهم در آموزش سی شارپ:

مسئله مهم در هنگام تعریف یک ویژگی یا Property این است که تعریف یکی از متدهای set یا get نیز کفایت می کند و در صورت تعریف یکی، تعریف متد دیگر اختیاری است. این مسئله، امکان تعریف ویژگی های فقط خواندنی read-only و یا فقط نوشتنی write-only را می دهد.

در کد زیر یک مثال کامل تر از نحوه تعریف ویژگی ها در C# را نشان داده ایم :

public string Color

{

get

{

return color.ToUpper();

}

set

{

if(value == "Red")

color = value;

else

Console.WriteLine("This car can only be red!");

}

}

در کد مثال فوق، ویژگی را کمی گسترش دادیم. در کد جدید، متغیر Color در هنگام return، به دلیل استفاده از متد ToUpper() به صورت حروف بزرگ، برگردانده می شود. از طرف دیگر، با استفاده از دستور شرطی if، فقط مقدار رنگ “red” برای متغیر Color پذیرفته می شود.

آموزش سی شارپ ادامه دارد

  • افشین رفوآ