Giter Club home page Giter Club logo

deepvcd's People

Contributors

chrstn-hntschl avatar

Watchers

 avatar  avatar  avatar

deepvcd's Issues

EarlyStopping with learning rate consideration

EarlyStopping in Keras only supports epoch based patience (if metric does not improve after n epochs by a given value, learning is stopped). This may interfere with ReduceLROnPlateau: either we might stop learning before reduction of learning rate has stopped fluctuating or we have a rather high patience for early stopping. An alternative would be to have early stopping only active when a given learning rate has been reached.

Improve computation of top5 error

Currently, top5 error of all given weights is computed when running models.alexnet.AlexNet.pyand printed. A summary should provide the best results of all give weights file as well as the average result.

Option to select optimization metric

Currently, training is based on hard-coded accuracy metric (val_accuracy or accuracy of no valset is given). Option to select multiple metrics on command line that are evaluated and one for selecting best model weights is preferred.

Load DatasetDescriptor from directory structure

Currently, a DatasetDescriptor can only be loaded from a yaml file (via YAMLoader.read()). This requires parsing a yaml file which can be slow and files become large for larger datasets. When loading the entire ImageNet-21k dataset, this becomes infeasible.

Instead, loading the descriptor using the directory structure is an option. A directory containing the following structure is required:

`dataset_name

  • train
    • class_1
      • image_1.jpg
      • ...
      • image_n.jpg
    • class_2
      • image_n+1.jpg
      • ...
    • ...
  • val
    • class_1
      • image_1.jpg
      • ...
    • class_2
      • ...
  • test
    • class_1
      • image_1.jpg
      • ...
        ´
        The existence of a ǜaland test`directory can be optional.

monitor mode for callbacks does not work with custom metrics

ReduceLROnPlateau and EarlyStopping rely on a monitor mode to be set (i.e. wether the monitored metric is expected to increase or decrease). Currently, auto mode is used, which tries to deduce the monitor op from the name (when name contains acc the metric is expected to increase otherwise it should decrease). With the ability to chose the metric via cli, this does not work anymore (we could have arbitrary metric names. Two possible options:

  • deduce mode from metric class (have a dict that maps class name to mode)
  • have a mode command line parameter

Write learning checkpoints to directory

Currently, only one weights file is written, once the training is ended. In case of very long training times it is advantageous to store intermediary results in order to be able to abort training after any epoch and without loosing the achieved results.

Improve: prediction with 'imagenet' weights

when running deepvcd.models.alexnet.AlexNet for prediction with default weights parameter (using imagenet weights loaded from URL), no option to explicitly set the parameter to None is provided. This makes it difficult to properly initialize the value from an env variable (such as e.g. in Makefile).

Instead use:

weights="imagenet" as default

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.