Description Usage Format Value Fields Methods Examples
An R6Class
that consits of multiple algorithm objects
1 |
R6Class
object
Bracket object
max.perf
[logical()
]
TRUE if to maximize the performance (e.g. accuracy of a neural net),
FALSE if to minimize the performance (e.g. find the minimum of the branin function).
max.resources
[integer()
]
The maximum amount of resource that can be allocated to a single configuration
prop.discard
[integer()
]
An input that controls the proportion of configurations discarded in each round of successive halving
s
[integer()
]
The s'th bracket object to create. Note that s is in
(0,...,floor(log(max.resources, base = prop.discard)))
B
[integer()
]
The total budget for the bracket. Note that B is given by
(max(s) + 1)*max.resources
id
[string
]
An id for each Algorithm object in the bracket object
par.set
The parameter set to sample from
sample.fun
The function to sample from par.set
train.fun
The function to carry out training
performance.fun
The function to measure the performance
$run()
computes the whole bracket
$step()
computes one iteration of successive halving
$getTopKModels(k)
displays the best k models
$filterTopKModels(k)
filters the best k models and deletes the remaining models from the bracket object
$getPerformances()
computes the performance of all remaining models
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | # we need some packages
library("ggplot2")
library("smoof")
library("data.table")
# we choose the 2 dimensional branin function
braninProb = makeBraninFunction()
# the branin function has 3 global minima
opt = data.table(x1 = getGlobalOptimum(braninProb)$param$x1,
x2 = getGlobalOptimum(braninProb)$param$x2)
param.set = getParamSet(braninProb)
#######################################
## define functions to use hyperband ##
#######################################
# config space
configSpace = makeParamSet(
makeNumericParam(id = "x1", lower = -5, upper = 10.1))
# sample fun
sample.fun = function(par.set, n.configs, ...) {
sampleValues(par = par.set, n = n.configs)
}
# init fun
init.fun = function(r, config, problem) {
x1 = unname(unlist(config))
x2 = runif(1, 0, 15)
mod = c(x1, x2)
return(mod)
}
# train fun
train.fun = function(mod, budget, problem) {
for(i in seq_len(budget)) {
mod.new = c(mod[[1]], mod[[2]] + rnorm(1, sd = 3))
if(performance.fun(mod.new) < performance.fun(mod))
mod = mod.new
}
return(mod)
}
# performance fun
performance.fun = function(model, problem) {
braninProb(c(model[[1]], model[[2]]))
}
###### make branin bracket object #####
brack = bracket$new(
problem = braninProb,
max.perf = FALSE,
max.resources = 81,
prop.discard = 3,
s = 4,
B = (4 + 1)*81,
id = "branin",
par.set = configSpace,
sample.fun = sample.fun,
init.fun = init.fun,
train.fun = train.fun,
performance.fun = performance.fun)
# the data matrix shows us the hyperparameters, the current budget and the performance
brack$bracket.storage$data.matrix
# run the bracket
brack$run()
# inspect the data matrix again
brack$bracket.storage$data.matrix
# visualize the the bracket
# access the performance of the best model
brack$getPerformances()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.