Skip to main content

The number of configurations Keras Hyperband gives me per round doesn't match the code?

I'm trying to figure out how the Keras implementation of Hyperband calculates the number of configurations to test per round within a bracket. When I run Keras Hyperband with max_epochs=10 and factor=2 and look at the output, this is what I get:

Run Table

Where s = bracket number, i = round number, n = number of configurations tested in round i, ri = number of epochs each of those configurations get in round i.

However, when we look at the source code (https://github.com/keras-team/keras-tuner/blob/0dd114dd5353c941e8e14e68356a3fb124e3a0d1/keras_tuner/tuners/hyperband.py#L23), it seems to me that we should instead have:

Code Table

In particular, I'm looking at the functions,

def _get_size(self, bracket_num, round_num):
    # Set up so that each bracket takes approx. the same amount of
    # resources.
    bracket0_end_size = math.ceil(
        1 + math.log(self.max_epochs, self.factor)
    )
    bracket_end_size = bracket0_end_size / (bracket_num + 1)
    return math.ceil(
        bracket_end_size * self.factor ** (bracket_num - round_num)
    )

def _get_epochs(self, bracket_num, round_num):
    return math.ceil(
        self.max_epochs / self.factor ** (bracket_num - round_num)
    )

def _get_num_rounds(self, bracket_num):
    # Bracket 0 just runs random search, others do successive halving.
    return bracket_num + 1

def _get_num_brackets(self):
    epochs = self.max_epochs
    brackets = 0
    while epochs >= self.min_epochs:
        epochs = epochs / self.factor
        brackets += 1
    return brackets

and assuming that get_size is getting the number of configurations in that bracket and that round.

Am I just making some really silly calculations? Why is my model getting slightly different numbers of configurations, but the same number of epochs? (For reference, I had 5 different hyper parameters, each with 2 options, so 32 possible configurations available to test, and I used an early stopping callback with a patience of 8, though I doubt it came into effect here.)

I've tried running with several different values of max_epochs and factor, and I can only seem to get it the same if there are a very small number of brackets (everything goes kind of wonk once you get up to the s=3 bracket).



source https://stackoverflow.com/questions/76202927/the-number-of-configurations-keras-hyperband-gives-me-per-round-doesnt-match-th

Comments

Popular posts from this blog

Where and how is this Laravel kernel constructor called? [closed]

Where and how is this Laravel kernel constructor called? public fucntion __construct(Application $app, $Router $roouter) { } I have read the documentation and some online tutorial but I can find any clear explanation. I am learning Laravel and I am wondering where does this kernel constructor receives its arguments from. "POSTMOTERM" CLARIFICATION: Here is more clarity.I have checked the boostrap/app.php and it is only used for boostrapping the interfaces into the container class. What is not clear to me is where and how the Kernel class is instatiated and the arguments passed to the object calling the constructor.Something similar to; obj = new kernel(arg1,arg2) or, is the framework using some magic functions somewhere? Special gratitude to those who burn their eyeballs and brain cells on this trivia before it goes into a full blown menopause alias "MARKED AS DUPLICATE". To some of the itchy-finger keyboard warriors, a.k.a The mods,because I believe in th...

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype