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

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

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...