{"id":54,"date":"2011-02-04T22:51:30","date_gmt":"2011-02-04T22:51:30","guid":{"rendered":"http:\/\/www.millermattson.com\/dave\/?p=54"},"modified":"2020-01-13T20:30:17","modified_gmt":"2020-01-13T20:30:17","slug":"54","status":"publish","type":"post","link":"https:\/\/millermattson.com\/dave\/?p=54","title":{"rendered":"New Video Tutorial: Make a Neural Net Simulator in C++"},"content":{"rendered":"<p>Released today! Our newest video programming tutorial, <em>A Neural Net Simulator in C++<\/em>, is now available for your viewing pleasure at the following link:<\/p>\n<p>[ Update for 2013: Also see the new companion video for visualizations of how neural nets work and how to train them: <a href=\"http:\/\/vimeo.com\/technotes\/neural-net-care-and-training\">The Care and Training of Your Backpropagation Neural Net.<\/a>&nbsp; ]<\/p>\n<p><a href=\"http:\/\/vimeo.com\/19569529\">Neural Net in C++ Tutorial<\/a> from <a href=\"http:\/\/vimeo.com\/user5921775\">David Miller<\/a> on <a href=\"http:\/\/vimeo.com\">Vimeo<\/a>.<\/p>\n<p>If you&#8217;re a beginning to intermediate C++ programmer, this tutorial will guide you through the analysis, design, and coding of a command line console program that implements a neural net in C++. You&#8217;ll end up with a classic back propagation model with adjustable gradient descent learning and adjustable momentum. You&#8217;ll see how to teach your neural net to solve a simple task, then you can supply your own training data to train your net to do wonderful and amazing things.<\/p>\n<p>Besides showing how a neural net works, we also discuss:<\/p>\n<ul>\n<li>C++ class design<\/li>\n<li>prototyping with portable C++<\/li>\n<li>test early, test often<\/li>\n<li>encapsulation, data hiding<\/li>\n<li>static class members<\/li>\n<li>accessor functions<\/li>\n<li>const correctness<\/li>\n<li>the assert() macro<\/li>\n<li>the vector&lt;&gt; template container, and .size(), .back(), and .push_back() member functions<\/li>\n<li>reference variables<\/li>\n<\/ul>\n<p>This tutorial does not cover or require exception handling, memory management, STL iterators, inheritance, threads, or graphical input or output.<\/p>\n<p>The finished neural net source code is also available for download here (see the video for instructions on what to do with it):<\/p>\n<ul>\n<li><a title=\"neural-net-tutorial.cpp\" href=\"http:\/\/inkdrop.net\/dave\/docs\/neural-net-tutorial.cpp\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/inkdrop.net\/dave\/docs\/neural-net-tutorial.cpp<\/a> (with *nix line endings)<\/li>\n<li><a title=\"neural-net-tutorial.cpp\" href=\"http:\/\/inkdrop.net\/dave\/docs\/neural-net-tutorial-W.cpp\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/inkdrop.net\/dave\/docs\/neural-net-tutorial-W.cpp<\/a> (with DOS line endings)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Released today! Our newest video programming tutorial, A Neural Net Simulator in C++, is now available for your viewing pleasure at the following link: [ Update for 2013: Also see the new companion video for visualizations of how neural nets work and how to train them: The Care and Training of Your Backpropagation Neural Net.&nbsp; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,12],"tags":[10,7,8,11,6,9],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-cpp","category-tutorials","tag-back-propagation","tag-c","tag-neural-net","tag-object-oriented","tag-programming","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=54"}],"version-history":[{"count":15,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":373,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=\/wp\/v2\/posts\/54\/revisions\/373"}],"wp:attachment":[{"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/millermattson.com\/dave\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}