{"id":15536415,"url":"https://github.com/atanasster/hyperparameters","last_synced_at":"2025-06-14T15:42:16.486Z","repository":{"id":93941509,"uuid":"135195991","full_name":"atanasster/hyperparameters","owner":"atanasster","description":"ES6 hyperparameters search for tfjs","archived":false,"fork":false,"pushed_at":"2020-09-18T14:39:32.000Z","size":93,"stargazers_count":60,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-04T08:41:29.528Z","etag":null,"topics":["es6","hyperopt","hyperparameters","javascript","tensorflow","tensorflowjs","tfjs"],"latest_commit_sha":null,"homepage":"https://hyperjs.herokuapp.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atanasster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-05-28T18:29:33.000Z","updated_at":"2024-04-10T09:58:45.000Z","dependencies_parsed_at":"2023-03-07T07:45:18.231Z","dependency_job_id":null,"html_url":"https://github.com/atanasster/hyperparameters","commit_stats":{"total_commits":78,"total_committers":2,"mean_commits":39.0,"dds":"0.15384615384615385","last_synced_commit":"e232f11b740a9eb6b8acb9b980058957c67880ca"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atanasster%2Fhyperparameters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atanasster%2Fhyperparameters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atanasster%2Fhyperparameters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atanasster%2Fhyperparameters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atanasster","download_url":"https://codeload.github.com/atanasster/hyperparameters/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830922,"owners_count":20354850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["es6","hyperopt","hyperparameters","javascript","tensorflow","tensorflowjs","tfjs"],"created_at":"2024-10-02T11:51:42.196Z","updated_at":"2025-03-16T21:30:25.364Z","avatar_url":"https://github.com/atanasster.png","language":"JavaScript","readme":"# ES6 hyperparameters optimization\n\n[![Build Status](https://travis-ci.org/atanasster/hyperparameters.svg?branch=master)](https://travis-ci.org/atanasster/hyperparameters) [![dependencies Status](https://david-dm.org/atanasster/hyperjs/status.svg)](https://david-dm.org/atanasster/hyperjs) [![devDependencies Status](https://david-dm.org/atanasster/hyperjs/dev-status.svg)](https://david-dm.org/atanasster/hyperjs?type=dev) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n:warning: Early version subject to changes.\n\n\n\n## Features\n* **written in javascript** - Use with tensorflow.js as a replacement to your python hyperparameters library\n* **use from cdn or npm** - Link hpjs in your html file from a cdn, or install in your project with npm \n* **versatile** - Utilize multiple parameters and multiple search algorithms (grid search, random, bayesian) \n\n\n\n## Installation\n\n  ```\n  $ npm install hyperparameters\n  ```\n\n\n## Parameter Expressions\n\n  ```\n  import * as hpjs from 'hyperparameters';\n  ```\n\n### hpjs.choice(options)\n\n- Randomly returns one of the options\n\n### hpjs.randint(upper)\n\n- Return a random integer in the range [0, upper)\n\n### hpjs.uniform(low, high)\n\n- Returns a single value uniformly between `low` and `high` i.e. any value between `low` and `high` has an equal probability of being selected\n\n### hpjs.quniform(low, high, q)\n\n- returns a quantized value of `hp.uniform` calculated as `round(uniform(low, high) / q) * q`\n\n### hpjs.loguniform(low, high)\n\n- Returns a value `exp(uniform(low, high))` so the logarithm of the return value is uniformly distributed.\n\n### hpjs.qloguniform(low, high, q)\n\n- Returns a value `round(exp(uniform(low, high)) / q) * q`\n\n### hpjs.normal(mu, sigma)\n\n- Returns a real number that's normally-distributed with mean mu and standard deviation sigma\n\n### hpjs.qnormal(mu, sigma, q)\n\n- Returns a value `round(normal(mu, sigma) / q) * q`\n\n### hpjs.lognormal(mu, sigma)\n\n- Returns a value `exp(normal(mu, sigma))`\n\n### hpjs.qlognormal(mu, sigma, q)\n\n- Returns a value `round(exp(normal(mu, sigma)) / q) * q`\n\n\n\n## Random numbers generator\n\n  ```\n  import { RandomState } from 'hyperparameters';\n  ```\n  \n  **example:**\n  ```\n  const rng = new RandomState(12345);\n  console.log(rng.randrange(0, 5, 0.5));\n\n  ```\n\n\n## Spaces\n\n  ```\n  import { sample } from 'hyperparameters';\n  ```\n  \n  **example:**\n  ```\n  import * as hpjs from 'hyperparameters';\n  \n  const space = {\n    x: hpjs.normal(0, 2),\n    y: hpjs.uniform(0, 1),\n    choice: hpjs.choice([\n      undefined, hp.uniform('float', 0, 1),\n    ]),\n    array: [\n      hpjs.normal(0, 2), hpjs.uniform(0, 3), hpjs.choice([false, true]),\n    ],\n    obj: {\n      u: hpjs.uniform(0, 3),\n      v: hpjs.uniform(0, 3),\n      w: hpjs.uniform(-3, 0)\n    }\n  };\n\n  console.log(hpjs.sample.randomSample(space));\n\n  ```\n## fmin - find best value of a function over the arguments \n\n  ```\n  import * as hpjs from 'hyperparameters';\n  const trials = hpjs.fmin(optimizationFunction, space, estimator, max_estimates, options); \n  ```\n  \n  **example:**\n  ```\n  import * as hpjs from 'hyperparameters';\n\n  const fn = x =\u003e ((x ** 2) - (x + 1));\n  const space = hpjs.uniform(-5, 5);\n  fmin(fn, space, hpjs.search.randomSearch, 1000, { rng: new hpjs.RandomState(123456) })\n    .then(trials =\u003e console.log(result.argmin));\n  ```\n## Getting started with tensorflow.js\n\n### 1. [include javascript file](https://github.com/atanasster/hyperparameters/tree/master/examples/tiny)  \n\n* include (latest) version from cdn\n\n`\u003cscript src=\"https://cdn.jsdelivr.net/npm/hyperparameters@latest/dist/hyperparameters.min.js\" /\u003e`\n\n* create search space\n```\n  const space = {\n    optimizer: hpjs.choice(['sgd', 'adam', 'adagrad', 'rmsprop']),\n    epochs: hpjs.quniform(50, 250, 50),\n  };\n\n```\n* create tensorflow.js train function. Parameters are optimizer and epochs. input and output data passed as second argument\n```\nconst trainModel = async ({ optimizer, epochs }, { xs, ys }) =\u003e {\n  // Create a simple model.\n  const model = tf.sequential();\n  model.add(tf.layers.dense({ units: 1, inputShape: [1] }));\n  // Prepare the model for training: Specify the loss and the optimizer.\n  model.compile({\n    loss: 'meanSquaredError',\n    optimizer\n  });\n  // Train the model using the data.\n  const h = await model.fit(xs, ys, { epochs });\n  return { model, loss: h.history.loss[h.history.loss.length - 1] };\n};\n```\n* create optimization function\n```\nconst modelOpt = async ({ optimizer, epochs }, { xs, ys }) =\u003e {\n  const { loss } = await trainModel({ optimizer, epochs }, { xs, ys });\n  return { loss, status: hpjs.STATUS_OK };\n};\n```\n\n* find optimal hyperparameters\n```\nconst trials = await hpjs.fmin(\n    modelOpt, space, hpjs.search.randomSearch, 10,\n    { rng: new hpjs.RandomState(654321), xs, ys }\n  );\n  const opt = trials.argmin;\n  console.log('best optimizer',opt.optimizer);\n  console.log('best no of epochs', opt.epochs);\n```\n\n### 2. [install with npm](https://github.com/atanasster/hyperparameters/tree/master/examples/react-sample)\n* install hyperparameters in your package.json\n```\n$ npm install hyperparameters \n```\n\n* import hyperparameters\n```\nimport * as tf from '@tensorflow/tfjs';\nimport * as hpjs from 'hyperparameters';\n```\n\n* create search space\n```\n  const space = {\n    optimizer: hpjs.choice(['sgd', 'adam', 'adagrad', 'rmsprop']),\n    epochs: hpjs.quniform(50, 250, 50),\n  };\n\n```\n* create tensorflow.js train function. Parameters are optimizer and epochs. input and output data passed as second argument\n```\nconst trainModel = async ({ optimizer, epochs }, { xs, ys }) =\u003e {\n  // Create a simple model.\n  const model = tf.sequential();\n  model.add(tf.layers.dense({ units: 1, inputShape: [1] }));\n  // Prepare the model for training: Specify the loss and the optimizer.\n  model.compile({\n    loss: 'meanSquaredError',\n    optimizer\n  });\n  // Train the model using the data.\n  const h = await model.fit(xs, ys, { epochs });\n  return { model, loss: h.history.loss[h.history.loss.length - 1] };\n};\n```\n* create optimization function\n```\nconst modelOpt = async ({ optimizer, epochs }, { xs, ys }) =\u003e {\n  const { loss } = await trainModel({ optimizer, epochs }, { xs, ys });\n  return { loss, status: hpjs.STATUS_OK };\n};\n```\n\n* find optimal hyperparameters\n```\nconst trials = await hpjs.fmin(\n  modelOpt, space, hpjs.search.randomSearch, 10,\n  { rng: new hpjs.RandomState(654321), xs, ys }\n);\nconst opt = trials.argmin;\nconsole.log('best optimizer',opt.optimizer);\nconsole.log('best no of epochs', opt.epochs);\n```\n\n\n## License\n\nMIT © Atanas Stoyanov \u0026 Martin Stoyanov\n","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatanasster%2Fhyperparameters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatanasster%2Fhyperparameters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatanasster%2Fhyperparameters/lists"}