Created
May 18, 2020 15:49
-
-
Save nzw0301/f9eed6b38f6932b70ec9d7a3a5eee0dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Comparison between ConfigSpace's integer sampling in `log` space and new Optuna's `suggest_int(log=True)`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import ConfigSpace\n", | |
| "import ConfigSpace as CS\n", | |
| "import ConfigSpace.hyperparameters as CSH\n", | |
| "\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "%matplotlib inline\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "low = 2\n", | |
| "high = 64\n", | |
| "step = 2\n", | |
| "num_samples = 10_000" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "cs = CS.ConfigurationSpace(seed=1)\n", | |
| "uniform_integer_hp = CSH.UniformIntegerHyperparameter(name='x', lower=low, upper=high, log=True, q=step)\n", | |
| "cs.add_hyperparameter(uniform_integer_hp)\n", | |
| "\n", | |
| "\n", | |
| "samples = [cs.sample_configuration().get('x') for _ in range(num_samples)]\n", | |
| "samples = np.array(samples)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.hist(samples, bins=8);" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "assert np.sum(samples % 2) == 0 # no odd numebrs." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0, 0, 1826, 0, 1428, 0, 830, 0, 645, 0, 557,\n", | |
| " 0, 493, 0, 388, 0, 318, 0, 295, 0, 285, 0,\n", | |
| " 235, 0, 225, 0, 212, 0, 181, 0, 174, 0, 172,\n", | |
| " 0, 137, 0, 153, 0, 138, 0, 144, 0, 139, 0,\n", | |
| " 101, 0, 114, 0, 113, 0, 107, 0, 90, 0, 95,\n", | |
| " 0, 75, 0, 90, 0, 99, 0, 87, 0, 54])" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# 2, 4, 6, ..., 64 generated\n", | |
| "np.bincount(samples)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Optuna" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import optuna\n", | |
| "from optuna import samplers\n", | |
| "from optuna.study import create_study\n", | |
| "from optuna.trial import Trial\n", | |
| "from optuna.distributions import IntLogUniformDistribution" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "sampler = samplers.RandomSampler(seed=1)\n", | |
| "study = create_study(sampler=sampler)\n", | |
| "distribuion = IntLogUniformDistribution(low=low, high=high, step=step)\n", | |
| "\n", | |
| "samples = []\n", | |
| "for i in range(num_samples):\n", | |
| " trial = Trial(study, study._storage.create_new_trial(study._study_id)) \n", | |
| " \n", | |
| " samples.append(trial._suggest(\"x\", distribuion))\n", | |
| "\n", | |
| "samples = np.array(samples)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.hist(samples, bins=8);" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "assert np.sum(samples % 2) == 0 # no odd numebrs." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0, 0, 1826, 0, 1428, 0, 830, 0, 645, 0, 557,\n", | |
| " 0, 493, 0, 388, 0, 318, 0, 295, 0, 285, 0,\n", | |
| " 235, 0, 225, 0, 212, 0, 181, 0, 174, 0, 172,\n", | |
| " 0, 137, 0, 153, 0, 138, 0, 144, 0, 139, 0,\n", | |
| " 101, 0, 114, 0, 113, 0, 107, 0, 90, 0, 95,\n", | |
| " 0, 75, 0, 90, 0, 99, 0, 87, 0, 54])" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# 2, 4, 6, ..., 64 generated\n", | |
| "np.bincount(samples)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "@webio": { | |
| "lastCommId": null, | |
| "lastKernelId": null | |
| }, | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.8.2" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment