• Stars
    star
    470
  • Rank 93,399 (Top 2 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Deep Learning Workshop : Including a VirtualBox VM with pre-configured Jupyter, Tensorflow, PyTorch, models and data

Deep Learning Workshop

This repo includes all scripts required to build a VirtualBox 'Appliance' (an easy-to-install pre-configured VM) that can be used by Deep Learning Workshop participants.

This workshop consists of an introduction to deep learning (from single layer networks-in-the-browser, then using the VM/Jupyter setup to train networks using both Theano (+Lasagne for model components) and Tensorflow (+some sugar layers). The modules also include pretrained state-of-the-art networks, such as GoogLeNet, in various applications) :

  • FOSSASIA 2016 : Deep Learning Workshop (2 hours)

    • Application : Generative art (~style transfer)
    • Application : Classifying unknown classes of images (~transfer learning)
    • Slides for the talk are here, with an accompanying blog post
  • PyCon-SG 2016 : Deep Learning Workshop (1.5 hours)

    • Unfortunately, due to 'demand' for speaker slots, PyCon has only scheduled 1h30 for the workshop, rather than the 3h00 they originally suggested...
    • Application : Reinforcement Learning
    • Slides for the talk are here, with an accompanying blog post, which includes a video link
  • DataScienceSG MeetUp : 'Hardcore' session about Deep Learning (2.5 hours)

    • Application : Anomaly Detection (mis-shaped MNIST digits)
    • Application : Classifying unknown classes of images (~transfer learning)
    • Slides for the talk are here, with an accompanying blog post, which includes a video link
  • Fifth Elephant, India : Deep Learning Workshop (6 hours : 4x 1.5hr classes in one day)

    • Application : Classifying unknown classes of images (~transfer learning)
    • Application : Generative art (~style transfer)
    • Application : RNN Tagger
    • Application : RNN Fun (work-in-progress)
    • Application : Anomaly Detection (mis-shaped MNIST digits)
    • Application : Reinforcement Learning
    • Slides for the talk are here, with an accompanying blog post
  • PyDataSG MeetUp : Talk on RNNs and NLP (1.5 hours)

    • Application : RNN Tagger (cleaned up a little)
    • Slides for the talk are here, with an accompanying blog post, which includes a video link
  • TensorFlow & Deep Learning MeetUp : Talk on transfer learning (0.5 hours)

    • Application : Classifying unknown classes of images (~transfer learning) in TensorFlow
    • Slides for the talk are here, with an accompanying blog post, which includes a video link
  • FOSSASIA 2017 : Deep Learning Workshop (1 hour)

    • Application : Speech Recognition using a CNN
    • Slides for the talk are here, with an accompanying blog post, which includes a video link
  • TensorFlow & Deep Learning MeetUp : Talk on CNNs (0.5 hours)

  • TensorFlow & Deep Learning MeetUp : Generative Art : Style-Transfer (0.5 hours)

    • Application : Generative Art (Style-Transfer)
    • Slides for the talk are here
  • APAC Machine Learning & Data Science Community Summit : In the news : AlphaGo and Reinforcement Learning (0.75 hours)

    • Application : Bubble-Breaker in TensorFlow / Keras
    • Slides for the talk are here with an accompanying blog post
  • TensorFlow & Deep Learning MeetUp : Text : Embeddings, RNNs and NER (~1 hour)

    • Application : BiDirectional RNNs for Case-Insensitive NER
    • Slides for the talk (including a more general introduction to NLP) are here with an accompanying blog post, which includes a video link
  • TensorFlow & Deep Learning MeetUp : Advanced Text and Language (0.75 hours)

    • Application : Image Captioning (Flickr30k)
    • Slides for the talk are here with an accompanying blog post, which includes a video link
  • FOSSASIA 2018 : Deep Learning Workshop (1 hour)

    • Application : OpenAI's meta-learning "Reptile" sines demo
    • Slides for the talk are here, with an accompanying blog post, which includes a video link

NB : Ensure Conference Workshop announcement / blurb includes VirtualBox warning label

  • Also : for the Art (and potentially other image-focussed) modules, having a few 'personal' images available might be entertaining *

The VM itself includes :

  • Jupyter (iPython's successor)
    • Running as a server available to the host machine's browser
  • Data
    • MNIST training and test sets
    • Trained models from two of the 'big' ImageNet winners
    • Test Images for both recognition, 'e-commerce' and style-transfer modules
    • Corpuses and pretrained GloVe for the language examples
    • Locally-runnable versions of a CNN demonstrator, and OpenAI's '3-boxes' Reptile demo
  • Tool chain(s) (Python-oriented)
    • Theano / Lasagne
    • Tensorflow and Keras
    • PyTorch (CPU version)

And this repo can itself be run in 'local mode', using scripts in ./local/ to :

  • Set up the virtual environment correctly
  • Run jupyter with the right flags, paths etc

Status : Workshop WORKS!

Currently working well

  • Scripts to create working Fedora 25 installation inside VM

    • Has working Python3.x virtualenv with Jupyter and TensorFlow / TensorBoard
  • Script to transform the VM into a VirtualBox appliance

    • Exposing Jupyter, TensorBoard and ssh to host machine
  • Locally hosted Convnet.js for :

    • Demonstration of gradient descent ('painting')
  • Locally hosted TensorFlow Playground for :

    • Visualising hidden layer, and effect of features, etc
  • Locally hosted cnn demo for :

    • Demonstration of how a single CNN 3x3 filter works
  • Existing workshop notebooks :

    • Basics
    • MNIST
    • MNIST CNN
    • ImageNet : GoogLeNet
    • ImageNet : Inception 3
    • CNN for simple Voice Recognition
    • 'Anomaly Detection' - identifying mis-shaped MNIST digits
    • 'Commerce' - repurpose a trained network to classify our stuff
    • 'Art' - Style transfer with Lasagne, but using GoogLeNet features for speed
    • 'Reinforcement Learning' - learning to play "Bubble Breaker"
    • 'RNN-Tagger' - Processing text, and learning to do case-less Named Entity Recognition
  • Notebook Extras

    • U - VM Upgrade tool
    • X - BLAS configuration fiddle tool
    • Z - GPU chooser (needs Python's BeautifulSoup)
  • Create rsync-able image containing :

    • VirtualBox appliance image
      • including data sets and pre-trained models
    • VirtualBox binaries for several likely platforms
    • Write to thumb-drives for actual workshop
      • and/or upload to DropBox
  • Workshop presentation materials

Still Work-in-Progress

  • Create sync-to-latest-workbooks script to update existing (taken-home) VMs

  • Create additional 'applications' modules (see 'ideas.md')

  • Monitor TensorBoard - to see whether it reduces its memory footprint enough to switch from Theano...

  • 'RNN-Fun' - Discriminative and Generative RNNs

Notes

Running the environment locally

See the local/README file.

Also worth investigating : Google Colab, which allows the Free (as in Beer) use of a K40 GPU in a Jupyter-notebook-like interface. In fact, there is also the possibility of pulling up GitHub-based notebooks directly using the url :

https://colab.research.google.com/github/USER/REPO/blob/master/NOTEBOOK

For a concrete example, look at this link to the recent revamped Reptile code from OpenAI that is in the MetaLearning folder of this repo.

Git-friendly iPython Notebooks

Using the code from : http://pascalbugnion.net/blog/ipython-notebooks-and-git.html (and https://gist.github.com/pbugnion/ea2797393033b54674af ), you can enable this kind of feature just on one repository, rather than installing it globally, as follows...

Within the repository, run :

# Set the permissions for execution :
chmod 754 ./bin/ipynb_optional_output_filter.py

git config filter.dropoutput_ipynb.smudge cat
git config filter.dropoutput_ipynb.clean ./bin/ipynb_optional_output_filter.py

this will add suitable entries to ./.git/config.

or, alternatively, create the entries manually by ensuring that your .git/config includes the lines :

[filter "dropoutput_ipynb"]
	smudge = cat
	clean = ./bin/ipynb_output_filter.py

Note also that this repo includes a <REPO>/.gitattributes file containing the following:

*.ipynb    filter=dropoutput_ipynb

Doing this causes git to run ipynb_optional_output_filter.py in the REPO/bin directory, which only uses import json to parse the notebook files (and so can be executed as a plain script).

To disable the output-cleansing feature in a notebook (to disable the cleansing on a per-notebook basis), simply add to its metadata (Edit-Metadata) as a first-level entry (true is the default):

  "git" : { "suppress_outputs" : false },

Git-friendly iPython Notebooks (Looks promising, but...)

nbstripout seems to do what we want, and can be installed more easily.

Within the local python environment (or do this globally, as root, if you're committed) :

pip install nbstripout

Useful resources

More Repositories

1

pycon.sg-2015_deep-learning

2015 PyCon (SG) Presentation :: 2016 version is 'deep-learning-workshop'
Jupyter Notebook
46
star
2

vim-plugin-python

Template for vim plugins written in Python3 - from candidtim's Blog Post
Python
27
star
3

cnn-speech-mnist

Demonstration of Speech MNIST using a CNN
Jupyter Notebook
18
star
4

colab_helper

Utility files to help set up colab for experimentation + development
Python
13
star
5

DiamondJAX

Repository of useful 'stuff' for the MineRL BASALT Challenge
11
star
6

ConciseGreedyDependencyParser-in-Scala

Concise Greedy Dependency Parser in Scala
Python
9
star
7

worldtree_corpus

Worldtree Corpus helper files, and sample solutions
Python
8
star
8

DelaunayScala

Delaunay Triangulation in (hopefully) idiomatic Scala : single file, efficient
Scala
7
star
9

procmail.js

NodeJS email auto-responder, with notes
JavaScript
6
star
10

geany-project-tree

GeanyPy plugin for Geany that implements a "Project-Tree" view that make Geany more IDE-like (IMHO)
Python
6
star
11

rl-bubble-breaker

Reinforcement Learning of Bubble Breaker in TF/Keras and Theano/Lasagne
Python
5
star
12

relationships-from-entity-stream

Research presented at the NIPs 2017 ViGiL Workshop.
Shell
5
star
13

EEG-Theano

Code for Kaggle competition (incomplete)
Python
5
star
14

rackspace-dns-sync

Define your DNS setup in Python, and sync only the changes with Rackspace (for speed)
Python
4
star
15

mdda.github.io

Blog based on jekyll-bootstrap-3 with dbyll theme as base
TeX
4
star
16

compressing-word-embeddings

ICONIP-2016 Paper : Compressing Word Embeddings
Jupyter Notebook
4
star
17

corenlp-java-server

Simple Java REST API wrapper for the Stanford CoreNLP parser
Java
4
star
18

hackathon-starter-flask-plus

Hackathon starter pack: Flask (with Bootstrap and Jade, easy auth) backend, data munging tools, HTML5 mobile
Python
4
star
19

usb-scope

Oscilloscope GUI for the Pololu USB Programmer
C++
3
star
20

nodebots-sg-2015

International Nodebots Day in Singapore (2015)
C++
3
star
21

vim-project-tree

geany project-tree for vim (as a python3 plugin)
Python
3
star
22

Reverse-GoL

This is my Kaggle entry for "Reverse Game-of-Life" using Genetic Algorithms and GoLang
Go
3
star
23

eeedora

A Fedora distribution optimized for the Asus Eee PC
Shell
2
star
24

billion-placeholder

Placeholder while working on Kaggle HowTo
Python
1
star
25

berkeley-entity-server

Simple Java REST API wrapper for the Berkeley Entity Resolution System
Scala
1
star
26

2014-07_Singapore-Maritime-Hackathon

Now moved on to plain 'hackathon' instead
Python
1
star
27

vscode-project-tree

Project-Tree extension for VS.code
TypeScript
1
star
28

wp-templatize

Wordpress Plugin to enable Wordpress themes to be used as HTML/mako templates
PHP
1
star
29

sqlalchemy-migrate-pylons

Simple script to migrate SQLalchemy databases used by Pylons
Python
1
star