Olympus
latest

Getting Started

  • First Steps
  • Observers and Aspects
    • What not to do
    • Observers
    • Aspect

Examples

  • Minimalist Example
  • Simple Hyper Parameter Search
  • Parallel Hyper Parameter Search
  • Simple Dashboard
  • Dynamic Dashboard

Contributing

  • Contributing to Olympus
    • Adding new Basic Blocks
      • Models
      • Model Optimizer
      • Weight Initialization
      • Schedule
      • Tasks
      • Baselines
      • Datasets
      • Dataset Sampling
      • Metrics
      • Observers
      • Hyper-parameter Optimizer
    • Specifying hyper-parameters
    • Examples
      • Custom Model
      • Custom Model with NAS
      • Custom Optimizer
      • Custom Schedule
      • Custom Observer

API

  • Accumulators
    • olympus.accumulators.smoothing module
  • Dashboard
    • Plots
      • Exploration
      • Importance
      • Training Curves
      • Work Distribution
      • Work Status
      • Saliency Map
      • Layer Inspection
  • Baselines
    • Classification
    • Launcher
      • Parallelization
      • Monitoring
    • Module contents
  • Datasets
    • Archive
    • CIFAR 10
    • CIFAR 100
    • All Dataset
    • Extended MNIST
    • FakeDataset
    • Fashion MNIST
    • Gaussian
    • ImageNet
    • MNIST
    • Pennfudan
    • SVHN
    • Tensor HDF5
    • Tiny ImageNet
    • Transformed Dataset
  • Distributed
    • Multi GPU
    • Module contents
  • Hyper parameter Optimization
    • Registered HPO
      • Hyperband
      • Random Search
    • Module contents
  • Metrics
    • Available Metrics
      • Reinforcement Learning
      • Accuracy
      • Adversary
    • Module contents
  • Models
    • Registered Models
      • Efficientnet
      • LeNet
      • Logistic Regression
      • MultiLayer Perceptron
      • Mobilenetv2
      • PreActResnet
      • Resnet
      • VGG
      • Initializations
        • Registered Initializations
        • Module contents
    • Module contents
  • Observers
    • Available Observers
      • Progress
    • Observer Interface
    • Observer List
  • Optimizers
    • Adam
    • AMSGrad
    • Base
    • SGD
    • Module contents
  • Reinforcement Learning
    • Reinforcement Loader
    • Parallel Environments
    • Gym Environment
    • Procedurally Generated Environment
    • Replay Vector
    • Module contents
  • Samplers
    • Group
  • Schedules
    • Cyclic
    • Exponential
    • Module contents
  • Split Methods
    • Balanced Classes
    • Boostrap
    • Constrained Bootstrap
    • CrossValid
    • Original
    • Resample
    • Split
    • SubSample
  • Tasks
    • Classification
    • Object Detection
    • olympus.tasks.gan module
    • olympus.tasks.segmentation module
    • olympus.tasks.task module
    • Reinforcement
      • Actor Critic
      • Proximal Policy Optimization
  • Utilities
    • dtypes
    • Factory
    • Mixed Precision
    • Network
    • Options
    • Signals
    • Statistics
    • Storage
    • Subpackages
      • GPU
        • Submodules
        • Module contents
    • Module contents
Olympus
  • Docs »
  • <no title> »
  • Simple Hyper Parameter Search
  • Edit on GitHub
Next Previous

Simple Hyper Parameter SearchΒΆ

from argparse import ArgumentParser

from olympus import fetch_device, StateStorage
from olympus.hpo import HPOptimizer, Fidelity
from olympus.datasets import Dataset, SplitDataset, DataLoader
from olympus.metrics import Accuracy
from olympus.models import Model
from olympus.optimizers import Optimizer, LRSchedule
from olympus.tasks import Classification
from olympus.tasks.hpo import HPO
from olympus.utils import option, show_dict


parser = ArgumentParser()
parser.add_argument('--epochs', type=int, default=3)
args = parser.parse_args()
device = fetch_device()
base = option('base_path', '/tmp/olympus')


def make_task():
    model = Model(
        'logreg',
        input_size=(1, 28, 28),
        output_size=(10,)
    )

    optimizer = Optimizer('sgd')

    lr_schedule = LRSchedule('exponential')

    data = Dataset('test-mnist', path=f'{base}/data')

    splits = SplitDataset(data, split_method='original')

    loader = DataLoader(
        splits,
        sampler_seed=1,
        batch_size=32
    )

    main_task = Classification(
        classifier=model,
        optimizer=optimizer,
        lr_scheduler=lr_schedule,
        dataloader=loader.train(),
        device=device,
        storage=StateStorage(folder=f'{base}/hpo_simple'))

    main_task.metrics.append(
        Accuracy(name='validation', loader=loader.valid(batch_size=64))
    )

    return main_task


space = make_task().get_space()

hp_optimizer = HPOptimizer(
    'hyperband',
    fidelity=Fidelity(1, 30).to_dict(),
    space=space)

hpo_task = HPO(hp_optimizer, make_task)

result = hpo_task.fit(objective='validation_accuracy')

print('Best Params:')
print('-' * 40)
print(f'validation_accuracy: {result.objective}')
show_dict(result.params)
Next Previous

© Copyright 2017-2019 Pierre Delaunay Revision b5b7a2b1.

Built with Sphinx using a theme provided by Read the Docs.