Path: blob/master/notebooks/book1/08/sgd_comparison.ipynb
1193 views
Kernel: Python [conda env:py37]
🧪 Optimization-Toolkit (Github)
Use this Colab to develop and compare optimizers and models across a variety of datasets.
It contains optimizers like Adam, SLS, AdaSLS, SPS and LBFGS that could be ran on standard datastets like MNIST.
Run your first set of experiments with these 4 steps,
🥕 Install and Import Required Libraries
🤓 Create Datasets, Models, and Optimizers
🎨 Define list of experiments
🧠 Train and Validate
📊 Visualize the results
You can run and visualize other large-scale experiments from this Github Repo. Original Colab link.
🌐 Credits
Authors:
Issam H. Laradji [email protected]
Sharan Vaswani [email protected]
Kevin Murphy [email protected]
License:
Apache License 2.0
0. Install and import required libraries
In [1]:
Out[1]:
Building wheel for sls (setup.py) ... done
Building wheel for sps (setup.py) ... done
Building wheel for adasls (setup.py) ... done
Collecting haven
Downloading haven-2.0.3.tar.gz (8.2 kB)
Collecting events
Downloading Events-0.4.tar.gz (5.6 kB)
Collecting netkit
Downloading netkit-3.1.10.tar.gz (7.7 kB)
Collecting setproctitle
Downloading setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29 kB)
Collecting gevent
Downloading gevent-21.12.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (5.8 MB)
|████████████████████████████████| 5.8 MB 12.4 MB/s
Collecting gevent-websocket
Downloading gevent_websocket-0.10.1-py3-none-any.whl (22 kB)
Collecting zope.interface
Downloading zope.interface-5.4.0-cp37-cp37m-manylinux2010_x86_64.whl (251 kB)
|████████████████████████████████| 251 kB 79.5 MB/s
Collecting zope.event
Downloading zope.event-4.5.0-py2.py3-none-any.whl (6.8 kB)
Requirement already satisfied: greenlet<2.0,>=1.1.0 in /usr/local/lib/python3.7/dist-packages (from gevent->haven) (1.1.2)
Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from gevent->haven) (57.4.0)
Building wheels for collected packages: haven, events, netkit
Building wheel for haven (setup.py) ... done
Created wheel for haven: filename=haven-2.0.3-py3-none-any.whl size=12186 sha256=2d0b0e7ba58b5939ecc13ac98b0a422c2049b729e75f63f54fb8ab950b702ba9
Stored in directory: /root/.cache/pip/wheels/4a/1f/e5/22426f9f21f48807575a7863a11941066699ad8e405f3f8620
Building wheel for events (setup.py) ... done
Created wheel for events: filename=Events-0.4-py3-none-any.whl size=6275 sha256=e9ffdfaab125824786f45ebc71bf2b5e136514ed4530265387bc5d7e1f4c657e
Stored in directory: /root/.cache/pip/wheels/7c/b6/4b/59a8b92c2ad6bb5807a6bba36032f2a21fb57a4cf6772f9982
Building wheel for netkit (setup.py) ... done
Created wheel for netkit: filename=netkit-3.1.10-py3-none-any.whl size=9452 sha256=081cbce5c096b7577c49176e184c59f8e0f9415bcf41ab23201de112e83f03ac
Stored in directory: /root/.cache/pip/wheels/22/bd/09/22dab0d39f8891d41c60678b5425a5b7a98bdc9113d4b1c69b
Successfully built haven events netkit
Installing collected packages: zope.interface, zope.event, gevent, setproctitle, netkit, gevent-websocket, events, haven
Successfully installed events-0.4 gevent-21.12.0 gevent-websocket-0.10.1 haven-2.0.3 netkit-3.1.10 setproctitle-1.2.3 zope.event-4.5.0 zope.interface-5.4.0
Collecting haven-ai
Downloading haven_ai-0.6.7-py3-none-any.whl (92 kB)
|████████████████████████████████| 92 kB 1.0 MB/s
Requirement already satisfied: ipywidgets>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (7.7.0)
Requirement already satisfied: torch>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.11.0+cu113)
Requirement already satisfied: jupyter>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.0.0)
Requirement already satisfied: pandas>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.3.5)
Requirement already satisfied: scikit-learn>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.0.2)
Requirement already satisfied: tqdm>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (4.64.0)
Requirement already satisfied: scikit-image>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (0.18.3)
Requirement already satisfied: scipy>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.4.1)
Requirement already satisfied: requests>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (2.23.0)
Requirement already satisfied: notebook>=4.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (5.3.1)
Requirement already satisfied: torchvision>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (0.12.0+cu113)
Collecting opencv-python-headless>=0.0
Downloading opencv_python_headless-4.5.5.64-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (47.8 MB)
|████████████████████████████████| 47.8 MB 55 kB/s
Requirement already satisfied: numpy>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (1.21.6)
Requirement already satisfied: sklearn>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (0.0)
Requirement already satisfied: matplotlib>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (3.2.2)
Requirement already satisfied: Pillow>=0.0 in /usr/local/lib/python3.7/dist-packages (from haven-ai) (7.1.2)
Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (5.1.1)
Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (1.1.0)
Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (4.10.1)
Requirement already satisfied: nbformat>=4.2.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (5.3.0)
Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (5.5.0)
Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (0.2.0)
Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=0.0->haven-ai) (3.6.0)
Requirement already satisfied: jupyter-client in /usr/local/lib/python3.7/dist-packages (from ipykernel>=4.5.1->ipywidgets>=0.0->haven-ai) (5.3.5)
Requirement already satisfied: tornado>=4.0 in /usr/local/lib/python3.7/dist-packages (from ipykernel>=4.5.1->ipywidgets>=0.0->haven-ai) (5.1.1)
Requirement already satisfied: pygments in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (2.6.1)
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (57.4.0)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (0.7.5)
Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (1.0.18)
Requirement already satisfied: pexpect in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (4.8.0)
Requirement already satisfied: decorator in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (4.4.2)
Requirement already satisfied: simplegeneric>0.8 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (0.8.1)
Requirement already satisfied: jupyter-console in /usr/local/lib/python3.7/dist-packages (from jupyter>=0.0->haven-ai) (5.2.0)
Requirement already satisfied: qtconsole in /usr/local/lib/python3.7/dist-packages (from jupyter>=0.0->haven-ai) (5.3.0)
Requirement already satisfied: nbconvert in /usr/local/lib/python3.7/dist-packages (from jupyter>=0.0->haven-ai) (5.6.1)
Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=0.0->haven-ai) (2.8.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=0.0->haven-ai) (1.4.2)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=0.0->haven-ai) (3.0.8)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=0.0->haven-ai) (0.11.0)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from kiwisolver>=1.0.1->matplotlib>=0.0->haven-ai) (4.2.0)
Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.7/dist-packages (from nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (4.3.3)
Requirement already satisfied: jupyter-core in /usr/local/lib/python3.7/dist-packages (from nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (4.10.0)
Requirement already satisfied: fastjsonschema in /usr/local/lib/python3.7/dist-packages (from nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (2.15.3)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (0.18.1)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (21.4.0)
Requirement already satisfied: importlib-resources>=1.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (5.7.1)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (4.11.3)
Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.7/dist-packages (from importlib-resources>=1.4.0->jsonschema>=2.6->nbformat>=4.2.0->ipywidgets>=0.0->haven-ai) (3.8.0)
Requirement already satisfied: terminado>=0.8.1 in /usr/local/lib/python3.7/dist-packages (from notebook>=4.0->haven-ai) (0.13.3)
Requirement already satisfied: Send2Trash in /usr/local/lib/python3.7/dist-packages (from notebook>=4.0->haven-ai) (1.8.0)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.7/dist-packages (from notebook>=4.0->haven-ai) (2.11.3)
Requirement already satisfied: pyzmq>=13 in /usr/local/lib/python3.7/dist-packages (from jupyter-client->ipykernel>=4.5.1->ipywidgets>=0.0->haven-ai) (22.3.0)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.0->haven-ai) (2022.1)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.7/dist-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (0.2.5)
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.7/dist-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0->ipywidgets>=0.0->haven-ai) (1.15.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=0.0->haven-ai) (2021.10.8)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests>=0.0->haven-ai) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=0.0->haven-ai) (1.24.3)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=0.0->haven-ai) (2.10)
Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.0->haven-ai) (2021.11.2)
Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.0->haven-ai) (2.6.3)
Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.0->haven-ai) (2.4.1)
Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.0->haven-ai) (1.3.0)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.0->haven-ai) (3.1.0)
Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.0->haven-ai) (1.1.0)
Requirement already satisfied: ptyprocess in /usr/local/lib/python3.7/dist-packages (from terminado>=0.8.1->notebook>=4.0->haven-ai) (0.7.0)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from jinja2->notebook>=4.0->haven-ai) (2.0.1)
Requirement already satisfied: defusedxml in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (0.7.1)
Requirement already satisfied: testpath in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (0.6.0)
Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (0.8.4)
Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (1.5.0)
Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (0.4)
Requirement already satisfied: bleach in /usr/local/lib/python3.7/dist-packages (from nbconvert->jupyter>=0.0->haven-ai) (5.0.0)
Requirement already satisfied: webencodings in /usr/local/lib/python3.7/dist-packages (from bleach->nbconvert->jupyter>=0.0->haven-ai) (0.5.1)
Requirement already satisfied: qtpy>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from qtconsole->jupyter>=0.0->haven-ai) (2.1.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from qtpy>=2.0.1->qtconsole->jupyter>=0.0->haven-ai) (21.3)
Installing collected packages: opencv-python-headless, haven-ai
Successfully installed haven-ai-0.6.7 opencv-python-headless-4.5.5.64
1) 🤓 Create datasets, models, and optimizers
Add your dataset in
get_dataset()
Add your model in
get_model()
Add your optimizer in
get_optimizer()
In [2]:
2) 🎨 Define list of experiments
In [3]:
Out[3]:
Defined 10 experiments
3) 🧠 Train and Validate
In [4]:
Out[4]:
0%| | 0/10 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: adasls (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: adasls (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: lbfgs (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: lbfgs (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: adam (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: adam (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: sps (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: sps (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: sls (120)
0%| | 0/20 [00:00<?, ?it/s]
Dataset: iris (120) - Model: mlp - Opt: sls (120)
0%| | 0/20 [00:00<?, ?it/s]
4) 📊 Visualize results
In [5]:
Out[5]:
Warning: Total number of columns (26) exceeds max_columns (20) limiting to first (20) columns.
🔨 Debug Section
In [ ]:
468.75
In [ ]:
7.8125
In [ ]:
156.0
In [ ]:
{1: 2}
{3: 4}