Skip to main content

ModelZoo

A Scaffold to help you build Deep-learning Model much more easily, implemented with TensorFlow Eager Execution and Keras.

Installation

You can install this package easily with pip:

pip3 install model-zoo

Usage

Let's implement a linear-regression model quickly.

Here we use boston_housing dataset as example.

Define a linear model in models folder, named model.py and import its Class from __init__.py:

from model_zoo.model import BaseModel
import tensorflow as tf

class HousePricePredictionModel(BaseModel):
    def __init__(self, config):
        super(HousePricePredictionModel, self).__init__(config)
        self.dense = tf.keras.layers.Dense(1)

    def call(self, inputs, training=None, mask=None):
        o = self.dense(inputs)
        return o

Then define a trainer like this, named train.py:

from model_zoo.trainer import BaseTrainer
from model_zoo.preprocess import standardize
from model_zoo import flags, datasets

flags.DEFINE_integer('epochs', 100, 'Max epochs')
flags.DEFINE_string('model_class_name', 'HousePricePredictionModel', 'Model class name')

class Trainer(BaseTrainer):

    def prepare_data(self):
        (x_train, y_train), (x_eval, y_eval) = datasets.boston_housing.load_data()
        x_train, x_eval = standardize(x_train, x_eval)
        train_data, eval_data = (x_train, y_train), (x_eval, y_eval)
        return train_data, eval_data

if __name__ == '__main__':
    Trainer().run()

Now, we've finished this model!

Next we can run this model using this cmd:

python3 train.py

Outputs like this:

Epoch 1/100
 1/13 [=>............................] - ETA: 0s - loss: 816.1798
13/13 [==============================] - 0s 4ms/step - loss: 457.9925 - val_loss: 343.2489

Epoch 2/100
 1/13 [=>............................] - ETA: 0s - loss: 361.5632
13/13 [==============================] - 0s 3ms/step - loss: 274.7090 - val_loss: 206.7015
Epoch 00002: saving model to checkpoints/model-2.ckpt

Epoch 3/100
 1/13 [=>............................] - ETA: 0s - loss: 163.5308
13/13 [==============================] - 0s 3ms/step - loss: 172.4033 - val_loss: 128.0830

Epoch 4/100
 1/13 [=>............................] - ETA: 0s - loss: 115.4743
13/13 [==============================] - 0s 3ms/step - loss: 112.6434 - val_loss: 85.0848
Epoch 00004: saving model to checkpoints/model-4.ckpt

Epoch 5/100
 1/13 [=>............................] - ETA: 0s - loss: 149.8252
13/13 [==============================] - 0s 3ms/step - loss: 77.0281 - val_loss: 57.9716
....

Epoch 42/100
 7/13 [===============>..............] - ETA: 0s - loss: 20.5911
13/13 [==============================] - 0s 8ms/step - loss: 22.4666 - val_loss: 23.7161
Epoch 00042: saving model to checkpoints/model-42.ckpt

It runs only 42 epochs and stopped early, because the framework auto enabled early stop mechanism and there are no more good evaluation results for 20 epochs.

When finished, we can find two folders generated named checkpoints and events.

Go to events and run TensorBoard:

cd events
tensorboard --logdir=.

TensorBoard like this:

There are training and validation loss in the graph.

And also we can find checkpoints in checkpoints dir.

It saved the best model named model.ckpt according to eval score, and it also saved checkpoints every 2 epochs.

Next we can predict using existing checkpoints, define infer.py like this:

from model_zoo.inferer import BaseInferer
from model_zoo.preprocess import standardize
from model_zoo import flags, datasets

flags.DEFINE_string('checkpoint_name', 'model-best.ckpt', help='Model name')

class Inferer(BaseInferer):

    def prepare_data(self):
        (x_train, y_train), (x_test, y_test) = datasets.boston_housing.load_data()
        _, x_test = standardize(x_train, x_test)
        return x_test

if __name__ == '__main__':
    result = Inferer().run()
    print(result)

Now we've restored the specified model model.ckpt-38 and prepared test data, outputs like this:

[[ 9.637125 ]
 [21.368305 ]
 [20.898445 ]
 [33.832504 ]
 [25.756516 ]
 [21.264557 ]
 [29.069794 ]
 [24.968184 ]
 ...
 [36.027283 ]
 [39.06852  ]
 [25.728745 ]
 [41.62165  ]
 [34.340042 ]
 [24.821484 ]]

OK, we've finished restoring and predicting. Just so convenient. Here is the code.

More

If you want to find more models, just see ModelZoo.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

model-zoo-0.3.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

model_zoo-0.3.1-py2.py3-none-any.whl (14.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file model-zoo-0.3.1.tar.gz.

File metadata

  • Download URL: model-zoo-0.3.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for model-zoo-0.3.1.tar.gz
Algorithm Hash digest
SHA256 a25a808d3ee2b626d67dc0a77b5eb05d281b5a10c15aacca67171df254e0e135
MD5 94ea22ab2abf6c1e8f1c2de00074893b
BLAKE2b-256 c180852ceb36bfb33cd80205c9fc52612c4cface955704a3deccc462721e9ace

See more details on using hashes here.

File details

Details for the file model_zoo-0.3.1-py2.py3-none-any.whl.

File metadata

  • Download URL: model_zoo-0.3.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for model_zoo-0.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5ca2545c1333493e2db917043880650262b623e29d95fed2b5a2439acc019d42
MD5 7f500cc5a280cf28e611b10b85c87404
BLAKE2b-256 073a8af614c9ba9990e10a9890a913f9364d92d4d69999aedc6abfea8b9271fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page