کشاورزی ماشینی

مهندسی مکانیک بیوسیستم

مهندسی مکانیک بیوسیستم

امیدی ارجنکی
دکتری مهندسی مکانیک بیوسیستم

در این وبلاگ آموخته هایم را نشر می دهم.
آموزش و یاد دادن از زکات علم است.پیامبر خوبی ها حضرت محمد صلوا تالله علیه و آله فرمودند حکایت کسی که علم آموزد و از آن سخن نکند چون کسی است که گنجی نهد و از آن خرج نکند.
این روزها که دانش مهندسی ماشین ها و مکانیزاسیون کشاورزی غریب و محجور افتاده است، آموزش و بیان فایده ها و سودهای استفاده از اتوماسیون در کشاورزی شاید راهی برای تغییر نگرش بر این رشته باشد.
فارغ التحصیلان، استادان و دانشجویان رشته مهندسی مکانیک ماشین های کشاورزی بهترین متخصصان برای ارتباط علم نوین مهندسی با کشاورزی هستند. چون در این رشته انوع تخصص ها آموزش داده می شود. برق، کشاورزی، باغبانی، دامپروری، کامپیوتر، تجهیزات و ابزار اندازه گیری، علوم نوین مثل شبکه های عصبی، بینایی ماشین، انرژی های نوین که همه و همه از ملزمات توسعه کشاورزی نوین هستند.
استفاده از علم نوین در کشاورزی صد در صد باعث تولید غذای بیشتر، رفع وابستگی، تولید غذای با کیفیت تر، ارزانی محصولات و بازارپسندی و سود بیشتر می شود.
امیدوارم بتوانم گامی را برای این مهم بردارم.
از نظرات دوستان و هم رشته ای هایم در این وبلاگ استقبال خواهم کرد.
در آخر هم:
کارتان را برای خدا نکنید؛ برای خدا کار کنید!
تفاوتش فقط همین اندازه است که ممکن است حسین (علیه السلام) در کربلا باشد و من در حال کسب علم برای رضایت خدا ...!
شهید سید مرتضی آوینی

آخرین نظرات
در پست های قبل همین پروژه را با شبکه عصبی معمولی پیش خور انجام دادیم که نتایج آن چنگی به دل نمیزد. در این پست همین کار را با شبکه عصبی همینگ انجام میدیم. دقت کنید که کد این نوع شبکه در متلب نوشته شده است.




طراحی تابع عملیات:
با توجه به نبود الگوی شبکه همینگ در نرم افزار متلب سعی شد روند و الگوریتم این شبکه در بخش کد نویسی متلب به صورت یک فانکشن به شرح زیر ایجاد شود:

 

 
تشریح تابع و روند کار آن:
یک تابع با نام «whatnom» با ورودی آدرس تصویر مربوط به عدد نوشته شده نمونه و خروجی تشخیص شبکه در مورد این ورودی، تعداد تکرار انجام شده و ماتریس خروجی آخر ایجاد شد. در خط دوم تصویر توسط تابع «makepic» به داده ستونی تبدیل خواهد شد. این داده برای شبیه سازی شبکه مورد استفاده قرار میگیرد. تابع «makepic» در زیر آورده شده است:



توسط همین تابع الگوهایی را به داده های یک ستونی 25 ردیفه تبدیل می کنیم. همچنین تمامی مولفه های صفر را تبدیل به 1- میکنیم. با این الگوها که ده عدد نوشته شده به صورت ایده آل هستند، شبکه را خواهیم ساخت. مقدار «S» و مقدار «R» به ترتیب تعداد الگوها و تعداد ورودی ها یا همان ردیف ماتریس های الگوها است. ماتریس وزن «W1» با ابعاد 10 در 25 لایه اول شبکه همینگ را در خط 48 بدست می آوریم. ماتریس بایاس ها هم یک ماتریس 10 ردیفی با مقادیر یکسان مولفه R یا همان 25 است. «u1» (یک ماتریس 10 در یک) خروجی لایه اول و ورودی تابع انتقال این لایه است که در خط 50 محاسبه میشود. تابع انتقال این لایه نیز یک تابع همانی است. در واقع ضرورتی در نوشتن خطوط 51 تا 54 نیست. در این مرحله کار در لایه اول شبکه همینگ تمام میشود و «f1» خروجی آن است.
خطوط 55 تا 62 ماتریس 10 در 10 وزن لایه دوم شبکه همینگ (W2) را تولید میکند. همچنین ماتریس وزن لایه سوم (W3) نیز که ترانهاده ماتریس وزن لایه اول است در خط 63 محاسبه شد. در خط 65، پیش بینی اولیه شبکه را در متغیر «nom» ده فرض میکنیم (یعنی هیچکدام از اعداد 0 تا 9).
مقدار «u2» یا همان خروجی لایه دوم قبل از ورود به تابع انتقال خطی مثبت (خط 39) در خط 72 محاسبه میشود. مقدار اولیه «f2» همان مقدار «f1» است (خط 64).  بعد از محاسبه «f2» این مقدار به لایه سوم فرستاده می شود تا الگو ساخته و در نتیجه شناسایی گردد.
مقدار «u3» و «f3» در خطوط 77 تا 84 محاسبه میشوند. تابع انتقال در لایه سوم تابع «Hard Limiter» دو طرفه است (خط 83). خطوط 85 تا 105 نیز مقدار خروجی را با الگوها تطبیق داده و بعد از مقایسه خروجی «nom» را اعلام میکند. در آخر زمانی که ماتریس «u3» نهایی با ماتریس «u3» محاسبه شده در مرحله قبل مساوی شد حلقه متوقف میشود و نتیجه اعلام می گردد.

آزمایش و شبیه سازی شبکه:
به منظور شبیه سازی شبکه مثال زیر را پی میگیریم: یک نمونه عدد 7 را با دستور زیر در محیط متلب به شبکه طراحی شده وارد میکنیم. خروجی تابع ترتیب زیر ظاهر میشود:



تابع بعد از طی 8 مرحله تکرار به نتیجه و آن هم نتیجه صحیح رسید. اعداد دیگر را میتوانید به همین راحتی امتحان کنید و نتیجه را ببینید. میتونید برای تمرین و مشاهده کد نمونه به اینجا هم مراجعه کنید.

نظرات  (۲)

سلام من این کد رو نوشتم اما هر کاری میکنم این اررور رو میده 
Matrix dimensions must agree.
اگه ممکنه پروژه خودتونو برام بفرستین ممنون میشم

پاسخ:
سلام
در ابعاد ماتریستون دقت کنید.
شاید یک جابجایی بین ستون و ردیف ها مشکل شما را حل کند
پروژه مال خیلی وقت پیشه

لام

برای اعداد فارسی نیاز به داده های جدید میباشد.آیا امکان دارد آن را انجام داد.


پاسخ:
سلام
همین کار برای اعداد فارسی انجام شده است.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی