diff --git a/app.py b/app.py new file mode 100644 index 0000000..ecacc9d --- /dev/null +++ b/app.py @@ -0,0 +1,15 @@ +from flask import Flask + +app = Flask(__name__) + +@app.route("/demo/") +def hello_world(): + import subprocess + subprocess.check_output("python3 demo.py", shell=1) + return "
Hello, World!
" + +@app.route("/") +def hello_world1(): + return "OK!
" +if __name__ == '__main__': + app.run(debug=True, port=8080, host="0.0.0.0") diff --git a/demo.py b/demo.py new file mode 100644 index 0000000..5c9d5d4 --- /dev/null +++ b/demo.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# coding: utf-8 + +# In[1]: + + +from fromscratchtoml.neural_network.models import Sequential +from fromscratchtoml.neural_network.optimizers import StochasticGradientDescent +from fromscratchtoml.neural_network.layers import Dense, Activation + + +import numpy as np +from sklearn.model_selection import train_test_split + +from fromscratchtoml.toolbox.random import Distribution +from fromscratchtoml.toolbox.preprocess import to_onehot +import os +os.environ['OPENBLAS_NUM_THREADS'] = '1' +os.environ['MKL_NUM_THREADS'] = '1' +from sklearn import datasets +from sklearn.utils import shuffle + +from fromscratchtoml.toolbox import binary_visualize + + + +# ## Radial + +# In[2]: + + +X11 = Distribution.radial_binary(pts=300, + mean=[0, 0], + st=1, + ed=2, seed=20) +X22 = Distribution.radial_binary(pts=300, + mean=[0, 0], + st=4, + ed=5, seed=20) + +Y11 = np.ones(X11.shape[0]) +Y22 = np.zeros(X11.shape[0]) + +X5 = np.vstack((X11, X22)) +y5 = np.hstack((Y11, Y22)) + + +# In[3]: + + +y5 = to_onehot(y5) + + +# In[4]: + + +X_train5, X_test5, y_train5, y_test5 = train_test_split(X5, y5, test_size=50, random_state=42) + + +# In[5]: + + +y_train5.shape + + +# In[6]: + + +model5 = Sequential(verbose=1, vis_each_epoch=True) +model5.add(Dense(10, input_dim=2, seed=1)) +model5.add(Activation('sigmoid')) +model5.add(Dense(2, seed=2)) +model5.add(Activation('sigmoid')) +model5.add(Dense(2, seed=3)) +# model5.add(Activation('sigmoid')) +sgd = StochasticGradientDescent(learning_rate=0.005) +model5.compile(optimizer=sgd, loss="mean_squared_error") + + +# In[7]: + +model5.fit(X_train5, y_train5, batch_size=16, epochs=40) + + +# In[8]: + + +binary_visualize(X_test5, clf=model5, draw_contour=True) diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..16a88b4 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,32 @@ +FROM ubuntu:18.04 + +MAINTAINER Mohit Rathore mrmohitrathoremr@gmail.com + +ENV REPOSITORY https://github.com/jellAIfish/fromscratchtoml.git +ENV BRANCH demo + +ENV LC_ALL C.UTF-8 +ENV LANG C.UTF-8 +RUN apt-get update +RUN apt-get install -y python3-pip git + +# Upgrade pip +RUN pip3 install --upgrade pip + +RUN git clone $REPOSITORY +WORKDIR /fromscratchtoml +RUN git checkout $BRANCH +RUN pip3 install -r requirements.txt +RUN pip3 install jupyter +RUN pip3 install scikit-learn==0.20.1 +RUN python3 setup.py install + +# Fix ipython kernel version +RUN ipython kernel install + +# Add running permission to startup script +RUN chmod +x /fromscratchtoml/docker/start_jupyter_notebook.sh + +# Define the starting command for this container and expose its running port +CMD sh -c 'flask run -h 0.0.0.0 -p 8080' +EXPOSE 8080 diff --git a/docker/start_jupyter_notebook.sh b/docker/start_jupyter_notebook.sh new file mode 100644 index 0000000..e3998fb --- /dev/null +++ b/docker/start_jupyter_notebook.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +PORT=$1 +NOTEBOOK_DIR=/fromscratchtoml/docs/notebooks + +jupyter notebook --no-browser --ip=* --port=${PORT} --allow-root --notebook-dir=${NOTEBOOK_DIR} --NotebookApp.token=\"\" diff --git a/requirements.txt b/requirements.txt index 065e6de..8b05a92 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ numpy >= 1.14.2 -cvxopt >= 1.2.0 -matplotlib >= 2.1.0 +matplotlib == 2.1.0 +Flask==2.0.3