Code Monkey home page Code Monkey logo

minos's Introduction

Minos

Search for neural networks architecture & hyper parameters with genetic algorithms. It is built on top of Keras+Tensorflow to build/train/evaluate the models, and uses DEAP for the genetic algorithms.

Getting Started

You need to have tensorflow installed, see tensorflow linux or tensorflow mac

Install minos:

pip install pyminos==0.5.1

To run an experiment and search hyper parameters and/or architecture for a model and dataset, you can define a simple layout with the input_size, output_size and output_activation of your model

from minos.model.model import Layout
layout = Layout(
    input_size=1000,
    output_size=25,
    output_activation='softmax')

Then you define the parameters of the training. If you specify only the name of the optimizer to use, and no parameters, random parameters will be tested during the experiment, hopefully converging to optimal parameters. You can choose to stop the training after a fixed number of epochs, or when the accuracy of the model evaluated stops increasing.

from minos.model.model import Objective, Optimizer, Metric
from minos.experiment.training import Training, EpochStoppingCondition
training = Training(
    objective=Objective('categorical_crossentropy'),
    optimizer=Optimizer(optimizer='Adam'),
    metric=Metric('categorical_accuracy'),
    stopping=EpochStoppingCondition(10),
    batch_size=50)

Now you need to define which parameters will be randomly tested. An ExperimentParameters contains all the parameters that can be tested. It can be initialized with the default values for each parameter so that you only redefine the parameters you want to test, specifying intervals or list of values for example

from minos.experiment.experiment import ExperimentParameters
experiment_parameters = ExperimentParameters(use_default_values=True)

You can then specify the search space for each parameter you want to test. For example, to test architectures with 1 row, 1 block per row, and up to 5 layers per block:

from minos.model.parameter import int_param
experiment_parameters.layout_parameter('rows', 1)
experiment_parameters.layout_parameter('blocks', 1)
experiment_parameters.layout_parameter('layers', int_param(1, 5))

If you want to test layers with size between 10 and 500 units:

experiment_parameters.layer_parameter('Dense.output_dim', int_param(10, 500))

You can find all the parameters and their default values here in [parameters] (minos/model/parameters.py)

Now you need to specify the experiment environment. You can choose to run the experiment on CPU or GPU devices, and specify how many jobs are to be run on each device. To run on CPU, just use CpuEnvironment instead of GpuEnvironment. You can define the directory where the experiment logs and data are saved. If no directory defined, it will create a directory named 'minos' in the user's home.

from minos.train.utils import GpuEnvironment
environment=GpuEnvironment(
    ['/gpu:0', '/gpu:1'], 
    n_jobs=[2, 5],
    data_dir='/data/minos/experiments')

The Experiment is then created with all the information necessary and the training and validation data. Training and validation data are provided as batch iterators that generate (X,y) tuples. You can use SimpleBatchIterator to create a batch iterator from (X, y) arrays. The iterators need to be able to loop over the data when they reach the end, so you need to set the parameter autoloop=True.

from minos.train.utils import SimpleBatchIterator
batch_iterator = SimpleBatchIterator(X, y, batch_size=50, autoloop=True)
test_batch_iterator = SimpleBatchIterator(test_X, test_y, batch_size=50, autoloop=True)
from minos.experiment.experiment import Experiment
experiment = Experiment(
    experiment_label='test__reuters_experiment',
    layout=layout,
    training=training,
    batch_iterator=batch_iterator,
    test_batch_iterator=test_batch_iterator,
    environment=environment,
    parameters=experiment_parameters)

Then you specify the population size and number of generations and start the experiment. Logs and data will be saved in the directory you specified.

from minos.experiment.ga import run_ga_search_experiment
run_ga_search_experiment(
    experiment, 
    population_size=100, 
    generations=100,
    log_level='DEBUG')

Logs and data will be saved in the specified directory, or ~/minos if no directory specified. This is what the logs should look like

2017-02-21 07:25:26 [INFO] root: Evolving generation 0
2017-02-21 07:25:26 [DEBUG] root: Training 100 models
2017-02-21 07:27:29 [DEBUG] root: Blueprint 0: score 0.438252 after 17 epochs
2017-02-21 07:27:31 [DEBUG] root: Blueprint 1: score 0.326195 after 20 epochs
2017-02-21 07:28:13 [DEBUG] root: Blueprint 3: score 0.496040 after 22 epochs
2017-02-21 07:29:26 [DEBUG] root: Blueprint 4: score 0.835436 after 24 epochs
2017-02-21 07:30:18 [DEBUG] root: Blueprint 5: score 0.261954 after 21 epochs
2017-02-21 07:31:02 [DEBUG] root: Blueprint 2: score 0.096509 after 51 epochs
2017-02-21 07:35:14 [DEBUG] root: Blueprint 7: score 0.370490 after 36 epochs
2017-02-21 07:38:12 [DEBUG] root: Blueprint 6: score 0.537401 after 104 epochs
2017-02-21 07:40:25 [DEBUG] root: Blueprint 8: score 0.176298 after 57 epochs
2017-02-21 07:41:08 [DEBUG] root: Blueprint 11: score 0.063068 after 24 epochs
2017-02-21 07:45:55 [DEBUG] root: Blueprint 10: score 0.022587 after 65 epoch
2017-02-21 10:02:29 [INFO] root: [{"generation": 0}, {"average": 0.36195365556387343}, {"best_scores": [0.842769172996606, 0.8392491032735243, 0.8354356464279401]}]

You can stop the experiment and resume later by setting the 'resume' parameter to True. It will restart at the last epoch saved.

run_ga_search_experiment(
    experiment, 
    population_size=100, 
    generations=100,
    resume=True)

Once you are done, you can load the best blueprint produced at a specific step.

from minos.experiment.experiment import load_experiment_best_blueprint
blueprint = load_experiment_best_blueprint(
    experiment_label=experiment.label,
    step=generations - 1,
    environment=CpuEnvironment(n_jobs=2, data_dir=tmp_dir))

And then build/train/evaluate the model using the Keras API:

from minos.model.build import ModelBuilder
from minos.train.utils import cpu_device
model = ModelBuilder().build(
    blueprint,
    cpu_device())
model.fit_generator(
    generator=batch_iterator,
    samples_per_epoch=batch_iterator.samples_per_epoch,
    nb_epoch=5,
    validation_data=test_batch_iterator,
    nb_val_samples=test_batch_iterator.sample_count)
score = model.evaluate_generator(
    test_batch_iterator,
    val_samples=test_batch_iterator.sample_count)

Limitations

The current version only works with 1D data, so no RNN, LSTM, Convolutions for now...

Concepts

To search for hyper parameters and/or layouts, we create an experiment. We define the parameters of the experiment and the dataset, then we run the experiment. An experiment uses a genetic algorithm to search the parameters defined. It consists in generating a population, and evolving the population for a specified number of generations. It starts by generating a random population of blueprints from the experiment parameters. Each blueprint, or individual, randomly generated, is actually a definition that can be used to build a Keras model. At each generation, the blueprints can be mixed and/or mutated, and are then evaluated. Evaluating a blueprint consists in building, training and evaluating the Keras model if defines. The best blueprints are selected for the next generation

To create an experiment you need to define:

  • the layout: input_size, output_size, output_activtion of the network. You can also specify the architecture and layers if you want to search parameters for a fixed architecture. If you don't specify any layers, random combinations will be tested.
  • the experiment parameters: these are all the parameters that will be randomly tested You can decide to test every possible combination, or fix the value of some parameters and let the experiment randomly test others
  • the training: objective(=loss), metric, stopping condition and optimizer. These training parameters are used to evaluate the models randomly generated. Note that you can either fully specify the optimizer (type+parameters) or specify only a type of optimizer and let the experiment test random parameters

Terminology

Experiment:
    Defines all the parameters related to the search:
        - the layout,
        - the layer parameters
        - the training parameters
Layout:
    A layout defines the architecture of a network. A layout is vertical stack of rows.
Row:
    A row is an horizontal stack of independant blocks. Each block can be connected to or more blocks
    from the row below.
Block:
    A block is vertical stack of layers. The output of each layer in the block is the input of the
    layer immediately above
Layer:
    A Keras layer : Dense, Dropout, ...

ExperimentParameters:
    Defines all the parameters that can be tested. This can be layer parameters such as the dropout value,
    the regularization type and value, etc... this can be the parameters of the optimizer...
    You can :
        - initialize the ExperimentParameters with the default values for each parameters.
          In that case you then need to override the parameters you want to search and specify
          the intervals or collections of values to be randomly tested
        - initialize the ExperimentParameters without default values.
          In that case all the parameters will be randomly tested
    The reference parameter intervals and default values can be found in minos.model.parameters

Training:
    Defines the training parameters used to evaluate the randomly generated models.
    You specify the objective(loss), the metric, the stopping condition and the optimizer.
    The hyper parameters for the optimizers can also be randomly tested


Blueprint:
    Blueprints are generated randomly from the experiment parameters you specify.
    A blueprint is the definition that is used to build and train/evaluate a Keras model.
    During the experiment random blueprints are generated, mixed, mutated and evaluated
    by training and evaluating the Keras model they define

Model:
    A Keras model built using a blueprint

Documentation

For now there is no documentation. Best thing to do is to have a look at the examples in https://github.com/guybedo/minos/tree/develop/examples. This is quite straightforward to use, the examples should be enough to start trying things and running experiments.

minos's People

Contributors

guybedo avatar unnir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

minos's Issues

Not able to install on window virtual machine

I'm using a windows virtual machine. I got the following log and error when installing the package:

    Blas (http://www.netlib.org/blas/) sources not found.
    Directories to search for the sources can be specified in the
    numpy/distutils/site.cfg file (section [blas_src]) or by setting
    the BLAS_SRC environment variable.
  self.calc_info()
C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir\tmp\easy

_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\system_info.py:572: UserWarning:
Lapack (http://www.netlib.org/lapack/) libraries not found.
Directories to search for the libraries can be specified in the
numpy/distutils/site.cfg file (section [lapack]) or by setting
the LAPACK environment variable.
self.calc_info()
C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir\tmp\easy
_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\system_info.py:572: UserWarning:
Lapack (http://www.netlib.org/lapack/) sources not found.
Directories to search for the sources can be specified in the
numpy/distutils/site.cfg file (section [lapack_src]) or by setting
the LAPACK_SRC environment variable.
self.calc_info()
C:\Anaconda\envs\py35\lib\distutils\dist.py:261: UserWarning: Unknown distri
bution option: 'define_macros'
warnings.warn(msg)
Traceback (most recent call last):
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\config.py", line
51, in _check_compiler
File "C:\Anaconda\envs\py35\lib\distutils_msvccompiler.py", line 199, in
initialize
vc_env = _get_vc_env(plat_spec)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 17
6, in msvc14_get_vc_env
return EnvironmentInfo(plat_spec, vc_min_ver=14.0).return_env()
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 12
20, in return_env
self.OSIncludes,
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 95
5, in OSIncludes
sdkver = self._sdk_subdir
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 10
49, in _sdk_subdir
ucrtver = self.si.WindowsSdkLastVersion
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 59
6, in WindowsSdkLastVersion
self.WindowsSdkDir, 'lib'))
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\msvc.py", line 80
1, in _use_last_dir_name
for dir_name in reversed(os.listdir(path))
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
313, in wrap
return original(path, *args, **kw)
FileNotFoundError: [WinError 3] The system cannot find the path specified: '
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\PlatformSDK\lib'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda\envs\py35\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Anaconda\envs\py35\lib\distutils\dist.py", line 955, in run_comma

nds
self.run_command(cmd)
File "C:\Anaconda\envs\py35\lib\distutils\dist.py", line 974, in run_comma
nd
cmd_obj.run()
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\bdist_egg
.py", line 152, in run
self.run_command("egg_info")
File "C:\Anaconda\envs\py35\lib\distutils\cmd.py", line 313, in run_comman
d
self.distribution.run_command(command)
File "C:\Anaconda\envs\py35\lib\distutils\dist.py", line 974, in run_comma
nd
cmd_obj.run()
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\egg_info.py", lin
e 18, in run
File "C:\Anaconda\envs\py35\lib\distutils\cmd.py", line 313, in run_comman
d
self.distribution.run_command(command)
File "C:\Anaconda\envs\py35\lib\distutils\dist.py", line 974, in run_comma
nd
cmd_obj.run()
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\build_src.py", li
ne 148, in run
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\build_src.py", li
ne 159, in build_sources
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\build_src.py", li
ne 294, in build_library_sources
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\build_src.py", li
ne 377, in generate_sources
File "numpy\core\setup.py", line 663, in get_mathlib_info
File "C:\Anaconda\envs\py35\lib\distutils\command\config.py", line 243, in
try_link
self._check_compiler()
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\command\config.py", line
66, in _check_compiler
distutils.errors.DistutilsPlatformError: Could not initialize compiler insta
nce: do you have Visual Studio
installed? If you are trying to build with MinGW, please use "python setup.
py
build -c mingw32" instead. If you have Visual Studio installed, check it is

correctly installed, and the right version (VS 2008 for python 2.6, 2.7 and

3.2,
VS 2010 for >= 3.3).

Original exception was: [WinError 3] The system cannot find the path specifi

ed: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\PlatformSDK\lib
', and the Compiler class was MSVCCompiler
============================================================================

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line

157, in save_modules
yield saved
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
198, in setup_context
yield
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
255, in run_setup
DirectorySandbox(setup_dir).run(runner)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
285, in run
return func()
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
253, in runner
_execfile(setup_script, ns)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
47, in _execfile
exec(code, globals, locals)
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\setup.py", line 391, in
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\setup.py", line 383, in setup_package
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\core.py", line 169, in se
tup
File "C:\Anaconda\envs\py35\lib\distutils\core.py", line 163, in setup
raise SystemExit("error: " + str(msg))
SystemExit: error: Could not initialize compiler instance: do you have Visua
l Studio
installed? If you are trying to build with MinGW, please use "python setup.
py
build -c mingw32" instead. If you have Visual Studio installed, check it is

correctly installed, and the right version (VS 2008 for python 2.6, 2.7 and

3.2,
VS 2010 for >= 3.3).

Original exception was: [WinError 3] The system cannot find the path specifi

ed: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\PlatformSDK\lib
', and the Compiler class was MSVCCompiler
============================================================================

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst

all.py", line 1105, in run_setup
run_setup(setup_script, args)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
258, in run_setup
raise
File "C:\Anaconda\envs\py35\lib\contextlib.py", line 77, in exit
self.gen.throw(type, value, traceback)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
198, in setup_context
yield
File "C:\Anaconda\envs\py35\lib\contextlib.py", line 77, in exit
self.gen.throw(type, value, traceback)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
169, in save_modules
saved_exc.resume()
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
144, in resume
six.reraise(type, exc, self._tb)
File "C:\Anaconda\envs\py35\lib\site-packages\six.py", line 685, in rerais
e
raise value.with_traceback(tb)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
157, in save_modules
yield saved
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
198, in setup_context
yield
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
255, in run_setup
DirectorySandbox(setup_dir).run(runner)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
285, in run
return func()
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
253, in runner
_execfile(setup_script, ns)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\sandbox.py", line
47, in _execfile
exec(code, globals, locals)
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\setup.py", line 391, in
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\setup.py", line 383, in setup_package
File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir
tmp\easy_install-q3xx5j2g\numpy-1.12.1\numpy\distutils\core.py", line 169, in se
tup
File "C:\Anaconda\envs\py35\lib\distutils\core.py", line 163, in setup
raise SystemExit("error: " + str(msg))
SystemExit: error: Could not initialize compiler instance: do you have Visua
l Studio
installed? If you are trying to build with MinGW, please use "python setup.
py
build -c mingw32" instead. If you have Visual Studio installed, check it is

correctly installed, and the right version (VS 2008 for python 2.6, 2.7 and

3.2,
VS 2010 for >= 3.3).

Original exception was: [WinError 3] The system cannot find the path specifi

ed: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\PlatformSDK\lib
', and the Compiler class was MSVCCompiler
============================================================================

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Microsoft\R Server\R_SERVER\DeployR\rserve\workdir\

tmp\pip-build-y05fblor\pyminos\setup.py", line 30, in
packages=find_packages())
File "C:\Anaconda\envs\py35\lib\distutils\core.py", line 108, in setup
setup_distribution = dist = klass(attrs)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\dist.py", line 31
8, in init
self.fetch_build_eggs(attrs['setup_requires'])
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\dist.py", line 37
5, in fetch_build_eggs
replace_conflicting=True,
File "C:\Anaconda\envs\py35\lib\site-packages\pkg_resources_init
.py",
line 851, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "C:\Anaconda\envs\py35\lib\site-packages\pkg_resources_init_.py",
line 1123, in best_match
return self.obtain(req, installer)
File "C:\Anaconda\envs\py35\lib\site-packages\pkg_resources_init_.py",
line 1135, in obtain
return installer(requirement)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\dist.py", line 44
3, in fetch_build_egg
return cmd.easy_install(req)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst
all.py", line 673, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst
all.py", line 699, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst
all.py", line 880, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst
all.py", line 1119, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "C:\Anaconda\envs\py35\lib\site-packages\setuptools\command\easy_inst
all.py", line 1107, in run_setup
raise DistutilsError("Setup script exited with %s" % (v.args[0],))
distutils.errors.DistutilsError: Setup script exited with error: Could not i
nitialize compiler instance: do you have Visual Studio
installed? If you are trying to build with MinGW, please use "python setup.
py
build -c mingw32" instead. If you have Visual Studio installed, check it is

correctly installed, and the right version (VS 2008 for python 2.6, 2.7 and

3.2,
VS 2010 for >= 3.3).

Original exception was: [WinError 3] The system cannot find the path specifi

ed: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\PlatformSDK\lib
', and the Compiler class was MSVCCompiler
============================================================================

============================================================================


----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in C:\Program Files
Microsoft\R Server\R_SERVER\DeployR\rserve\workdir\tmp\pip-build-y05fblor\pymino
s
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' comm
and.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.