گاهی اوقات چیزی خارق العاده در مورد زندگی کشف می کنید که به طور تصادفی اتفاق می افتد. این همان چیزی است که برای من اتفاق افتاد.
چهار سال پیش من در یک ساختمان اداری قدیمی در حومه شهر کار می کردم. کار من این بود که محصولات مالی را خانه به خانه بفروشم. در اولین روزم ، متوجه شدم که همه میزها فقط یک صفحه کامپیوتر دارند. به.
دوازده ماه سریع جلو بیایید و من یک صفحه نمایش حرفه ای بودم و از آن خوشحال بودم.
من می روم هر روز به دفتر بروید و لپ تاپ را به یک صفحه وصل کنید. من میانبرهای صفحه کلید را آموخته بودم تا با تفاوت کار بر روی یک صفحه نمایش در مقایسه با دو صفحه آشنا شوم.
وقتی به روزرسانی رایانه خانگی خود را انجام دادم دوباره تصمیم گرفتم و تصمیم گرفتم Mac دیگری با دو صفحه دیگر نخرم حرفه ای ، و در عوض ، به دنبال iMac بسیار ارزان تر باشید. اجرای دو صفحه روی iMac آسان نبود و هزینه بر بود - بعلاوه ، دیگر فضای میز برای دو صفحه وجود نداشت.
مطمئناً تغییر از دو صفحه کامپیوتر در خانه به یک صفحه نمایش پس از چند ماه آسان شد. در اوایل سال جاری ، من کار جدیدی را شروع کردم و س oldال قدیمی "یک صفحه یا دو صفحه ، آقا" هنگامی که برای اولین بار با بخش IT ملاقات کردم ، مطرح شد.
من با یک لبخند بزرگ و مطمئن گفتم "من یک صفحه نمایش می گیرم ، مامان"
همکاران من که در حال گوش دادن به مکالمه بودند گیج شده بودند.
این همان چیزی بود که همکاران من در حال فکر کردن بودند در حالی که آنها تماشا می کردند که من آنچه را که به عنوان تصور می کردم رها می کنم. امتیاز بزرگ و اصرار بر یک صفحه کامپیوتر. آنها فکر کردند من مخالف آن چیزی هستم که من تبلیغ می کنم. من نبودم. و کتابهایی که در آن زمان می خواندم در مورد روند جدیدی از خوردن لوبیا و برنج به مدت یک هفته در ماه صحبت می کردند. این ممکن است پوچ به نظر برسد ، اما یک دلیل خوب در پشت آن وجود دارد: این به شما کمک می کند زندگی کمتری را بیاموزید.
اعتبار تصویر: Betty Crockerخوردن غذاهای ساده مانند لوبیا و برنج به شما می آموزد که بدون پیچیدگی هایی مانند آشپزها در برنامه تلویزیونی Master Chef آشپزی کنید.
خوردن غذاهای ساده به شما می آموزد که نیازی به چاشنی ، سس ، شراب ، چاشنی یا هر چیز دیگری ندارید.
دلیل انتخاب یک صفحه کامپیوتر این است که من را همه کاره کرده است و من مجبور بودم کارهای کمتر را کمتر یاد بگیرم. من همیشه در محیطی کار نمی کنم که دارای دو صفحه نمایش باشد و بتوانم آن را به لپ تاپ وصل کنم.
وقتی در تعطیلات در ساحل نشسته اید دو صفحه وجود ندارد.
< p> اگر برای راه اندازی اولیه کار کنید و کار کنید ، احتمالاً دو صفحه نمایش نخواهید داشت.شاید من کارم را از دست بدهم. شاید دوباره شرکت خودم را راه اندازی کنم. شاید من از خانه کار می کردم جایی که دو صفحه وجود نداشت. من انعطاف پذیرتر شدم.
داشتن یک صفحه باعث شد قدر کارهای بیشتری را که می توانم در آن صفحه انجام دهم درک کنم. من دیگر 1000 زبانه باز نداشتم زیرا فقط یک صفحه برای کار کردن داشتم. وقتی می خواستم یک پست وبلاگ بنویسم ، فقط یک پنجره روی صفحه من وجود داشت ، باز.
صفحه دوم بی نظمی و حواس پرتی بود در حالی که زندگی یک صفحه روی یک چیز متمرکز بود. من از هر کلمه روی آن صفحه جدا قدردانی کردم و میز کار من فوق العاده زیبا به نظر می رسید زیرا فقط یک چیز روی آن وجود داشت.
قدردانی از همه چیز در زندگی با این ایده شروع می شود که دیگر نیازی به آن ندارید. شما به مقدار کمتری نیاز دارید.
اگر می خواهید بهره وری خود را افزایش داده و نکات ارزشمندی در زندگی بیاموزید ، پس در لیست پستی خصوصی من مشترک شوید. شما همچنین کتاب الکترونیکی رایگان من را دریافت خواهید کرد که به شما کمک می کند تا به صورت آنلاین به یک تأثیرگذار تغییر دهنده بازی تبدیل شوید.
همین حالا برای عضویت اینجا را کلیک کنید!
من فی نفسه چیزی در برابر نمایش ندارم. من همانقدر برای هری پاتر و کودک نفرین شده بسیار هیجان زده هستم که هزاره بعدی که شبها از پنجره بیرون خیره شده بود و منتظر نامه آنها از هاگوارتز بود ، بسیار هیجان زده شد ، اما با آنچه می توان تصور کرد تحویل جغد ناکارآمد است گمراه شد. سرویس. فقط چیزی در مورد جادوی کتاب ها وجود دارد که دست نیافتنی به نظر می رسد - غیر قابل تکرار.
با توجه به گفته های من ، به افتخار نمایشنامه آینده ، سعی می کنم کمی از این جادو را بازسازی کنم.
مدل های زبانی جنبه ای اساسی در پردازش زبان طبیعی (NLP) هستند که سعی می کنند توزیع احتمالی را در دنباله های کلمات بیاموزند ، به گونه ای که - با توجه به سابقه متن قبلی - بتوانند جملات جدید ، یک کلمه در یک زمان ایجاد کنند. ، کاملا از ابتدا در دنیای واقعی ، آنها در همه چیز از تشخیص گفتار گرفته تا بازیابی اطلاعات استفاده می شوند. در دنیای ما ، آنها به ما در بازنویسی هری پاتر کمک می کنند.
بخش بعدی به بررسی اجمالی جادوی پشت شبکه های عصبی ، LSTM و جاسازی کلمات که ما را تشکیل می دهند ، می پردازد. مدل زبان ، و پس از آن ما مستقیماً وارد The Good Stuff می شویم.
من سعی می کنم این توضیحات را در سطح بالا و تا آنجا که ممکن است غیر فنی باشد ، بنابراین هرکسی که از قبل با این نظریه آشنایی دارد (یا علاقه ای به آن ندارد) می تواند با خیال راحت از این بخش صرف نظر کند.
یادگیری ماشینی 90 درصد از معجزات تکنولوژیکی را که در اطراف می بینید و می شنوید ، تقویت می کند. هر روز ، از جمله اتومبیل های خودران ، Siri ، تشخیص تقلب در کارت اعتباری ، موتورهای توصیه آمازون و Netflix ، و اخیراً حتی خود گوگل را نیز جستجو کنید. البته ، تقریباً 100٪ از این سیستم ها شامل مواردی فراتر از یادگیری ماشین می شود ، اما بعداً به آن می پردازیم. الگوریتمی که در اصل برای تقلید از مغز انسان طراحی شده است: سیگنال های ورودی ، سلول های عصبی که به این سیگنال ها واکنش نشان می دهند و خروجی هایی که اطلاعات را به سایر نورون ها منتقل می کند.
یک شبکه عصبی وانیلی. منبع: http: //cs231n.github.io،/neural-networks-1/در علوم کامپیوتر ، این به مجموعه ای از مقادیر ورودی ، یک یا چند لایه مخفی برای نگهداری محاسبات متوسط ، ترجمه می شود ، لایه خروجی و یک سری وزنه که هر نورون را از یک لایه به لایه دیگر متصل می کند. این وزنه ها ، که از داده ها توسط رایانه "آموخته می شود" (در فرایند آن وارد نمی شوم ، اما در اصل نسخه ای از حدس و بررسی + حساب است) ، قرار است اهمیت هر نورون را با احترام نشان دهد. تا در نهایت تصمیم درست را اعلام کند یادگیری عمیق ، که اخیراً با عنوان "آینده هوش مصنوعی" مورد توجه قرار گرفته است ، واقعاً شامل انواع مختلف شبکه عصبی اساسی با چندین لایه پنهان است.
بله ، می دانم. عمیق به معنای عمیق است - بسیاری از لایه های پنهان. خودشه. هر دوی ما می توانیم خودروهای خودران خود را بسازیم.تعدادی از محدودیت های مهم به عنوان مثال ، فقط می تواند با ورودی و خروجی با طول ثابت کار کند. با این حال ، تعداد زیادی از وظایف را نمی توان با آن محدودیت ها بیان کرد. برای مثال ترجمه ماشینی را در نظر بگیرید-چگونه باید جملات ورودی و خروجی با طول متغیر را به دو زبان مختلف در نظر بگیریم و آنها را در یک شبکه عصبی معمولی قرار دهیم؟
پاسخ: ما اینطور نیستیم. اینجاست که RNN وارد شده است.
RNN یا شبکه های عصبی مکرر برای رفع این نقص دقیق طراحی شده اند. توالی مدل RNN در اساسی ترین سطح خود: مجموعه ای از تصاویر ، صداها ، کلمات و غیره ، جایی که (1) ترتیب نمایش هر عنصر در سری اهمیت دارد و (2) محاسبه یکسان روی هر عنصر انجام می شود .
در نتیجه ، RNN دقیقاً شبیه یک شبکه عصبی معمولی است ، مگر با یک "حلقه" مستقل در لایه مخفی که محاسبه را برای هر عنصر تکرار می کند.
شبکه عصبی مکرر ، در طول زمان باز می شود (راست). X منبع: http://colah.github.io/posts/2015-08-Understanding-LSTMs/محاسبه نورون در هر مرحله نه تنها ورودی ها و وزنهای فوری را در نظر می گیرد ، بلکه تاریخچه ورودی ها و محاسبات گذشته ، به منظور تعیین مرحله منطقی بعدی. (اگر علاقمند هستید ، این دانشمندان MIT را که با پیشگیری از نظریه بیگ بنگ و دفتر ، مدل پیش بینی رفتار انسان را آموزش داده اند ، بررسی کنید. و فکر می کنید بعد از کار حوصله تان سر رفته است.)
با استفاده از RNN ، که می تواند در طول زمان "محو" شود تا محاسبات را در هر تکرار لایه (های) پنهان انجام دهد ، در نهایت می توانیم ساخت مدل زبانی خود را آغاز کنیم. آنچه من در واقع از آن استفاده کردم یک LSTM (حافظه کوتاه مدت بلند) RNN بود ، نوعی از مدل اصلی RNN که برخی از کاستی های اساسی آن را در برخورد با توالی های طولانی (به عنوان مثال شیب ناپدید شدن و انفجار) برطرف می کند. من قصد ندارم در اینجا به آنها بپردازم ، اما پست وبلاگ colah در مورد آنها کاملاً فوق العاده است. در اصل ، هر واحد توسط مجموعه ای از دروازه های "ورودی" ، "فراموش کردن" و "به روز رسانی" تنظیم می شود که به شبکه اجازه می دهد جریان اطلاعات را کنترل کند.
قبل از پرداختن به برخی از متن های سرگرم کننده که مدل زبان هری پاتر ایجاد کرده است ، می خواهم به طور مختصر در مورد یکی از بخشهای جالب پروژه صحبت کنم: جاسازی کلمات.
ایده ساده است. جمله ای را که می خواهیم به مدل خود وارد کنیم ، در نظر بگیرید: "هری از تخت بلند شد." برای اینکه دستگاه آن را به عنوان ورودی پردازش کند ، هر کلمه باید به نوعی معادل عددی منحصر به فرد کدگذاری شود. یک رویکرد ساده لوحانه این است که به سادگی تمام کلمات موجود در واژگان منبع را یک به یک شمارش کنید ، یعنی "هری" = 1 ، "got" = 2 و غیره. با این حال ، همانطور که می توانید تصور کنید ، این امر بسیاری از اطلاعات نحوی را حذف می کند. در مورد کلمات و روابط بین آنها با این رویکرد ، "هری" به همان اندازه از "رون" متمایز است که "هری" برای "پرواز" است.
راه حل؟ هر کلمه را در یک فضای بردار آموخته و با ابعاد بالا قرار دهید ، جایی که کلمات از نظر معنی به هم نزدیک هستند ، به همین ترتیب در فضای بردار نزدیک هستند. به عبارت دیگر ، کامپیوتر را آموزش دهید تا به طور محاسباتی معنی کلمات را درک کند.
این جاسازی ها عبارتند ازهمچنین توسط یک شبکه عصبی ، با استفاده از معماری CBOW (کیسه پیوسته کلمات) یا پرش از گرامر ، آموخته شده است و در هر صورت نتایج بسیار شگفت انگیزی به ما می دهند. به عنوان مثال ، حتی یک فرد ابتدایی قادر است معناشناسی روابط و کثرت جنسیت را به تصویر بکشد:
جاسازی کلمه در فضای بردار همانطور که در یک فضای کم بعدی تجسم شده است. منبع: http://datascientistdiary.blogspot.com/در مدل زبانی زیر ، هر کلمه از هفت رمان هری پاتر به یک جاسازی با ابعاد بالا تبدیل شد که به موازات پارامترها آموخته شد- یا وزنه - در حین تمرین.
اگر قسمت قبلی را رد کرده اید (یا به احتمال زیاد خواندن آن را شروع کرده اید و حوصله تان سر رفته است) ، در اینجا دوباره خواندن را شروع می کنید.
دو ویژگی خاص این قطعه از متن وجود داشت که یادگیری آن را بسیار مشکل می کرد:
… و…
بنابراین ... بله. همانطور که گفتم ، جی کی رولینگ به این زودی جایگزین نمی شود.
با توجه به مشکلاتی که در بالا ذکر کردم ، چند مورد وجود دارد که مدل بسیار خوب انجام داد:
(+) این سبک کلی نگارش را انتخاب کرد (البته بدون اینکه بتوانم واقعاً بنویسم). توزیع طول جمله ، طول پاراگراف ، ساختارهای گفتگو ، موجودیت ها و حتی نحوه معرفی و بسته شدن دیالوگ ("هرمیون با صراحت گفت" یا "با عصبی از هری پرسید") همه به درستی تکرار شده است.
(+) گرامر (نوعی) آموخته است. به طور خاص ، جملات-در حالی که غالباً از نظر معنایی مضحک هستند-به طور کلی بسیار نزدیک به نحو درست هستند (به عنوان مثال انتخاب کلمه اشتباه اما بخش صحیح گفتار). به به طور خاص ، این قسمت ایجاد شده را بررسی کنید:
به احساس عمومی و لحن پشت گذر توجه کنید ، و به کلماتی که به آن کمک می کنند توجه کنید. "صورت سرد و کم رنگ" ، "صدای خشن" ، "لرز" ، "صدای تکان دهنده" ، "وحشتناک" ، "دوست نداشتن زیاد" ، - همه آنها بسیار شوم ، درست است؟ به عبارت دیگر ، دستگاه یاد گرفته است که لحن خاصی از کلمات را حداقل تا حدی تفسیر کرده و حفظ کند.
البته از سوی دیگر ، مدل دارای چندین اشکال آشکار است: /p>
(-) بیشتر آن معنی ندارد. *Shrug*
(-) مدل حافظه بلند مدت قابل تشخیص ندارد. به این معنا که حتی وقتی جملات معنا پیدا می کنند ، برای تشکیل یک داستان دور هم جمع نمی شوند. در حالی که RNN ها از لحاظ نظری قادر به ساختن توالی هایی با هر طول هستند (اگرچه این مدل خاص در طول ورودی پنجاه کلمه محدود شده بود) ، حتی نوع LSTM نمی تواند حس طولانی مدت کافی برای ساختن "رویدادها" را به شیوه ای منسجم به تصویر بکشد. .
(-) مدل ضمایر و مقدمات را نمی فهمد. بسیاری از مسائل مربوط به "خود ارجاع" وجود دارد ، مانند:
داستان کوتاه: تولید خودکار متن سخت است.
جدا از دریافتاین پروژه برای تولید برخی از متن های بسیار خنده دار به سبک نویسندگان مشهور (به عنوان مثال وقتی در شکسپیر آموزش دیده بود ، همان مدل لورد ویلوبی را از لوسنتیو به عنوان "آقا ، الاغ مهربان من" یاد می کرد) ، این پروژه به عنوان یک مطالعه موردی خوب عمل می کند. برای برخی از موانع اساسی در هوش مصنوعی مدرن امیدوارم در پست بعدی با آنها آشنا شوم ، اما در عین حال ، کد این پروژه در اختیار شما قرار می گیرد ، که می توانید از آن برای تکرار مقدار بی نهایت متن نامفهوم هری پاتر در اوقات فراغت خود استفاده کنید.
تشکر فراوان از پست اصلی وبلاگ شرجیلوزیر و آندره کارپاتی در مورد این موضوع به عنوان الهام. برنامه نویسی مبارک و درود بر J. K. Rowling.
از خواندن آن لذت بردید؟ روی ❤ زیر کلیک کنید تا آن را به سایر خوانندگان علاقه مند توصیه کنید! > img src = "https://cdn-images-1.medium.com/max/426/1*Mro-phkgJv4rZQ223OYosA.jpeg">یکی از بزرگترین نقایص دانش که ما در بین مهندسان خودآموخته و فارغ التحصیلان bootcamp مشاهده می کنیم ، در زمینه معماری کامپیوتر است. در حالی که اکثر مهندسان می دانند که باید الگوریتم ها و ساختار داده ها را بیاموزند ، بسیاری از شنیدن اینکه درک چیزی در حد معماری رایانه می تواند بسیار ارزشمند باشد شگفت زده می شوند.
خوشبختانه بسیاری از موارد عالی وجود دارد. منابعی برای یادگیری در مورد کام آرش وجود دارد و با کمی فداکاری و راهنمایی می توانید مقدار زیادی از آنچه را که دانستن ارزشمند است به خودتان آموزش دهید. امیدوارم این مقاله شما را در مسیر درست آغاز کند.
ممکن است بدون درک سخت افزاری که در نهایت کد شخص بر روی آن اجرا می شود ، یک توسعه دهنده وب موفق باشید. متأسفانه ، غفلت از معماری رایانه ، نوع مهندسی را که یک مهندس می تواند انجام دهد ، به سه دلیل محدود می کند: به به سادگی لایه های غیرمستقیم کمتری وجود دارد که در غیر این صورت نادیده گرفتن توسعه دهنده از سخت افزار را بهانه می کند.
ثانیاً ، نوشتن نرم افزار سریع بدون درک نحوه دسترسی به داده ها و اجرای کد غیرممکن است. این امر به ویژه در حال حاضر اهمیت دارد که دسترسی به حافظه اصلی صدها برابر کندتر از اجرای یک دستورالعمل است ... بی توجهی به سلسله مراتب حافظه به احتمال زیاد علت مشکلات عملکرد است ، همانطور که مایک اکتون در صحبت cppcon خود به طور قانع کننده استدلال کرد.
ثالثاً ، همه چکیده های بین سخت افزار و زبانهای سطح بالا نشتی دارند. بسیاری از مفاهیم در برنامه نویسی سطح بالا از آنالوگهای برنامه نویسی سطح پایین نشأت می گیرد که به نوبه خود مفاهیم سطح پایین را نیز به راحتی حل می کند. هیچکدام از این انتزاعات پاک نیستند. اکثر آنها به عنوان راحتی ایجاد شده اند ، نه پارادایم های کاملاً جدیدی که به برنامه نویسان اجازه می دهد در مورد موارد زیر فکر نکنند. این درست است که آیا برنامه نویسان سطح بالا آن را درک کرده اند یا نه ، بنابراین نادیده گرفتن مبانی می تواند هم گران باشد و هم تعجب آور. هنگامی که ما در مورد "یک عدد صحیح" ، یا متغیر "تخصیص" صحبت می کنیم ، یا از طریق مرجع یا مقدار عبور می کنیم ، یا یک مقدار را روی "پشته" قرار می دهیم ، اینها مفاهیمی هستند که دارای میراث و مفاهیم سخت افزاری هستند. مهندسانی که این مبانی را بیشتر درک می کنند ، کار بهتری نسبت به کسانی که نمی دانند ، انجام می دهند.
در اینجا فرض می کنیم که انگیزه شما برای یادگیری معماری کامپیوتر این است که یک مهندس نرم افزار م effectiveثرتر شوید. به اگر هدف شما مهندس کامپیوتر شدن است (یعنی حل مشکلات با طراحی سخت افزار) ، این راهنما کافی نخواهد بود ، و ما اکیداً توصیه می کنیم که یک مسیر معمول مهندسی کامپیوتر را دنبال کنید.
اگر از پیشنهادات ما پیروی کنید. ، شما در نهایت باید به همان سطح از معماری کامپیوتر فارغ التحصیل از یک برنامه CS برتر در مقطع کارشناسی برسید. این امر نه تنها شما را به عنوان یک مهندس نرم افزار سطح بالا م effectiveثرتر می کند ، بلکه در صورت تمایل به مهندسی نرم افزارهای سطح پایین تر نیز مجهز می شوید.
هر رایانه دوره یا منبع معماری اهداف متفاوتی خواهد داشت. از دیدگاه ما ، اطمینان از این مطالب به این معنی است که می توانید به این س questionsالات به طور کامل پاسخ دهید:
اگر سادگی یک دوره آموزشی خوب را ترجیح می دهید ، ما 61C "ایده های عالی در معماری رایانه" برکلی را توصیه می کنیم. این دوره بین مدلهای ساده شده مورد نیاز برای شروع به فکر کردن در مورد معماری کامپیوتر و برخی از پیچیدگی های واقعی معماری مدرن ، تعادل مناسبی برقرار می کند.
یادداشت ها و آزمایشگاه های سخنرانی به صورت آنلاین در دسترس هستند ، و سخنرانی های گذشته در YouTube هستند. به متن همراه پیشنهادی سازمان و طراحی رایانه ای پترسون و هنسی است که هم عالی است و هم معمولاً مورد استفاده قرار می گیرد. همه مطالب عالی است ؛ هیچ سخنرانی ای وجود ندارد که ما پیشنهاد کنیم آن را کنار بگذارید. سیستم های محاسباتی ، که با نام "Nand2Tetris" نیز شناخته می شود ، کتابی بلندپروازانه است که سعی می کند درک منسجمی از نحوه عملکرد همه چیز در رایانه از منطق بولی تا برنامه های کوچک به شما ارائه دهد. هر فصل شامل ساختن قطعه کوچکی از سیستم کلی ، از نوشتن دروازه های منطقی ابتدایی در HDL ، از طریق CPU و اسمبلر ، تا برنامه ای به اندازه بازی Tetris است.
این نیمه اول این کتاب و همه پروژه ها به صورت رایگان از وب سایت Nand2Tetris موجود است. همچنین به عنوان یک دوره Coursera همراه با ویدئوهای موجود در دسترس است.
توصیه ما این است که شش فصل اول کتاب را بخوانید و پروژه ها را (تا شامل مونتاژ کننده و شامل) کامل کنید. انجام این کار درک شما را از رابطه بین معماری ماشین و نرم افزاری که بر روی آن کار می کند ، تقویت می کند.
به نظر ما نیمه دوم کتاب به اندازه کتاب اول قانع کننده نیست. حتی در نیمه اول ، Nand2Tetris با مبادله عمق به انسجام خود می رسد. به طور خاص ، دو مفهوم بسیار مهم در معماری رایانه ای مدرن خط لوله و سلسله مراتب حافظه هستند ، اما هر دو بیشتر در متن وجود ندارند. پیشنهاد می کنیم به جای ادامه فرایند مونتاژ به 61 درجه روی بیاورید.
برای کسانی که 61C را بسیار آسان می دانند یا مایلند در برخی از محتواها عمیق تر بکشند ، CS 162 را پیشنهاد می کنیم ، یک پیشرفته تر. دوره معماری کامپیوتر نیز در برکلی. CS 162 همچنین بردارها و پردازنده های گرافیکی را عمیق تر پوشش می دهد ، بنابراین توصیه می کنیم اگر در زمینه توسعه بسیار امیدوار کننده هستید ، از طریق آن سخنرانی ها کار کنید.
برای کسانی که خواهان یک راهپیمایی ملایم تر و معمولی تر تا معماری رایانه هستند ، یکی از کتابهایی که معمولاً توصیه می شود "کد چارلز پتزولد" است. ما فکر می کنیم خوب است. ما فقط آن را پیشنهاد می کنیم اگر به دنبال برخی از آنها هستیدخواندن سبک تر یا احساس می کنید به زمان نیاز دارید تا بتوانید با ایده مطالعه کام کام آشنا شوید. Nand2Tetris بسیار قابل دسترسی است بنابراین ما عموماً پیشنهاد می کنیم که مستقیماً به آنجا بروید.
در انتهای دیگر طیف ، مقاله دان لوئو در CPU ها از دهه 80 چه جدید است و اولریش درپرر آنچه هر برنامه نویس باید درباره حافظه بداند هر دو شگفت انگیز هستند هر دوی آنها مفاهیم فوق را تصور می کنند ، اما به طور کلی قابل دسترسی هستند و درک شما از معماری رایانه را از دو منظر متفاوت اما متمرکز بر تمرین کنندگان پیش می برند.
در نهایت ، ما یک مسیر مونتاژ MIPS را به exerciseism.io اضافه کرده ایم. برای سهولت تمرین نوشتن مجمع برای مردم. انجام این کار یک راه ارزشمند برای کشف رابط سخت افزار/نرم افزار است و یادگیری مجموعه MIPS به طور خاص یک یا دو هفته از محتوای 61C را تشکیل می دهد.
به غواصی عمیق تر علاقه دارید؟ بردفیلد هر 2-3 ماه یک دوره معماری کامپیوتر و رابط سخت افزار/نرم افزار را اجرا می کند.
در ژانویه سال 2016 ، رئیس جمهور اوباما یک "علوم کامپیوتر برای همه ”ابتکار برای کمک به افزایش در دسترس بودن دوره های علوم کامپیوتر در مدارس دولتی ایالات متحده. این در پاسخ به تعداد روزافزون مشاغل STEM در محاسبات و همچنین شکاف بین این تقاضا و تعداد دانش آموزانی که با مدرک CS فارغ التحصیل شده اند بود.
از آن زمان ، مدیران منطقه و مدارس در سراسر کشور و جهان گامی در جهت افزودن کلاسهای CS بیشتر به برنامه درسی خود و همچنین درخواست از معلمان برای یافتن راههای خلاقانه برای جاسازی دروس برنامه نویسی در موضوعات مربوطه خود برداشته است. ظهور کرده اند از نگرانی ها مبنی بر اینکه هوش مصنوعی در نهایت می تواند نیاز برنامه نویسان انسانی را جایگزین کند (مانند اتوماسیون ممکن است در نهایت جایگزین کار دستی شود) تا انتقاد از آموزش برنامه نویسی بدون آموزش مهارت های تفکر انتقادی ، برخی از محققان و مربیان از آموزش برنامه نویسی صرفاً به دلیل مد روز بودن محتاط هستند. < /p>
من به عنوان یک معلم علوم متوسطه و CS ، از کشف کلاس جدید اصول علوم کامپیوتر AP CollegeBoard بسیار هیجان زده شدم. این دوره نه تنها برای ارائه مهارت های اساسی برنامه نویسی به دانش آموزان بلکه برای معرفی مفاهیم گسترده تر و چندرشته ای ، از جمله راه هایی برای اندیشیدن در مورد فناوری و چگونگی تأثیر آن بر جامعه ، طراحی شده است.
این مدل آموزش CS است که من معتقدم که ما باید دانش آموزان خود را در معرض مهارتهایی قرار دهیم که به آنها اجازه می دهد در دنیایی که به سرعت در حال تغییر است رشد کنند-از جمله شیوه های تفکر ، پرسش و همکاری با یکدیگر ، همانطور که معلمان همیشه این کار را انجام داده اند.
وقتی دانش آموزان علوم کامپیوتر می خوانند ، خیلی بیشتر از یک زبان برنامه نویسی جدید یاد می گیرند. در اینجا 5 مهارت ارزشمند وجود دارد که دانش آموزان از یک درس CS با طراحی متفکرانه کسب می کنند:
تفکر محاسباتی یک رویکرد و مهارت فوق العاده مفید برای دانش آموزان و متخصصان در هر زمینه است ، نه فقط کسانی که کامپیوتر دارند تجزیه چیزی که به نظر می رسد یک مشکل بزرگ به قطعات کوچکتر است که می توان گام به گام با آنها مقابله کرد ، مهارتی است که دانش آموزان از اولین درس برنامه نویسی خود تمرین خواهند کرد. برنامه شما برای انجام چه وظایفی اساسی نیاز دارد؟ همه ورودی ها ، دارایی ها و فعل و انفعالات مورد نیاز برای کارکرد آن چیست؟
عکس کریس رید در Unsplashهمانطور که دانش آموزان یاد می گیرند برنامه ها ، صفحات وب یا برنامه ها را با کد بسازند ، آنها همچنین یاد می گیرند که الگوهای تکراری را تشخیص داده و از آنها استفاده کنند. (و اگر شباهت هایی را بین یک مانع کنونی و مشکلی که قبلاً حل کرده اید تشخیص دهید ، از رویکرد گذشته خود چه می توانید یاد بگیرید؟) جمع آوری داده ها در بازنمایی هایی که انسان ها به راحتی می توانند درک کنند و با آنها ارتباط برقرار کنند ، یک مهارت بسیار جستجو شده است ، مهم نیست. هادی پرتوی ، مدیرعامل Code.org در پاسخ به این سال که آیا CS باید برای هر دانش آموز اجباری باشد ، پاسخ داد:
اگرچه به نظر می رسد اصطلاح فنی باشد ، یک الگوریتم به سادگی لیستی از مراحل یا قوانین است که هنگام حل یک مشکل ، چه به اندازه پیچیدگی محاسبه مسیر موشک و چه به سادگی ترتیب صحیح مواد اولیه ای که در خمیر کوکی خود می ریزید. یا یک برنامه کامپیوتری برای مطابقت با آنچه می خواهند انجام دهند ، آنها در حال یادگیری روش مهمی برای حل مشکلات هستند که به آنها در هر جنبه ای از زندگی کمک می کند-نه فقط در کلاس های درس STEM.
وقتی مبتکران آموزش و پرورش شروع به افزودن "A" به STEAM (علم ، فناوری ، مهندسی ، هنر+طراحی و ریاضی) کردند ، من هیجان زده شدم. دانش آموزان مقطع راهنمایی من عاشق درس های برنامه نویسی بودند ، از روز اول "Hour of Code" هنگامی که سعی کردند موانا را با خیال راحت با موانع موجود در مسیر ساخت برنامه های Android خود با AppInventor MIT راهنمایی کنند.
اما بخشی که دانش آموزان بیشتر منتظر آن هستند؟ دیدن آنچه که آنها ایجاد کرده اند زنده می شود. وقتی آنها کاراکترهای Frozen را می بینند که الگوهای دانه برفی را ایجاد می کنند که مطابق با دستورالعمل هایی است که در کد نوشته اند ، چه در هر مرحله بگذرند یا نه ، هیجان زده می شوند.
درس CS به دانش آموزان اجازه می دهد تا رابطه بین کد را ببینند. آنها می نویسند و نتایج بصری خیره کننده ای که تولید می کنند ، خواه به آنها آموزش می دهید که چگونه یک وب سایت جدید را قالب بندی کنند ، ظاهر وبلاگ را شخصی سازی کنند یا با Scratch متحرک سازی کنند.
برای چند سالی بود که من از برنامه آموزشی CS Lead Project the Way در کلاس راهنمایی استفاده کردم. یکی از جنبه های مورد علاقه من در برنامه درسی ، چه در طول آموزش و چه در کلاس درس ، این بود که دائماً از دانش آموزان می خواست که مشکلات ، برنامه و طراحی را به صورت دو نفره حل کنند.
عکس توسط Val Vesa در Unsplashدر ابتدا ، این عمل با شکایات و ناامیدی های زیادی روبرو شد. (واکنش ها از "آنها کوتی دارند" گرفته تا "شما لپ تاپ کافی دارید تا هر یک از ما بتوانیم برنامه خود را بنویسیم!") هرچند با گذشت زمان ، حتی برنامه نویسان ستاره من متوجه شدند که همه افراد مشارکت ارزشمندی برای اشتراک گذاری دارند. برنامه نویسی یک فرایند پیچیده است که اغلب نیاز به چندین جفت چشم دارد تا خطاهای کوچک را اسکن کرده یا الگوهای گریز را تشخیص دهند. مهندسان نرم افزار حرفه ای دائماً در برنامه ریزی پروژه ، اولویت بندی وظایف و اجرای کد به صورت مشارکتی کار می کنند.
دانش آموزان سرسخت ممکن است فعالیتهای چند درس اول CS خود را به تنهایی قابل مدیریت بدانند ، اما زمانی که با انجام پروژه ای چند مرحله ای ، آنها از ارزش کار تیمی مطلع خواهند شد. پس از همه ، این پروژه نیاز به تحقیق در مورد نیازها و مطلوبیت کاربران بالقوه (برای جذابیت بخشیدن به یک برنامه یا برنامه و استفاده آسان از آن) ، طراحی بصری رابط کاربری آن و ایجاد یک طرح کلی (یا شبه کد) برای کد پیچیده ای که در نهایت باعث ایجاد برنامه اجرا شود. وقتی دانش آموز کد خود را ویرایش می کند30 بار (و از چند همکلاسی خواسته بود یک جفت چشم تازه ارائه دهند) اما هنوز نمی توانند بفهمند که چرا برنامه آنها به درستی کار نمی کند ، ناامیدی محسوس است.
برای ما به عنوان معلمان مهم است که از ارائه راه حل فوراً خودداری کنید ، حتی اگر وسوسه انگیز باشد. به نظر من هدایت دانش آموزان به این مفهوم که ما در آن روز در درس های علمی مبتنی بر پرس و جو در حال بررسی آن هستیم و این امر در آموزش CS نیز صادق است بسیار مingثر است. ممکن است دانش آموزان بتوانند برای مشاهده راه حل های ممکن ، میانبر و معادلات ریاضی را به Wolfram Alpha وارد کنند ، اما وقتی چیزی را از ابتدا ایجاد می کنند ، یافتن "پاسخ درست" دشوارتر است.
به عنوان مربی ، شما می توانید دانش آموزان را با سوالات راهنمایی کنید و با یادآوری این نکته که در نهایت حل یک مشکل در پایان یک راه طولانی پشتکار و مقابله با مانع از راهکارهای خلاقانه متعدد ، چقدر مفید است ، انگیزه آنها را حفظ کنید.
اگر از اینکه می خواهید برخی از درس های CS را در برنامه درسی خود قرار دهید ، الهام می گیرید ، در اینجا چند روش عالی برای شروع یا افزایش مهارت خود آورده شده است!
ارسال شده توسط ژولین والنتین و سوفین بوعزیز
مخزن Github: https://github.com/tensorflow/graphics
در چند سال گذشته شاهد افزایش گرافیک های متمایز جدید بوده ایم لایه هایی که می توانند در معماری شبکه عصبی وارد شوند. از ترانسفورماتورهای فضایی گرفته تا پردازنده های گرافیکی متمایز ، این لایه های جدید از دانش به دست آمده در طول سال های بینایی رایانه و تحقیقات گرافیکی برای ایجاد معماری های جدید و کارآمدتر شبکه استفاده می کنند. مدل سازی صریح مقدمات و محدودیت های هندسی در شبکه های عصبی ، راه را برای معماری هایی باز می کند که می توان به طور قوی ، کارآمد و مهمتر از همه ، به شیوه ای تحت نظارت خود آموزش دید. به اشیاء سه بعدی و موقعیت مطلق آنها در صحنه ، توصیف موادی که از آنها ساخته شده است ، چراغ ها و دوربین نیاز دارد. این توصیف صحنه سپس توسط یک ارائه کننده تفسیر می شود تا تصویری مصنوعی ایجاد شود.
< /img>در مقایسه ، یک سیستم بینایی کامپیوتری از یک تصویر شروع می کند و سعی می کند پارامترهای صحنه را استنباط کند. این امکان پیش بینی اجسام موجود در صحنه ، موادی که از آنها ساخته شده است و موقعیت و جهت سه بعدی آنها را می دهد.
آموزش سیستم های یادگیری ماشین قادر به حل این وظایف پیچیده بینایی سه بعدی اغلب به حجم زیادی داده نیاز دارد. از آنجا که برچسب زدن داده ها یک فرایند پرهزینه و پیچیده است ، مهم است که سازوکارهایی برای طراحی مدل های یادگیری ماشین وجود داشته باشد که بتوانند جهان سه بعدی را در حالی که بدون نظارت زیاد آموزش دیده اند درک کنند. ترکیب بینایی رایانه ای و تکنیک های گرافیکی رایانه ای ، فرصتی منحصر به فرد برای استفاده از حجم وسیعی از داده های بدون برچسب به آسانی در اختیار شما قرار می دهد. همانطور که در تصویر زیر نشان داده شده است ، به عنوان مثال ، می توان با استفاده از تجزیه و تحلیل سنتز در جایی که سیستم بینایی پارامترهای صحنه را استخراج می کند و سیستم گرافیکی بر اساس آنها تصویر را باز می گرداند ، به این مهم دست یافت. اگر رندر با تصویر اصلی مطابقت داشته باشد ، سیستم بینایی پارامترهای صحنه را به طور دقیق استخراج کرده است. در این راه اندازی ، بینایی رایانه ای و گرافیک رایانه ای دست به دست هم داده و یک سیستم یادگیری ماشینی واحد شبیه به رمزگذار خودکار تشکیل می دهند که می تواند به صورت خودآموز آموزش داده شود.
در ادامه ، برخی از قابلیت های موجود در گرافیک TensorFlow این تور جامع نیست. برای کسب اطلاعات بیشتر از Github ما دیدن کنید تا امکانات جدیدی را که TensorFlow Graphics در اختیار شما قرار می دهد ، بیابید. در تصویر زیر ، فرمالیسم زاویه محور برای چرخاندن یک مکعب استفاده شده است. محور چرخش به سمت بالا است و زاویه آن مثبت است و مکعب را در جهت خلاف جهت عقربه های ساعت می چرخاند. در این مثال Colab ، ما نشان می دهیم که چگونه فرمالیسم های چرخشی را می توان در یک شبکه عصبی آموزش داد که برای پیش بینی چرخش و ترجمه یک شی مشاهده شده آموزش دیده است. این وظیفه هسته اصلی بسیاری از برنامه ها از جمله روبات هایی است که بر تعامل با محیط خود تمرکز می کنند. در این سناریوها ، گرفتن اشیاء (به عنوان مثال توسط دسته آنها) با بازوی روباتیک نیاز به برآورد دقیق موقعیت این اجسام نسبت به بازو دارد.
مدل سازی دوربین ها
مدل های دوربین نقش بسزایی در بینایی کامپیوتر دارندبر ظاهر اجسام سه بعدی که بر روی صفحه تصویر نمایش داده می شود تأثیر می گذارد. همانطور که در زیر مشاهده می شود ، به نظر می رسد که مکعب در حال بزرگ شدن و پایین آمدن است ، در حالی که در واقعیت این تغییرات فقط به دلیل تغییر در فاصله کانونی است. این مثال Colab را برای جزئیات بیشتر در مورد مدل های دوربین و یک مثال مشخص از نحوه استفاده از آنها در TensorFlow امتحان کنید.
مواد
مدل های مواد نحوه تعامل نور با اجسام را مشخص می کنند تا ظاهر منحصر به فرد خود را به آنها بدهند. به عنوان مثال ، برخی از مواد مانند گچ نور را به طور یکنواخت در همه جهات منعکس می کنند ، در حالی که برخی دیگر مانند آینه ها کاملاً دیدنی هستند. در این دفترچه تعاملی Colab ، نحوه تولید رندرهای زیر را با استفاده از Tensorflow Graphics خواهید آموخت. همچنین این فرصت را خواهید داشت که با پارامترهای مواد و نور بازی کنید تا حس خوبی از نحوه تعامل آنها ایجاد شود. پیش بینی دقیق خواص مواد برای بسیاری از وظایف اساسی است. به عنوان مثال ، می تواند به کاربران این امکان را بدهد که مبلمان مجازی را در محیط خود رها کرده و قطعات را بصورت واقع بینانه با فضای داخلی خود ترکیب کرده و به کاربران درک دقیقی از ظاهر آن مبلمان بدهند.
هندسه-پیچیدگی های سه بعدی و یکپارچه سازی
در سال های اخیر ، سنسورهای خروجی سه بعدی داده ها به شکل ابرهای نقطه ای یا مشبک در حال تبدیل شدن به بخشی از زندگی روزمره ما هستند ، از سنسورهای عمق تلفن های هوشمند گرفته تا لیدارهای اتومبیل خودران. با توجه به ساختار نامنظم آنها ، پیوندهای روی این نمایش ها به طور قابل توجهی در مقایسه با تصاویری که ساختار شبکه معمولی را ارائه می دهند ، بسیار سخت تر است. TensorFlow Graphics دارای دو لایه کانولوشن سه بعدی و یک لایه جمع آوری سه بعدی است که به عنوان مثال به شبکه ها اجازه می دهد تا طبقه بندی بخش های معنایی را روی مشها انجام دهند ، همانطور که در زیر نشان داده شده و در این دفترچه Colab نشان داده شده است.
اشکال زدایی بصری یک راه عالی برای ارزیابی اینکه آیا یک آزمایش در حال انجام است یا خیر در جهت درست برای این منظور ، TensorFlow Graphics دارای یک افزونه TensorBoard است تا بصورت تعاملی مشهای سه بعدی و ابرهای نقطه ای را تجسم کند.
اولین نسخه پشتیبانی از TensorFlow Graphics با TensorFlow 1.13.1 و بالاتر سازگار است. با مراجعه به https://www.tensorflow.org/graphics API و دستورالعمل های نصب کتابخانه را خواهید یافت .
ایجاد گرافیک TensorFlow یک کار گروهی بود. تشکر ویژه از جم کسکین ، پاول پیدلیپنسکی ، آمیش ماکادیا و آونش سود که همگی سهم قابل توجهی داشتند.