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)
PyCon-SG 2016 : Deep Learning Workshop (1.5 hours)
DataScienceSG MeetUp : 'Hardcore' session about Deep Learning (2.5 hours)
Fifth Elephant, India : Deep Learning Workshop (6 hours : 4x 1.5hr classes in one day)
PyDataSG MeetUp : Talk on RNNs and NLP (1.5 hours)
TensorFlow & Deep Learning MeetUp : Talk on transfer learning (0.5 hours)
FOSSASIA 2017 : Deep Learning Workshop (1 hour)
TensorFlow & Deep Learning MeetUp : Talk on CNNs (0.5 hours)
TensorFlow & Deep Learning MeetUp : Generative Art : Style-Transfer (0.5 hours)
APAC Machine Learning & Data Science Community Summit : In the news : AlphaGo and Reinforcement Learning (0.75 hours)
TensorFlow & Deep Learning MeetUp : Text : Embeddings, RNNs and NER (~1 hour)
TensorFlow & Deep Learning MeetUp : Advanced Text and Language (0.75 hours)
FOSSASIA 2018 : Deep Learning Workshop (1 hour)
NB : Ensure Conference Workshop announcement / blurb includes VirtualBox warning label
The VM itself includes :
And this repo can itself be run in 'local mode', using scripts in ./local/
to :
jupyter
with the right flags, paths etcScripts to create working Fedora 25 installation inside VM
Python3.x
virtualenv
with Jupyter
and TensorFlow / TensorBoard
Script to transform the VM into a VirtualBox appliance
Jupyter
, TensorBoard
and ssh
to host machineLocally hosted Convnet.js for :
Locally hosted TensorFlow Playground for :
Locally hosted cnn demo for :
Existing workshop notebooks :
Notebook Extras
BeautifulSoup
)Create rsync-able image containing :
Workshop presentation materials
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
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.
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 },
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