{"id":13935127,"url":"https://github.com/mdda/deep-learning-workshop","last_synced_at":"2025-12-27T05:19:28.177Z","repository":{"id":138389545,"uuid":"51244719","full_name":"mdda/deep-learning-workshop","owner":"mdda","description":"Deep Learning Workshop : Including a VirtualBox VM with pre-configured Jupyter, Tensorflow, PyTorch, models and data","archived":false,"fork":false,"pushed_at":"2019-07-06T16:18:47.000Z","size":18731,"stargazers_count":474,"open_issues_count":3,"forks_count":120,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-07-19T21:55:27.363Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-02-07T11:08:32.000Z","updated_at":"2025-07-07T07:05:06.000Z","dependencies_parsed_at":"2023-04-30T11:00:25.002Z","dependency_job_id":null,"html_url":"https://github.com/mdda/deep-learning-workshop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mdda/deep-learning-workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fdeep-learning-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fdeep-learning-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fdeep-learning-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fdeep-learning-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdda","download_url":"https://codeload.github.com/mdda/deep-learning-workshop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdda%2Fdeep-learning-workshop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28072870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-07T23:01:24.658Z","updated_at":"2025-12-27T05:19:28.172Z","avatar_url":"https://github.com/mdda.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"## Deep Learning Workshop\n\nThis repo includes all scripts required to build a VirtualBox 'Appliance' (an easy-to-install pre-configured VM) \nthat can be used by Deep Learning Workshop participants.\n\nThis workshop consists of an introduction to deep learning (from single layer networks-in-the-browser, \nthen using the VM/Jupyter setup to train networks using both Theano (+Lasagne for model components) and Tensorflow (+some sugar layers).\nThe modules also include pretrained state-of-the-art networks, such as GoogLeNet, in various applications) :\n\n* [FOSSASIA 2016](http://2016.fossasia.org/) : Deep Learning Workshop (2 hours)\n  *  Application : Generative art (~style transfer)\n  *  Application : Classifying unknown classes of images (~transfer learning)\n  *  Slides for the talk are [here](http://redcatlabs.com/2016-03-19_FOSSASIA-Workshop/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2016/03/19/workshop-at-fossasia-2016)\n\n* [PyCon-SG 2016](https://pycon.sg/schedule/presentation/94/) : Deep Learning Workshop (1.5 hours)\n  *  Unfortunately, due to 'demand' for speaker slots, PyCon has only scheduled 1h30 for the workshop, rather than the 3h00 they originally suggested...\n  *  Application : Reinforcement Learning\n  *  Slides for the talk are [here](http://redcatlabs.com/2016-06-23_PyConSG-Workshop/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2016/06/23/workshop-at-pycon-sg-2016), which includes a video link\n\n* [DataScienceSG MeetUp](http://www.meetup.com/DataScience-SG-Singapore/) : 'Hardcore' session about Deep Learning (2.5 hours)\n  *  Application : Anomaly Detection (mis-shaped MNIST digits)\n  *  Application : Classifying unknown classes of images (~transfer learning)\n  *  Slides for the talk are [here](http://redcatlabs.com/2016-07-23_DataScienceSG-DeepLearning-Workshop/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2016/07/23/datascience-sg-workshop), which includes a video link\n\n* [Fifth Elephant, India](https://fifthelephant.in/2016/) : Deep Learning Workshop (6 hours : 4x 1.5hr classes in one day)\n  *  Application : Classifying unknown classes of images (~transfer learning)\n  *  Application : Generative art (~style transfer)\n  *  Application : RNN Tagger\n  *  Application : RNN Fun (work-in-progress)\n  *  Application : Anomaly Detection (mis-shaped MNIST digits)\n  *  Application : Reinforcement Learning\n  *  Slides for the talk are [here](http://redcatlabs.com/2016-07-30_FifthElephant-DeepLearning-Workshop/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2016/07/30/workshop-at-fifth-elephant-2016)\n\n* [PyDataSG MeetUp](https://www.meetup.com/PyData-SG/events/235981761/) : Talk on RNNs and NLP (1.5 hours)\n  *  Application : RNN Tagger (cleaned up a little)\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-01-23_PyDataSG_RNNs-for-NLP/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/01/23/presentation-at-pydata), which includes a video link\n\n* [TensorFlow \u0026amp; Deep Learning MeetUp](https://www.meetup.com/TensorFlow-and-Deep-Learning-Singapore/events/237032130/) : Talk on transfer learning (0.5 hours)\n  *  Application : Classifying unknown classes of images (~transfer learning)  *in TensorFlow*\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-02-16_TFandDL_TransferLearning/#/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/02/16/presentation-at-tensorflow), which includes a video link\n\n* [FOSSASIA 2017](http://2017.fossasia.org/) : Deep Learning Workshop (1 hour)\n  *  Application : Speech Recognition using a CNN\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-03-18_FOSSASIA-Workshop/#/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/03/18/presentation-at-FOSSASIA), which includes a video link\n\n* [TensorFlow \u0026amp; Deep Learning MeetUp](https://www.meetup.com/TensorFlow-and-Deep-Learning-Singapore/events/237860964/) : Talk on CNNs (0.5 hours)\n  *  Application : Speech Recognition using a CNN (non-workshop version)\n  *  Slides for the talk are [here]((http://redcatlabs.com/2017-03-20_TFandDL_IntroToCNNs/#/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/03/20/presentation-at-tensorflow), which includes a video link\n\n* [TensorFlow \u0026amp; Deep Learning MeetUp](https://www.meetup.com/TensorFlow-and-Deep-Learning-Singapore/events/238584480/) : Generative Art : Style-Transfer (0.5 hours)\n  *  Application : Generative Art (Style-Transfer)\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-04-13_TFandDL_ArtStyleTransfer/#/)\n\n* [APAC Machine Learning \u0026amp; Data Science Community Summit](http://m.onoffmix.com/event/97444/content) : In the news : AlphaGo and Reinforcement Learning (0.75 hours)\n  *  Application : Bubble-Breaker in TensorFlow / Keras\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-05-20_APAC-Summit/)\n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/05/20/presentation-in-korea)\n\n* [TensorFlow \u0026amp; Deep Learning MeetUp](https://www.meetup.com/TensorFlow-and-Deep-Learning-Singapore/events/239252636/) : Text : Embeddings, RNNs and NER (~1 hour)\n  *  Application : BiDirectional RNNs for Case-Insensitive NER\n  *  Slides for the talk (including a more general introduction to NLP) are [here](http://redcatlabs.com/2017-05-25_TFandDL_TextAndRNNs/#/)\n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/05/25/presentation-at-tensorflow), which includes a video link\n\n* [TensorFlow \u0026amp; Deep Learning MeetUp](https://www.meetup.com/TensorFlow-and-Deep-Learning-Singapore/events/240386386/) : Advanced Text and Language (0.75 hours)\n  *  Application : Image Captioning (Flickr30k)\n  *  Slides for the talk are [here](http://redcatlabs.com/2017-06-22_TFandDL_Captioning/#/)\n     with an accompanying [blog post](http://blog.mdda.net/ai/2017/06/22/presentation-at-tensorflow), which includes a video link\n\n\n\n\n\n* [FOSSASIA 2018](http://2018.fossasia.org/) : Deep Learning Workshop (1 hour)\n  *  Application : OpenAI's meta-learning \"Reptile\" sines demo\n  *  Slides for the talk are [here](http://redcatlabs.com/2018-03-25_FOSSASIA-Workshop/#/), \n     with an accompanying [blog post](http://blog.mdda.net/ai/2018/03/25/presentation-at-FOSSASIA), which includes a video link\n\n\n**NB : Ensure Conference Workshop announcement / blurb includes VirtualBox warning label**\n\n*  Also : for the Art (and potentially other image-focussed) modules, having a few 'personal' images available might be entertaining *\n\n\nThe VM itself includes : \n\n* Jupyter (iPython's successor)\n  * Running as a server available to the host machine's browser\n* Data\n  * MNIST training and test sets\n  * Trained models from two of the 'big' ImageNet winners\n  * Test Images for both recognition, 'e-commerce' and style-transfer modules\n  * Corpuses and pretrained GloVe for the language examples\n  * Locally-runnable versions of a CNN demonstrator, and OpenAI's '3-boxes' Reptile demo\n* Tool chain(s) (Python-oriented)\n  * \u003cstrike\u003eTheano / Lasagne\u003c/strike\u003e\n  * Tensorflow and Keras \n  * PyTorch (CPU version)\n\nAnd this repo can itself be run in 'local mode', using scripts in ```./local/``` to :\n\n*  Set up the virtual environment correctly\n*  Run ```jupyter``` with the right flags, paths etc\n\n\n### Status : Workshop WORKS!\n\n#### Currently working well\n\n*  Scripts to create working Fedora 25 installation inside VM\n   *  Has working ```Python3.x``` ```virtualenv``` with ```Jupyter``` and ```TensorFlow / TensorBoard```\n*  Script to transform the VM into a VirtualBox appliance\n   *  Exposing ```Jupyter```, ```TensorBoard``` and ```ssh``` to host machine\n\n*  Locally hosted Convnet.js for :\n   *  Demonstration of gradient descent ('painting')\n\n*  Locally hosted TensorFlow Playground  for :\n   *  Visualising hidden layer, and effect of features, etc\n\n*  Locally hosted cnn demo for :\n   *  Demonstration of how a single CNN 3x3 filter works\n\n\n*  Existing workshop notebooks :\n   *  Basics \n   *  MNIST\n   *  MNIST CNN\n   *  ImageNet : GoogLeNet\n   *  ImageNet : Inception 3\n   *  CNN for simple Voice Recognition\n   *  'Anomaly Detection' - identifying mis-shaped MNIST digits\n   *  'Commerce' - repurpose a trained network to classify our stuff\n   *  'Art' - Style transfer with Lasagne, but using GoogLeNet features for speed\n   *  'Reinforcement Learning' - learning to play \"Bubble Breaker\" \n   *  'RNN-Tagger' - Processing text, and learning to do case-less Named Entity Recognition\n\n*  Notebook Extras\n   *  U - VM Upgrade tool\n   *  X - BLAS configuration fiddle tool\n   *  Z - GPU chooser (needs Python's ```BeautifulSoup```)\n\n*  Create rsync-able image containing :\n   *  VirtualBox appliance image\n      +  including data sets and pre-trained models\n   *  VirtualBox binaries for several likely platforms\n   *  Write to thumb-drives for actual workshop\n      *  and/or upload to DropBox\n\n*  Workshop presentation materials\n\n\n#### Still Work-in-Progress \n\n*  Create sync-to-latest-workbooks script to update existing (taken-home) VMs\n\n*  Create additional 'applications' modules (see 'ideas.md')\n\n*  Monitor TensorBoard - to see whether it reduces its memory footprint enough to switch from Theano...\n   \n*  'RNN-Fun' - Discriminative and Generative RNNs\n   \n\n### Notes\n\n#### Running the environment locally\n\nSee the [local/README file](./local/README.md).\n\nAlso worth investigating : [Google Colab](https://colab.research.google.com/), which\nallows the Free (as in Beer) use of a K40 GPU in a Jupyter-notebook-like interface.  In fact,\nthere is also the possibility of pulling up GitHub-based notebooks directly using the\nurl :\n\n```\nhttps://colab.research.google.com/github/USER/REPO/blob/master/NOTEBOOK\n```  \n\nFor a concrete example, look at this link to [the recent revamped Reptile code from OpenAI](https://colab.research.google.com/github/mdda/deep-learning-workshop/blob/master/notebooks/8-MetaLearning/2-Reptile-Sines.ipynb) that\nis in the MetaLearning folder of this repo.\n\n\n\n\n#### Git-friendly iPython Notebooks\n\nUsing the code from : http://pascalbugnion.net/blog/ipython-notebooks-and-git.html (and\nhttps://gist.github.com/pbugnion/ea2797393033b54674af ), \nyou can enable this kind of feature just on one repository, \nrather than installing it globally, as follows...\n\nWithin the repository, run : \n```\n# Set the permissions for execution :\nchmod 754 ./bin/ipynb_optional_output_filter.py\n\ngit config filter.dropoutput_ipynb.smudge cat\ngit config filter.dropoutput_ipynb.clean ./bin/ipynb_optional_output_filter.py\n```\nthis will add suitable entries to ``./.git/config``.\n\nor, alternatively, create the entries manually by ensuring that your ``.git/config`` includes the lines :\n```\n[filter \"dropoutput_ipynb\"]\n\tsmudge = cat\n\tclean = ./bin/ipynb_output_filter.py\n```\n\nNote also that this repo includes a ``\u003cREPO\u003e/.gitattributes`` file containing the following:\n```\n*.ipynb    filter=dropoutput_ipynb\n```\n\nDoing this causes git to run ``ipynb_optional_output_filter.py`` in the ``REPO/bin`` directory, \nwhich only uses ``import json`` to parse the notebook files (and so can be executed as a plain script).  \n\nTo disable the output-cleansing feature in a notebook (to disable the cleansing on a per-notebook basis), \nsimply add to its metadata (Edit-Metadata) as a first-level entry (``true`` is the default): \n\n```\n  \"git\" : { \"suppress_outputs\" : false },\n```\n\n#### Git-friendly iPython Notebooks (Looks promising, but...)\n\n[nbstripout](https://github.com/kynan/nbstripout) seems to do what we want, and can be installed more easily.\n\nWithin the local python environment (or do this globally, as root, if you're committed) :\n\n```\npip install nbstripout\n````\n\n\n\n\n### Useful resources\n\n* [MathJax](http://nbviewer.ipython.org/github/olgabot/ipython/blob/master/examples/Notebook/Typesetting%20Math%20Using%20MathJax.ipynb)\n* [Bokeh](http://bokeh.pydata.org/en/latest/docs/quickstart.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdda%2Fdeep-learning-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdda%2Fdeep-learning-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdda%2Fdeep-learning-workshop/lists"}